From 5a079a2d114f96d4847d1ee305d5b7c16eeec50e Mon Sep 17 00:00:00 2001 From: 3gg <3gg@shellblade.net> Date: Sat, 27 Dec 2025 12:03:39 -0800 Subject: Initial commit --- contrib/SDL-3.2.8/src/hidapi/libusb/CMakeLists.txt | 107 +++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 contrib/SDL-3.2.8/src/hidapi/libusb/CMakeLists.txt (limited to 'contrib/SDL-3.2.8/src/hidapi/libusb/CMakeLists.txt') diff --git a/contrib/SDL-3.2.8/src/hidapi/libusb/CMakeLists.txt b/contrib/SDL-3.2.8/src/hidapi/libusb/CMakeLists.txt new file mode 100644 index 0000000..4c458c5 --- /dev/null +++ b/contrib/SDL-3.2.8/src/hidapi/libusb/CMakeLists.txt @@ -0,0 +1,107 @@ +cmake_minimum_required(VERSION 3.6.3...3.25 FATAL_ERROR) + +list(APPEND HIDAPI_PUBLIC_HEADERS "hidapi_libusb.h") + +add_library(hidapi_libusb + ${HIDAPI_PUBLIC_HEADERS} + hid.c +) +target_link_libraries(hidapi_libusb PUBLIC hidapi_include) + +if(TARGET usb-1.0) + target_link_libraries(hidapi_libusb PRIVATE usb-1.0) +else() + include(FindPkgConfig) + pkg_check_modules(libusb REQUIRED IMPORTED_TARGET libusb-1.0>=1.0.9) + target_link_libraries(hidapi_libusb PRIVATE PkgConfig::libusb) +endif() + +find_package(Threads REQUIRED) +target_link_libraries(hidapi_libusb PRIVATE Threads::Threads) + +if(HIDAPI_NO_ICONV) + target_compile_definitions(hidapi_libusb PRIVATE NO_ICONV) +else() + if(NOT ANDROID) + include(CheckCSourceCompiles) + + if(NOT CMAKE_VERSION VERSION_LESS 3.11) + message(STATUS "Check for Iconv") + find_package(Iconv) + if(Iconv_FOUND) + if(NOT Iconv_IS_BUILT_IN) + target_link_libraries(hidapi_libusb PRIVATE Iconv::Iconv) + set(CMAKE_REQUIRED_LIBRARIES "Iconv::Iconv") + if(NOT BUILD_SHARED_LIBS) + set(HIDAPI_NEED_EXPORT_ICONV TRUE PARENT_SCOPE) + endif() + endif() + else() + message(STATUS "Iconv Explicitly check '-liconv'") + # Sometime the build environment is not setup + # in a way CMake can find Iconv on its own by default. + # But if we simply link against iconv (-liconv), the build may succeed + # due to other compiler/link flags. + set(CMAKE_REQUIRED_LIBRARIES "iconv") + check_c_source_compiles(" + #include + #include + int main() { + char *a, *b; + size_t i, j; + iconv_t ic; + ic = iconv_open(\"to\", \"from\"); + iconv(ic, &a, &i, &b, &j); + iconv_close(ic); + } + " + Iconv_EXPLICITLY_AT_ENV) + if(Iconv_EXPLICITLY_AT_ENV) + message(STATUS "Iconv Explicitly check '-liconv' - Available") + target_link_libraries(hidapi_libusb PRIVATE iconv) + else() + message(FATAL_ERROR "Iconv is not found, make sure to provide it in the build environment") + endif() + endif() + else() + # otherwise there is 2 options: + # 1) iconv is provided by Standard C library and the build will be just fine + # 2) The _user_ has to provide additional compilation options for this project/target + endif() + + # check for error: "conflicting types for 'iconv'" + check_c_source_compiles("#include + extern size_t iconv (iconv_t cd, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft); + int main() {}" + HIDAPI_ICONV_CONST) + if(HIDAPI_ICONV_CONST) + target_compile_definitions(hidapi_libusb PRIVATE "ICONV_CONST=const") + endif() + else() + # On Android Iconv is disabled on the code level anyway, so no issue; + endif() +endif() + +set_target_properties(hidapi_libusb + PROPERTIES + EXPORT_NAME "libusb" + OUTPUT_NAME "hidapi-libusb" + VERSION ${PROJECT_VERSION} + SOVERSION ${PROJECT_VERSION_MAJOR} + PUBLIC_HEADER "${HIDAPI_PUBLIC_HEADERS}" +) + +# compatibility with find_package() +add_library(hidapi::libusb ALIAS hidapi_libusb) +# compatibility with raw library link +add_library(hidapi-libusb ALIAS hidapi_libusb) + +if(HIDAPI_INSTALL_TARGETS) + install(TARGETS hidapi_libusb EXPORT hidapi + LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" + ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" + PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/hidapi" + ) +endif() + +hidapi_configure_pc("${PROJECT_ROOT}/pc/hidapi-libusb.pc.in") -- cgit v1.2.3