From 2b6ecffc7fb32ca6316289f83fcad739ef69c659 Mon Sep 17 00:00:00 2001
From: Matthias Ringwald <matthias@ringwald.ch>
Date: Thu, 21 Jan 2021 18:57:04 +0100
Subject: [PATCH] cmake: use pkg config for libusb compile/link flags

---
 port/libusb/CMakeLists.txt   | 15 ++++++++-------
 port/qt-h4/CMakeLists.txt    |  8 --------
 port/qt-usb/CMakeLists.txt   | 15 ++++++++-------
 test/auto-pts/CMakeLists.txt | 15 ++++++++-------
 test/avdtp/CMakeLists.txt    | 12 +++++-------
 test/hfp/CMakeLists.txt      | 16 +++++++++-------
 test/mesh/CMakeLists.txt     | 15 ++++++++-------
 test/pts/CMakeLists.txt      | 15 ++++++++-------
 8 files changed, 54 insertions(+), 57 deletions(-)

diff --git a/port/libusb/CMakeLists.txt b/port/libusb/CMakeLists.txt
index 748a1bb54..ced07e39b 100644
--- a/port/libusb/CMakeLists.txt
+++ b/port/libusb/CMakeLists.txt
@@ -1,13 +1,14 @@
 cmake_minimum_required (VERSION 3.5)
 project(BTstack)
 
-# add libusb
-find_path(LIBUSB_INCLUDE_DIR NAMES libusb.h PATH_SUFFIXES "include" "libusb" "libusb-1.0")
-find_library(LIBUSB_LIBRARY NAMES usb-1.0 PATH_SUFFIXES "lib" "lib32" "lib64" "dylib")
-get_filename_component(LIBUSB_LIBRARY_PATH ${LIBUSB_LIBRARY} DIRECTORY)
-include_directories( ${LIBUSB_INCLUDE_DIR} )
-link_directories( ${LIBUSB_LIBRARY_PATH} )
-link_libraries( usb-1.0 )
+# fink pkgconfig
+find_package(PkgConfig REQUIRED)
+
+# libusb
+pkg_check_modules(LIBUSB REQUIRED libusb-1.0)
+include_directories(${LIBUSB_INCLUDE_DIRS})
+link_directories(${LIBUSB_LIBRARY_DIRS})
+link_libraries(${LIBUSB_LIBRARIES})
 
 # extra compiler warnings
 if ("${CMAKE_C_COMPILER_ID}" MATCHES ".*Clang.*")
diff --git a/port/qt-h4/CMakeLists.txt b/port/qt-h4/CMakeLists.txt
index 8dc64bbb3..fdc340125 100644
--- a/port/qt-h4/CMakeLists.txt
+++ b/port/qt-h4/CMakeLists.txt
@@ -124,14 +124,6 @@ IF (WIN32)
 ELSE()
     message("Building for POSIX using libusb")
 
-    # add libusb
-    find_path(LIBUSB_INCLUDE_DIR NAMES libusb.h PATH_SUFFIXES "include" "libusb" "libusb-1.0")
-    find_library(LIBUSB_LIBRARY NAMES usb-1.0 PATH_SUFFIXES "lib" "lib32" "lib64" "dylib")
-    get_filename_component(LIBUSB_LIBRARY_PATH ${LIBUSB_LIBRARY} DIRECTORY)
-    include_directories( ${LIBUSB_INCLUDE_DIR} )
-    link_directories( ${LIBUSB_LIBRARY_PATH} )
-    link_libraries( usb-1.0 )
-
     set(SOURCES_HCI_USB ${BTSTACK_ROOT}/platform/libusb/hci_transport_h2_libusb.c)
     set(SOURCES_STDIN   ${BTSTACK_ROOT}/platform/posix/btstack_stdin_posix.c)
 
diff --git a/port/qt-usb/CMakeLists.txt b/port/qt-usb/CMakeLists.txt
index 0918517ff..23b3d9c9f 100644
--- a/port/qt-usb/CMakeLists.txt
+++ b/port/qt-usb/CMakeLists.txt
@@ -115,13 +115,14 @@ IF (WIN32)
 ELSE()
     message("Building for POSIX using libusb")
 
-    # add libusb
-    find_path(LIBUSB_INCLUDE_DIR NAMES libusb.h PATH_SUFFIXES "include" "libusb" "libusb-1.0")
-    find_library(LIBUSB_LIBRARY NAMES usb-1.0 PATH_SUFFIXES "lib" "lib32" "lib64" "dylib")
-    get_filename_component(LIBUSB_LIBRARY_PATH ${LIBUSB_LIBRARY} DIRECTORY)
-    include_directories( ${LIBUSB_INCLUDE_DIR} )
-    link_directories( ${LIBUSB_LIBRARY_PATH} )
-    link_libraries( usb-1.0 )
+    # fink pkgconfig
+    find_package(PkgConfig REQUIRED)
+
+    # libusb
+    pkg_check_modules(LIBUSB REQUIRED libusb-1.0)
+    include_directories(${LIBUSB_INCLUDE_DIRS})
+    link_directories(${LIBUSB_LIBRARY_DIRS})
+    link_libraries(${LIBUSB_LIBRARIES})
 
     set(SOURCES_HCI_USB ${BTSTACK_ROOT}/platform/libusb/hci_transport_h2_libusb.c)
     set(SOURCES_STDIN   ${BTSTACK_ROOT}/platform/posix/btstack_stdin_posix.c)
diff --git a/test/auto-pts/CMakeLists.txt b/test/auto-pts/CMakeLists.txt
index 8ff53e05f..706ef9cb7 100644
--- a/test/auto-pts/CMakeLists.txt
+++ b/test/auto-pts/CMakeLists.txt
@@ -1,13 +1,14 @@
 cmake_minimum_required (VERSION 3.5)
 project(BTstack)
 
-# add libusb
-find_path(LIBUSB_INCLUDE_DIR NAMES libusb.h PATH_SUFFIXES "include" "libusb" "libusb-1.0")
-find_library(LIBUSB_LIBRARY NAMES usb-1.0 PATH_SUFFIXES "lib" "lib32" "lib64" "dylib")
-get_filename_component(LIBUSB_LIBRARY_PATH ${LIBUSB_LIBRARY} DIRECTORY)
-include_directories( ${LIBUSB_INCLUDE_DIR} )
-link_directories( ${LIBUSB_LIBRARY_PATH} )
-link_libraries( usb-1.0 )
+# fink pkgconfig
+find_package(PkgConfig REQUIRED)
+
+# libusb
+pkg_check_modules(LIBUSB REQUIRED libusb-1.0)
+include_directories(${LIBUSB_INCLUDE_DIRS})
+link_directories(${LIBUSB_LIBRARY_DIRS})
+link_libraries(${LIBUSB_LIBRARIES})
 
 # add all directories
 include_directories(../../3rd-party/micro-ecc)
diff --git a/test/avdtp/CMakeLists.txt b/test/avdtp/CMakeLists.txt
index c56eda319..a5747d94e 100644
--- a/test/avdtp/CMakeLists.txt
+++ b/test/avdtp/CMakeLists.txt
@@ -1,13 +1,11 @@
 cmake_minimum_required (VERSION 3.5)
 project(test-hfp)
 
-# add libusb
-find_path(LIBUSB_INCLUDE_DIR NAMES libusb.h PATH_SUFFIXES "include" "libusb" "libusb-1.0")
-find_library(LIBUSB_LIBRARY NAMES usb-1.0 PATH_SUFFIXES "lib" "lib32" "lib64" "dylib")
-get_filename_component(LIBUSB_LIBRARY_PATH ${LIBUSB_LIBRARY} DIRECTORY)
-include_directories( ${LIBUSB_INCLUDE_DIR} )
-link_directories( ${LIBUSB_LIBRARY_PATH} )
-link_libraries( usb-1.0 )
+# libusb
+pkg_check_modules(LIBUSB REQUIRED libusb-1.0)
+include_directories(${LIBUSB_INCLUDE_DIRS})
+link_directories(${LIBUSB_LIBRARY_DIRS})
+link_libraries(${LIBUSB_LIBRARIES})
 
 # add CppUTest
 include_directories("/usr/local/include")
diff --git a/test/hfp/CMakeLists.txt b/test/hfp/CMakeLists.txt
index 87f96108d..7e968bbc0 100644
--- a/test/hfp/CMakeLists.txt
+++ b/test/hfp/CMakeLists.txt
@@ -1,13 +1,14 @@
 cmake_minimum_required (VERSION 3.5)
 project(test-hfp)
 
-# add libusb
-find_path(LIBUSB_INCLUDE_DIR NAMES libusb.h PATH_SUFFIXES "include" "libusb" "libusb-1.0")
-find_library(LIBUSB_LIBRARY NAMES usb-1.0 PATH_SUFFIXES "lib" "lib32" "lib64" "dylib")
-get_filename_component(LIBUSB_LIBRARY_PATH ${LIBUSB_LIBRARY} DIRECTORY)
-include_directories( ${LIBUSB_INCLUDE_DIR} )
-link_directories( ${LIBUSB_LIBRARY_PATH} )
-link_libraries( usb-1.0 )
+# fink pkgconfig
+find_package(PkgConfig REQUIRED)
+
+# libusb
+pkg_check_modules(LIBUSB REQUIRED libusb-1.0)
+include_directories(${LIBUSB_INCLUDE_DIRS})
+link_directories(${LIBUSB_LIBRARY_DIRS})
+link_libraries(${LIBUSB_LIBRARIES})
 
 # add CppUTest
 include_directories("/usr/local/include")
@@ -44,6 +45,7 @@ file(GLOB SOURCES_HXCMOD    "../../3rd-party/hxcmod-player/*.c"  "../../3rd-part
 file(GLOB SOURCES_RIJNDAEL  "../../3rd-party/rijndael/rijndael.c")
 file(GLOB SOURCES_POSIX     "../../platform/posix/*.c")
 file(GLOB SOURCES_LIBUSB    "../../port/libusb/*.c" "../../platform/libusb/*.c")
+file(GLOB SOURCES_ZEPHYR    "../../chipset/zephyr/*.c")
 
 file(GLOB SOURCES_BLE_OFF "../../src/ble/le_device_db_memory.c")
 list(REMOVE_ITEM SOURCES_BLE   ${SOURCES_BLE_OFF})
diff --git a/test/mesh/CMakeLists.txt b/test/mesh/CMakeLists.txt
index 0532ba2fa..3746af29c 100644
--- a/test/mesh/CMakeLists.txt
+++ b/test/mesh/CMakeLists.txt
@@ -11,13 +11,14 @@ set(CMAKE_XCODE_GENERATE_SCHEME ON)
 set(CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER ON)
 set(CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN ON)
 
-# add libusb
-find_path(LIBUSB_INCLUDE_DIR NAMES libusb.h PATH_SUFFIXES "include" "libusb" "libusb-1.0")
-find_library(LIBUSB_LIBRARY NAMES usb-1.0 PATH_SUFFIXES "lib" "lib32" "lib64" "dylib")
-get_filename_component(LIBUSB_LIBRARY_PATH ${LIBUSB_LIBRARY} DIRECTORY)
-include_directories( ${LIBUSB_INCLUDE_DIR} )
-link_directories( ${LIBUSB_LIBRARY_PATH} )
-link_libraries( usb-1.0 )
+# fink pkgconfig
+find_package(PkgConfig REQUIRED)
+
+# libusb
+pkg_check_modules(LIBUSB REQUIRED libusb-1.0)
+include_directories(${LIBUSB_INCLUDE_DIRS})
+link_directories(${LIBUSB_LIBRARY_DIRS})
+link_libraries(${LIBUSB_LIBRARIES})
 
 include_directories(../../3rd-party/micro-ecc)
 include_directories(../../3rd-party/tinydir)
diff --git a/test/pts/CMakeLists.txt b/test/pts/CMakeLists.txt
index 70d3e233b..7da03194c 100644
--- a/test/pts/CMakeLists.txt
+++ b/test/pts/CMakeLists.txt
@@ -1,13 +1,14 @@
 cmake_minimum_required (VERSION 3.5)
 project(PTS)
 
-# add libusb
-find_path(LIBUSB_INCLUDE_DIR NAMES libusb.h PATH_SUFFIXES "include" "libusb" "libusb-1.0")
-find_library(LIBUSB_LIBRARY NAMES usb-1.0 PATH_SUFFIXES "lib" "lib32" "lib64" "dylib")
-get_filename_component(LIBUSB_LIBRARY_PATH ${LIBUSB_LIBRARY} DIRECTORY)
-include_directories( ${LIBUSB_INCLUDE_DIR} )
-link_directories( ${LIBUSB_LIBRARY_PATH} )
-link_libraries( usb-1.0 )
+# fink pkgconfig
+find_package(PkgConfig REQUIRED)
+
+# libusb
+pkg_check_modules(LIBUSB REQUIRED libusb-1.0)
+include_directories(${LIBUSB_INCLUDE_DIRS})
+link_directories(${LIBUSB_LIBRARY_DIRS})
+link_libraries(${LIBUSB_LIBRARIES})
 
 include_directories(../../3rd-party/micro-ecc)
 include_directories(../../3rd-party/bluedroid/decoder/include)