Skip to content

Commit

Permalink
Make use of FindPackageHandleStandardArgs() to format user message
Browse files Browse the repository at this point in the history
  • Loading branch information
daschuer committed Aug 17, 2021
1 parent 826617f commit 09eb8c4
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 29 deletions.
13 changes: 3 additions & 10 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2605,18 +2605,11 @@ find_package(LibUSB)
# USB HID controller support
option(HID "USB HID controller support" ON)
if(HID)
find_package(hidapi)
find_package(hidapi 0.10.1)
# hidapi_VERSION is only available starting with 0.10.0
set(MINIMUM_hidapi_VERSION "0.10.1")
if(NOT hidapi_FOUND OR NOT hidapi_VERSION OR hidapi_VERSION VERSION_LESS MINIMUM_hidapi_VERSION)
if(hidapi_FOUND)
if(hidapi_VERSION)
message(STATUS "Found libhidapi version: ${hidapi_VERSION}")
else()
message(STATUS "Found libhidapi version < ${MINIMUM_hidapi_VERSION}")
endif()
endif()
message(STATUS "Linking internal libhidapi ${MINIMUM_hidapi_VERSION} statically")
if(NOT hidapi_FOUND)
message(STATUS "Linking internal libhidapi statically")
add_library(mixxx-hidapi STATIC EXCLUDE_FROM_ALL)
target_include_directories(mixxx-hidapi SYSTEM PUBLIC lib/hidapi/hidapi)
if(WIN32)
Expand Down
42 changes: 23 additions & 19 deletions cmake/modules/Findhidapi.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -62,32 +62,36 @@ find_library(hidapi_LIBRARY
)
mark_as_advanced(hidapi_LIBRARY)

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(
hidapi
DEFAULT_MSG
hidapi_LIBRARY
hidapi_INCLUDE_DIR
)

# Version detection
if (EXISTS "${hidapi_INCLUDE_DIR}/hidapi.h")
file(READ "${hidapi_INCLUDE_DIR}/hidapi.h" hidapi_H_CONTENTS)
string(REGEX MATCH "#define HID_API_VERSION_MAJOR ([0-9]+)" _dummy "${hidapi_H_CONTENTS}")
set(hidapi_VERSION_MAJOR "${CMAKE_MATCH_1}")
string(REGEX MATCH "#define HID_API_VERSION_MINOR ([0-9]+)" _dummy "${hidapi_H_CONTENTS}")
set(hidapi_VERSION_MINOR "${CMAKE_MATCH_1}")
string(REGEX MATCH "#define HID_API_VERSION_PATCH ([0-9]+)" _dummy "${hidapi_H_CONTENTS}")
set(hidapi_VERSION_PATCH "${CMAKE_MATCH_1}")
# hidapi_VERSION is only available starting with 0.10.0
# Simply using if(NOT) does not work because 0 is a valid value, so compare to empty string.
if(DEFINED PC_hidapi_VERSION)
set(hidapi_VERSION "${PC_hidapi_VERSION}")
else()
if (EXISTS "${hidapi_INCLUDE_DIR}/hidapi.h")
file(READ "${hidapi_INCLUDE_DIR}/hidapi.h" hidapi_H_CONTENTS)
string(REGEX MATCH "#define HID_API_VERSION_MAJOR ([0-9]+)" _dummy "${hidapi_H_CONTENTS}")
set(hidapi_VERSION_MAJOR "${CMAKE_MATCH_1}")
string(REGEX MATCH "#define HID_API_VERSION_MINOR ([0-9]+)" _dummy "${hidapi_H_CONTENTS}")
set(hidapi_VERSION_MINOR "${CMAKE_MATCH_1}")
string(REGEX MATCH "#define HID_API_VERSION_PATCH ([0-9]+)" _dummy "${hidapi_H_CONTENTS}")
set(hidapi_VERSION_PATCH "${CMAKE_MATCH_1}")
# hidapi_VERSION is only available starting with 0.10.0
# Simply using if(NOT) does not work because 0 is a valid value, so compare to empty string.
if (NOT hidapi_VERSION_MAJOR STREQUAL "" AND
NOT hidapi_VERSION_MINOR STREQUAL "" AND
NOT hidapi_VERSION_PATCH STREQUAL "")
set(hidapi_VERSION "${hidapi_VERSION_MAJOR}.${hidapi_VERSION_MINOR}.${hidapi_VERSION_PATCH}")
endif()
set(hidapi_VERSION "${hidapi_VERSION_MAJOR}.${hidapi_VERSION_MINOR}.${hidapi_VERSION_PATCH}")
endif()
endif()
endif ()

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(
hidapi
REQUIRED_VARS hidapi_LIBRARY hidapi_INCLUDE_DIR
VERSION_VAR hidapi_VERSION
)

if(hidapi_FOUND)
set(hidapi_LIBRARIES "${hidapi_LIBRARY}")
set(hidapi_INCLUDE_DIRS "${hidapi_INCLUDE_DIR}")
Expand Down

0 comments on commit 09eb8c4

Please sign in to comment.