From f8d711818d020f727cdf6ca7192d43dad40604c8 Mon Sep 17 00:00:00 2001 From: Jerry Jacobs Date: Fri, 20 May 2016 20:36:41 +0200 Subject: [PATCH] cmake: Search for static libusb-1.0 library on OSX and link with ObjC,CoreFoundation and IOKit frameworks --- CMakeLists.txt | 9 ++++- cmake/modules/FindLibUSB.cmake | 60 +++++++++++++++++++--------------- 2 files changed, 41 insertions(+), 28 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index dab4829..efadb5c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -73,7 +73,14 @@ include_directories(src/mingw) add_library(${PROJECT_NAME} STATIC ${STLINK_HEADERS} # header files for ide projects generated by cmake ${STLINK_SOURCE}) -target_link_libraries(${PROJECT_NAME} ${LIBUSB_LIBRARIES}) +target_link_libraries(${PROJECT_NAME} ${LIBUSB_LIBRARY}) + +if (APPLE) + find_library(ObjC objc) + find_library(CoreFoundation CoreFoundation) + find_library(IOKit IOKit) + target_link_libraries(${PROJECT_NAME} ${CoreFoundation} ${IOKit} ${ObjC}) +endif() add_executable(st-flash src/tools/flash.c) target_link_libraries(st-flash ${PROJECT_NAME}) diff --git a/cmake/modules/FindLibUSB.cmake b/cmake/modules/FindLibUSB.cmake index 2e518a7..7f14ca1 100644 --- a/cmake/modules/FindLibUSB.cmake +++ b/cmake/modules/FindLibUSB.cmake @@ -1,27 +1,33 @@ -# FindLibUSB.cmake - Try to find the Hiredis library -# Once done this will define -# -# LIBUSB_FOUND - System has libusb -# LIBUSB_INCLUDE_DIR - The libusb include directory -# LIBUSB_LIBRARIES - The libraries needed to use libusb -# LIBUSB_DEFINITIONS - Compiler switches required for using libusb - -FIND_PATH(LIBUSB_INCLUDE_DIR NAMES libusb.h - HINTS - /usr - /usr/local - /opt - PATH_SUFFIXES libusb-1.0 - ) - -FIND_LIBRARY(LIBUSB_LIBRARIES NAMES usb-1.0 - HINTS - /usr - /usr/local - /opt - ) - -INCLUDE(FindPackageHandleStandardArgs) -FIND_PACKAGE_HANDLE_STANDARD_ARGS(Libusb DEFAULT_MSG LIBUSB_LIBRARIES LIBUSB_INCLUDE_DIR) - -MARK_AS_ADVANCED(LIBUSB_INCLUDE_DIR LIBUSB_LIBRARIES) +# FindLibUSB.cmake - Try to find the Hiredis library +# Once done this will define +# +# LIBUSB_FOUND - System has libusb +# LIBUSB_INCLUDE_DIR - The libusb include directory +# LIBUSB_LIBRARY - The libraries needed to use libusb +# LIBUSB_DEFINITIONS - Compiler switches required for using libusb + +FIND_PATH(LIBUSB_INCLUDE_DIR NAMES libusb.h + HINTS + /usr + /usr/local + /opt + PATH_SUFFIXES libusb-1.0 + ) + +if (APPLE) + set(LIBUSB_NAME libusb-1.0.a) +else() + set(LIBUSB_NAME usb-1.0) +endif() + +FIND_LIBRARY(LIBUSB_LIBRARY NAMES ${LIBUSB_NAME} + HINTS + /usr + /usr/local + /opt +) + +INCLUDE(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(Libusb DEFAULT_MSG LIBUSB_LIBRARY LIBUSB_INCLUDE_DIR) + +MARK_AS_ADVANCED(LIBUSB_INCLUDE_DIR LIBUSB_LIBRARY)