Atlas - CMakeLists.txt
Home / ext / SDL / src / hidapi / libusb Lines: 1 | Size: 4081 bytes [Download] [Show on GitHub] [Search similar files] [Raw] [Raw (proxy)][FILE BEGIN]1cmake_minimum_required(VERSION 3.6.3...3.25 FATAL_ERROR) 2 3list(APPEND HIDAPI_PUBLIC_HEADERS "hidapi_libusb.h") 4 5add_library(hidapi_libusb 6 ${HIDAPI_PUBLIC_HEADERS} 7 hid.c 8) 9target_link_libraries(hidapi_libusb PUBLIC hidapi_include) 10 11if(TARGET usb-1.0) 12 target_link_libraries(hidapi_libusb PRIVATE usb-1.0) 13else() 14 include(FindPkgConfig) 15 pkg_check_modules(libusb REQUIRED IMPORTED_TARGET libusb-1.0>=1.0.9) 16 target_link_libraries(hidapi_libusb PRIVATE PkgConfig::libusb) 17endif() 18 19find_package(Threads REQUIRED) 20target_link_libraries(hidapi_libusb PRIVATE Threads::Threads) 21 22if(HIDAPI_NO_ICONV) 23 target_compile_definitions(hidapi_libusb PRIVATE NO_ICONV) 24else() 25 if(NOT ANDROID) 26 include(CheckCSourceCompiles) 27 28 if(NOT CMAKE_VERSION VERSION_LESS 3.11) 29 message(STATUS "Check for Iconv") 30 find_package(Iconv) 31 if(Iconv_FOUND) 32 if(NOT Iconv_IS_BUILT_IN) 33 target_link_libraries(hidapi_libusb PRIVATE Iconv::Iconv) 34 set(CMAKE_REQUIRED_LIBRARIES "Iconv::Iconv") 35 if(NOT BUILD_SHARED_LIBS) 36 set(HIDAPI_NEED_EXPORT_ICONV TRUE PARENT_SCOPE) 37 endif() 38 endif() 39 else() 40 message(STATUS "Iconv Explicitly check '-liconv'") 41 # Sometime the build environment is not setup 42 # in a way CMake can find Iconv on its own by default. 43 # But if we simply link against iconv (-liconv), the build may succeed 44 # due to other compiler/link flags. 45 set(CMAKE_REQUIRED_LIBRARIES "iconv") 46 check_c_source_compiles(" 47 #include <stddef.h> 48 #include <iconv.h> 49 int main() { 50 char *a, *b; 51 size_t i, j; 52 iconv_t ic; 53 ic = iconv_open(\"to\", \"from\"); 54 iconv(ic, &a, &i, &b, &j); 55 iconv_close(ic); 56 } 57 " 58 Iconv_EXPLICITLY_AT_ENV) 59 if(Iconv_EXPLICITLY_AT_ENV) 60 message(STATUS "Iconv Explicitly check '-liconv' - Available") 61 target_link_libraries(hidapi_libusb PRIVATE iconv) 62 else() 63 message(FATAL_ERROR "Iconv is not found, make sure to provide it in the build environment") 64 endif() 65 endif() 66 else() 67 # otherwise there is 2 options: 68 # 1) iconv is provided by Standard C library and the build will be just fine 69 # 2) The _user_ has to provide additional compilation options for this project/target 70 endif() 71 72 # check for error: "conflicting types for 'iconv'" 73 check_c_source_compiles("#include<iconv.h> 74 extern size_t iconv (iconv_t cd, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft); 75 int main() {}" 76 HIDAPI_ICONV_CONST) 77 if(HIDAPI_ICONV_CONST) 78 target_compile_definitions(hidapi_libusb PRIVATE "ICONV_CONST=const") 79 endif() 80 else() 81 # On Android Iconv is disabled on the code level anyway, so no issue; 82 endif() 83endif() 84 85set_target_properties(hidapi_libusb 86 PROPERTIES 87 EXPORT_NAME "libusb" 88 OUTPUT_NAME "hidapi-libusb" 89 VERSION ${PROJECT_VERSION} 90 SOVERSION ${PROJECT_VERSION_MAJOR} 91 PUBLIC_HEADER "${HIDAPI_PUBLIC_HEADERS}" 92) 93 94# compatibility with find_package() 95add_library(hidapi::libusb ALIAS hidapi_libusb) 96# compatibility with raw library link 97add_library(hidapi-libusb ALIAS hidapi_libusb) 98 99if(HIDAPI_INSTALL_TARGETS) 100 install(TARGETS hidapi_libusb EXPORT hidapi 101 LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" 102 ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" 103 PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/hidapi" 104 ) 105endif() 106 107hidapi_configure_pc("${PROJECT_ROOT}/pc/hidapi-libusb.pc.in") 108[FILE END](C) 2025 0x4248 (C) 2025 4248 Media and 4248 Systems, All part of 0x4248 See LICENCE files for more information. Not all files are by 0x4248 always check Licencing.