mirror of
https://github.com/RPCS3/hidapi.git
synced 2026-07-19 13:34:37 -04:00
add CMake build system
- general build infrastructure, build options; - libusb/hidraw backends; - (optionally) hidtest;
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
cmake_minimum_required(VERSION 3.1.3 FATAL_ERROR)
|
||||
project(hidapi LANGUAGES C)
|
||||
|
||||
if(NOT DEFINED CMAKE_BUILD_TYPE OR CMAKE_BUILD_TYPE STREQUAL "")
|
||||
set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Debug;Release;MinSizeRel;RelWithDebInfo" FORCE)
|
||||
endif()
|
||||
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo")
|
||||
|
||||
if(NOT WIN32 AND NOT APPLE)
|
||||
if(CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
option(HIDAPI_WITH_HIDRAW "Build HIDRAW-based implementation of HIDAPI" ON)
|
||||
endif()
|
||||
option(HIDAPI_WITH_LIBUSB "Build LIBUSB-based implementation of HIDAPI" ON)
|
||||
endif()
|
||||
|
||||
option(BUILD_SHARED_LIBS "When set: build shared version of the libraries, otherwise - static" ON)
|
||||
|
||||
set(HIDAPI_INSTALL_TARGETS ON)
|
||||
|
||||
add_subdirectory(src)
|
||||
|
||||
set(BUILD_HIDTEST_DEFAULT OFF)
|
||||
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
set(BUILD_HIDTEST_DEFAULT ON)
|
||||
endif()
|
||||
option(BUILD_HIDTEST "Build small console test application hidtest" ${BUILD_HIDTEST_DEFAULT})
|
||||
if(BUILD_HIDTEST)
|
||||
add_subdirectory(hidtest)
|
||||
endif()
|
||||
+2
-9
@@ -1,13 +1,6 @@
|
||||
AC_PREREQ(2.63)
|
||||
|
||||
# Version number. This is currently the only place.
|
||||
m4_define([HIDAPI_MAJOR], 0)
|
||||
m4_define([HIDAPI_MINOR], 9)
|
||||
m4_define([HIDAPI_RELEASE], 0)
|
||||
m4_define([HIDAPI_RC], )
|
||||
m4_define([VERSION_STRING], HIDAPI_MAJOR[.]HIDAPI_MINOR[.]HIDAPI_RELEASE[]HIDAPI_RC)
|
||||
|
||||
AC_INIT([hidapi],[VERSION_STRING],[alan@signal11.us])
|
||||
AC_INIT([hidapi],[m4_normalize(m4_builtin([include], VERSION))],[https://github.com/libusb/hidapi/issues])
|
||||
|
||||
# Library soname version
|
||||
# Follow the following rules (particularly the ones in the second link):
|
||||
@@ -190,7 +183,7 @@ mkdir testgui/TestGUI.app/Contents/MacOS/
|
||||
|
||||
if test "x$testgui_enabled" != "xno"; then
|
||||
if test "x$os" = xdarwin; then
|
||||
# On Mac OS, don't use pkg-config.
|
||||
# On Mac OS, do not use pkg-config.
|
||||
AC_CHECK_PROG([foxconfig], [fox-config], [fox-config], false)
|
||||
if test "x$foxconfig" = "xfalse"; then
|
||||
hidapi_prog_error fox-config "FOX Toolkit"
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
project(hidtest C)
|
||||
|
||||
set(HIDAPI_HIDTEST_TARGETS)
|
||||
if(NOT WIN32 AND NOT APPLE AND CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
if(TARGET hidapi_hidraw)
|
||||
add_executable(hidtest_hidraw test.c)
|
||||
target_link_libraries(hidtest_hidraw hidapi_hidraw)
|
||||
list(APPEND HIDAPI_HIDTEST_TARGETS hidtest_hidraw)
|
||||
endif()
|
||||
if(TARGET hidapi_libusb)
|
||||
add_executable(hidtest_libusb test.c)
|
||||
target_link_libraries(hidtest_libusb hidapi_libusb)
|
||||
list(APPEND HIDAPI_HIDTEST_TARGETS hidtest_libusb)
|
||||
endif()
|
||||
else()
|
||||
add_executable(hidtest test.c)
|
||||
target_link_libraries(hidtest hidapi)
|
||||
list(APPEND HIDAPI_HIDTEST_TARGETS hidtest)
|
||||
endif()
|
||||
|
||||
install(TARGETS ${HIDAPI_HIDTEST_TARGETS}
|
||||
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
|
||||
)
|
||||
@@ -0,0 +1,34 @@
|
||||
cmake_minimum_required(VERSION 3.6.3 FATAL_ERROR)
|
||||
|
||||
add_library(hidapi_libusb
|
||||
hid.c
|
||||
)
|
||||
target_link_libraries(hidapi_libusb PUBLIC hidapi_include)
|
||||
|
||||
include(FindPkgConfig)
|
||||
include(FindThreads)
|
||||
|
||||
pkg_check_modules(libusb REQUIRED IMPORTED_TARGET libusb-1.0>=1.0.9)
|
||||
target_link_libraries(hidapi_libusb PRIVATE PkgConfig::libusb Threads::Threads)
|
||||
|
||||
set(HIDAPI_LIBNAME "hidapi")
|
||||
if(HIDAPI_LIBNAME_VERBOSE)
|
||||
set(HIDAPI_LIBNAME "${HIDAPI_LIBNAME}-libusb")
|
||||
endif()
|
||||
|
||||
set_target_properties(hidapi_libusb
|
||||
PROPERTIES
|
||||
EXPORT_NAME "libusb"
|
||||
OUTPUT_NAME "${HIDAPI_LIBNAME}"
|
||||
VERSION ${PROJECT_VERSION}
|
||||
SOVERSION ${PROJECT_VERSION_MAJOR}
|
||||
)
|
||||
|
||||
if(HIDAPI_INSTALL_TARGETS)
|
||||
install(TARGETS hidapi_libusb
|
||||
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
|
||||
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
|
||||
)
|
||||
endif()
|
||||
|
||||
add_library(hidapi ALIAS hidapi_libusb)
|
||||
@@ -0,0 +1,31 @@
|
||||
cmake_minimum_required(VERSION 3.6.3 FATAL_ERROR)
|
||||
|
||||
add_library(hidapi_hidraw
|
||||
hid.c
|
||||
)
|
||||
target_link_libraries(hidapi_hidraw PUBLIC hidapi_include)
|
||||
|
||||
include(FindPkgConfig)
|
||||
include(FindThreads)
|
||||
|
||||
pkg_check_modules(libudev REQUIRED IMPORTED_TARGET libudev)
|
||||
target_link_libraries(hidapi_hidraw PRIVATE PkgConfig::libudev Threads::Threads)
|
||||
|
||||
set_target_properties(hidapi_hidraw
|
||||
PROPERTIES
|
||||
EXPORT_NAME "hidraw"
|
||||
OUTPUT_NAME "hidapi-hidraw"
|
||||
VERSION ${PROJECT_VERSION}
|
||||
SOVERSION ${PROJECT_VERSION_MAJOR}
|
||||
)
|
||||
|
||||
if(HIDAPI_INSTALL_TARGETS)
|
||||
install(TARGETS hidapi_hidraw
|
||||
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
|
||||
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
|
||||
)
|
||||
endif()
|
||||
|
||||
if(NOT HIDAPI_WITH_LIBUSB)
|
||||
add_library(hidapi ALIAS hidapi_hidraw)
|
||||
endif()
|
||||
@@ -0,0 +1,56 @@
|
||||
get_filename_component(PROJECT_ROOT "${CMAKE_CURRENT_LIST_DIR}/.." ABSOLUTE)
|
||||
|
||||
# Read version from file
|
||||
file(READ "${PROJECT_ROOT}/VERSION" VERSION_STR)
|
||||
string(REGEX MATCH "^([0-9]+\\.[0-9]+\\.[0-9]+)(.*)" VERSION_STR "${VERSION_STR}")
|
||||
|
||||
set(VERSION "${CMAKE_MATCH_1}")
|
||||
set(VERSION_SUFFIX "${CMAKE_MATCH_2}")
|
||||
#
|
||||
|
||||
project(hidapi VERSION "${VERSION}" LANGUAGES C)
|
||||
|
||||
# Defaults and required options
|
||||
|
||||
if(NOT DEFINED BUILD_SHARED_LIBS)
|
||||
set(BUILD_SHARED_LIBS ON)
|
||||
endif()
|
||||
if(NOT DEFINED HIDAPI_WITH_HIDRAW)
|
||||
set(HIDAPI_WITH_HIDRAW ON)
|
||||
endif()
|
||||
if(NOT DEFINED HIDAPI_WITH_LIBUSB)
|
||||
set(HIDAPI_WITH_LIBUSB ON)
|
||||
endif()
|
||||
if(NOT DEFINED HIDAPI_INSTALL_TARGETS)
|
||||
set(HIDAPI_INSTALL_TARGETS OFF)
|
||||
endif()
|
||||
|
||||
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||
|
||||
# The library
|
||||
|
||||
add_library(hidapi_include INTERFACE)
|
||||
target_include_directories(hidapi_include INTERFACE "${PROJECT_ROOT}/hidapi")
|
||||
|
||||
if(HIDAPI_INSTALL_TARGETS)
|
||||
include(GNUInstallDirs)
|
||||
install(FILES "${PROJECT_ROOT}/hidapi/hidapi.h" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/hidapi")
|
||||
endif()
|
||||
|
||||
if(WIN32)
|
||||
add_subdirectory("${PROJECT_ROOT}/windows" windows)
|
||||
elseif(APPLE)
|
||||
add_subdirectory("${PROJECT_ROOT}/mac" mac)
|
||||
else()
|
||||
if(CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
if(HIDAPI_WITH_HIDRAW)
|
||||
add_subdirectory("${PROJECT_ROOT}/linux" linux)
|
||||
endif()
|
||||
set(HIDAPI_LIBNAME_VERBOSE ON)
|
||||
else()
|
||||
set(HIDAPI_LIBNAME_VERBOSE OFF)
|
||||
endif()
|
||||
if(HIDAPI_WITH_LIBUSB)
|
||||
add_subdirectory("${PROJECT_ROOT}/libusb" libusb)
|
||||
endif()
|
||||
endif()
|
||||
Reference in New Issue
Block a user