-
Notifications
You must be signed in to change notification settings - Fork 15
/
Copy pathFindLibUSB-1.0.cmake
150 lines (133 loc) · 4.24 KB
/
FindLibUSB-1.0.cmake
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
# - try to find libusb-1 library
#
# Cache Variables: (probably not for direct use in your scripts)
# LIBUSB_LIBRARY
# LIBUSB_INCLUDE_DIR
#
# Non-cache variables you should use in your CMakeLists.txt:
# LIBUSB_LIBRARIES
# LIBUSB_INCLUDE_DIRS
# LIBUSB_FOUND - if this is not true, do not attempt to use this library
# LIBUSB_VERSION
#
# Requires these CMake modules:
# ProgramFilesGlob
# FindPackageHandleStandardArgs (known included with CMake >=2.6.2)
#
# Original Author:
# 2009-2010 Ryan Pavlik <rpavlik@iastate.edu> <abiryan@ryand.net>
# http://academic.cleardefinition.com
# Iowa State University HCI Graduate Program/VRAC
#
# Copyright Iowa State University 2009-2010.
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or copy at
# http://www.boost.org/LICENSE_1_0.txt)
set(LIBUSB_ROOT_DIR
"${LIBUSB_ROOT_DIR}"
CACHE
PATH
"Root directory to search for libusb-1")
if(WIN32)
include(ProgramFilesGlob)
# program_files_fallback_glob(_dirs "LibUSB-Win32")
program_files_fallback_glob(_dirs "libusb-1.*")
message(STATUS "Found libusb in directory: ${_dirs}" )
# program_files_fallback_glob(_dirs "libusb-win32")
# message(STATUS "Found libusb in directory: ${_dirs}" )
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
if(MSVC)
set(_lib_suffixes lib/msvc_x64 MS64/static)
else()
set(_lib_suffixes lib/mingw_x64 MinGW64/dll MinGW64/static lib64)
endif()
else()
if(MSVC)
set(_lib_suffixes lib/msvc MS32/static)
else() #(COMPILER_IS_GNUCXX)
set(_lib_suffixes lib/gcc lib/mingw MinGW32/dll MinGW32/static lib32)
endif()
endif()
else()
set(_lib_suffixes)
find_package(PkgConfig QUIET)
if(PKG_CONFIG_FOUND)
pkg_check_modules(PC_LIBUSB libusb-1.0)
endif()
endif()
find_path(LIBUSB_INCLUDE_DIR
NAMES
libusb.h
PATHS
${PC_LIBUSB_INCLUDE_DIRS}
${PC_LIBUSB_INCLUDEDIR}
${_dirs}
HINTS
"${LIBUSB_ROOT_DIR}"
PATH_SUFFIXES
include/libusb-1.0
include
libusb-1.0)
find_library(LIBUSB_LIBRARY
NAMES
libusb-1.0
usb-1.0
PATHS
${PC_LIBUSB_LIBRARY_DIRS}
${PC_LIBUSB_LIBDIR}
${_dirs}
HINTS
"${LIBUSB_ROOT_DIR}"
PATH_SUFFIXES
${_lib_suffixes})
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Libusb-1.0
DEFAULT_MSG
LIBUSB_LIBRARY
LIBUSB_INCLUDE_DIR)
if(LIBUSB_INCLUDE_DIR AND LIBUSB_LIBRARY)
set(LIBUSB_FOUND true)
endif()
if(LIBUSB_FOUND)
set(LIBUSB_LIBRARIES "${LIBUSB_LIBRARY}")
set(LIBUSB_INCLUDE_DIRS "${LIBUSB_INCLUDE_DIR}")
mark_as_advanced(LIBUSB_ROOT_DIR)
endif()
if(LIBUSB_FOUND AND NOT CMAKE_CROSSCOMPILING)
if(LIBUSB_SKIP_VERSION_CHECK)
message(STATUS "Skipping libusb version number check.")
#unset(LIBUSB_VERSION)
set(LIBUSB_VERSION "1.0.22")
else()
message(STATUS "Checking libusb version...")
if(WIN32)
string(REPLACE ".lib" ".dll" LIBUSB_DLL "${LIBUSB_LIBRARIES}")
try_run(LIBUSB_VERCHECK_RUN_RESULT
LIBUSB_VERCHECK_COMPILED
${CMAKE_HELPERS_BINARY_DIR}
${CMAKE_HELPERS_SOURCE_DIR}/libusb_version.c
CMAKE_FLAGS "-DINCLUDE_DIRECTORIES=${LIBUSB_INCLUDE_DIRS}"
RUN_OUTPUT_VARIABLE LIBUSB_VERSION
ARGS "\"${LIBUSB_DLL}\""
)
else()
try_run(LIBUSB_VERCHECK_RUN_RESULT
LIBUSB_VERCHECK_COMPILED
${CMAKE_HELPERS_BINARY_DIR}
${CMAKE_HELPERS_SOURCE_DIR}/libusb_version.c
CMAKE_FLAGS "-DINCLUDE_DIRECTORIES=${LIBUSB_INCLUDE_DIRS}" "-DLINK_LIBRARIES=${LIBUSB_LIBRARIES}"
RUN_OUTPUT_VARIABLE LIBUSB_VERSION
)
endif()
if (NOT LIBUSB_VERCHECK_COMPILED OR NOT LIBUSB_VERCHECK_RUN_RESULT EQUAL 0 )
message(STATUS "${LIBUSB_VERSION}")
set(LIBUSB_VERSION "0.0.0")
message(WARNING "\nFailed to compile (compiled=${LIBUSB_VERCHECK_COMPILED}) or run (retval=${LIBUSB_VERCHECK_RUN_RESULT}) libusb version check.\n"
"This may occur if libusb is earlier than v1.0.16.\n"
"Setting LIBUSB_VERSION to ${LIBUSB_VERSION}.\n")
return()
endif()
endif()
endif()
#
mark_as_advanced(LIBUSB_LIBRARY LIBUSB_INCLUDE_DIR )