summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Maltese <michaeljosephmaltese@gmail.com>2017-04-24 20:06:39 -0700
committerMichael Maltese <michaeljosephmaltese@gmail.com>2017-04-27 02:41:00 -0700
commit655ab9b4e2af61bbc7010e5c97ad8da09fa7b232 (patch)
tree327ae6cc9f7055a06a1dd5cc5560097164261707
parentdd31a403dbcc68388568fece827c3f0887bb4b25 (diff)
CMake: clean up HIDAPI build
-rw-r--r--CMake/FindHIDAPI.cmake8
-rw-r--r--CMakeLists.txt36
-rw-r--r--Externals/hidapi/CMakeLists.txt20
-rw-r--r--Externals/hidapi/libusb/CMakeLists.txt1
-rw-r--r--Externals/hidapi/linux/CMakeLists.txt1
-rw-r--r--Externals/hidapi/mac/CMakeLists.txt1
-rw-r--r--Externals/hidapi/windows/CMakeLists.txt1
-rw-r--r--Source/Core/Core/CMakeLists.txt4
8 files changed, 34 insertions, 38 deletions
diff --git a/CMake/FindHIDAPI.cmake b/CMake/FindHIDAPI.cmake
index b75110ab12..81b9990212 100644
--- a/CMake/FindHIDAPI.cmake
+++ b/CMake/FindHIDAPI.cmake
@@ -6,4 +6,12 @@ set(HIDAPI_INCLUDE_DIRS ${HIDAPI_INCLUDE_DIR})
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(HIDAPI DEFAULT_MSG HIDAPI_LIBRARY HIDAPI_INCLUDE_DIR)
+if(HIDAPI_FOUND AND NOT TARGET Hidapi::Hidapi)
+ add_library(Hidapi::Hidapi UNKNOWN IMPORTED)
+ set_target_properties(Hidapi::Hidapi PROPERTIES
+ IMPORTED_LOCATION ${HIDAPI_LIBRARIES}
+ INTERFACE_INCLUDE_DIRECTORIES ${HIDAPI_INCLUDE_DIRS}
+ )
+endif()
+
mark_as_advanced(HIDAPI_INCLUDE_DIR HIDAPI_LIBRARY)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 342119b24b..abfa668738 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -752,39 +752,9 @@ list(APPEND LIBS ${ICONV_LIBRARIES})
if(NOT ANDROID)
find_package(HIDAPI)
- if(HIDAPI_FOUND)
- message(STATUS "Using shared ${HIDAPI_LIBRARIES} ${HIDAPI_VERSION}")
- include_directories(${HIDAPI_INCLUDE_DIRS})
- list(APPEND LIBS ${HIDAPI_LIBRARIES})
- else()
- set(HIDAPI_FOUND 1)
- include_directories(Externals/hidapi/hidapi)
- if(APPLE)
- message(STATUS "Using static hidapi from Externals")
- add_subdirectory(Externals/hidapi/mac)
- list(APPEND LIBS hidapi)
- elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
- find_package(Libudev)
- if(LIBUDEV_FOUND)
- message(STATUS "Using static hidapi-hidraw from Externals")
- add_subdirectory(Externals/hidapi/linux)
- list(APPEND LIBS hidapi-hidraw udev)
- else()
- message(STATUS "Could not find udev, disabling hidapi")
- set(HIDAPI_FOUND 0)
- endif()
- elseif(MSVC)
- message(STATUS "Using static hidapi-hid from Externals")
- add_subdirectory(Externals/hidapi/windows)
- list(APPEND LIBS hidapi-hid)
- else()
- message(STATUS "Using static hidapi-libusb from Externals")
- add_subdirectory(Externals/hidapi/libusb)
- list(APPEND LIBS hidapi-libusb)
- endif()
- endif()
- if(HIDAPI_FOUND)
- add_definitions(-DHAVE_HIDAPI=1)
+ if(NOT HIDAPI_FOUND)
+ message(STATUS "Using static HIDAPI from Externals")
+ add_subdirectory(Externals/hidapi EXCLUDE_FROM_ALL)
endif()
endif()
diff --git a/Externals/hidapi/CMakeLists.txt b/Externals/hidapi/CMakeLists.txt
new file mode 100644
index 0000000000..4b33a46fd5
--- /dev/null
+++ b/Externals/hidapi/CMakeLists.txt
@@ -0,0 +1,20 @@
+project(hidapi)
+
+add_library(hidapi STATIC hidapi/hidapi.h)
+target_include_directories(hidapi PUBLIC hidapi)
+
+if(APPLE)
+ target_sources(hidapi PRIVATE mac/hid.c)
+elseif(MSVC)
+ target_sources(hidapi PRIVATE windows/hid.c)
+else()
+ find_package(Libudev)
+ if(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND LIBUDEV_FOUND)
+ target_sources(hidapi PRIVATE linux/hid.c)
+ target_link_libraries(hidapi PRIVATE udev)
+ else()
+ target_sources(hidapi PRIVATE libusb/hid.c)
+ endif()
+endif()
+
+add_library(Hidapi::Hidapi ALIAS hidapi)
diff --git a/Externals/hidapi/libusb/CMakeLists.txt b/Externals/hidapi/libusb/CMakeLists.txt
deleted file mode 100644
index 5bb2c08688..0000000000
--- a/Externals/hidapi/libusb/CMakeLists.txt
+++ /dev/null
@@ -1 +0,0 @@
-add_library(hidapi-libusb hid.c)
diff --git a/Externals/hidapi/linux/CMakeLists.txt b/Externals/hidapi/linux/CMakeLists.txt
deleted file mode 100644
index f7984bd755..0000000000
--- a/Externals/hidapi/linux/CMakeLists.txt
+++ /dev/null
@@ -1 +0,0 @@
-add_library(hidapi-hidraw hid.c)
diff --git a/Externals/hidapi/mac/CMakeLists.txt b/Externals/hidapi/mac/CMakeLists.txt
deleted file mode 100644
index ccd2898ed4..0000000000
--- a/Externals/hidapi/mac/CMakeLists.txt
+++ /dev/null
@@ -1 +0,0 @@
-add_library(hidapi hid.c)
diff --git a/Externals/hidapi/windows/CMakeLists.txt b/Externals/hidapi/windows/CMakeLists.txt
deleted file mode 100644
index 3b0b4ce5fa..0000000000
--- a/Externals/hidapi/windows/CMakeLists.txt
+++ /dev/null
@@ -1 +0,0 @@
-add_library(hidapi-hid hid.c)
diff --git a/Source/Core/Core/CMakeLists.txt b/Source/Core/Core/CMakeLists.txt
index 82ab438e87..a96165ee98 100644
--- a/Source/Core/Core/CMakeLists.txt
+++ b/Source/Core/Core/CMakeLists.txt
@@ -339,8 +339,10 @@ else()
message(STATUS "BlueZ explicitly disabled, disabling bluetooth support")
endif()
-if(HIDAPI_FOUND)
+if(TARGET Hidapi::Hidapi)
set(SRCS ${SRCS} HW/WiimoteReal/IOhidapi.cpp)
+ list(APPEND LIBS Hidapi::Hidapi)
+ add_definitions(-DHAVE_HIDAPI=1)
endif()
if(PORTAUDIO_FOUND)