summaryrefslogtreecommitdiff
path: root/libusb/CMakeLists.txt
blob: a1b18fa28d8d5f9be18aa40595312a8fd61bbc02 (plain)
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
add_subdirectory(os)

include(config.cmake)
include(FindThreads)

set (LIBUSB_COMMON
	core.c
	descriptor.c
	io.c
	sync.c
	libusb-1.0.rc
	libusb-1.0.def
)

include_directories(${CMAKE_CURRENT_SOURCE_DIR})
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/os)

if (CMAKE_THREAD_LIBS_INIT)
	list(APPEND LIBUSB_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
endif()

# The CLEAN_DIRECT_OUTPUT property setting can be removed once CMake >= 2.8.4
if (WITH_SHARED)
	add_library(usb-1.0
		SHARED
		${LIBUSB_COMMON}
		${LIBUSB_PLATFORM}
	)

	if (MSVC)
		set_target_properties(usb-1.0 PROPERTIES PREFIX "lib")
		set_target_properties(usb-1.0 PROPERTIES IMPORT_PREFIX "lib")
		set_target_properties(usb-1.0 PROPERTIES IMPORT_SUFFIX ".dll.lib")
	endif()

	set_target_properties(usb-1.0 PROPERTIES
		CLEAN_DIRECT_OUTPUT 1
		PUBLIC_HEADER libusb.h
		VERSION "${LIBUSB_MAJOR}.${LIBUSB_MINOR}.${LIBUSB_MICRO}"
		SOVERSION "${LIBUSB_MAJOR}.${LIBUSB_MINOR}.${LIBUSB_MICRO}"
	)

	if (DEFINED LIBUSB_LIBRARIES)
		message("Linking shared library against ${LIBUSB_LIBRARIES}")
		target_link_libraries(usb-1.0
			${LIBUSB_LIBRARIES}
		)
	endif()

	list(APPEND LIBUSB_LIBTARGETS usb-1.0)
endif()

if (WITH_STATIC)
	add_library(usb-1.0-static
		STATIC
		${LIBUSB_COMMON}
		${LIBUSB_PLATFORM}
	)

	set_target_properties(usb-1.0-static PROPERTIES
		PREFIX "lib"
		OUTPUT_NAME "usb-1.0"
		CLEAN_DIRECT_OUTPUT 1
		PUBLIC_HEADER libusb.h
		VERSION "${LIBUSB_MAJOR}.${LIBUSB_MINOR}.${LIBUSB_MICRO}"
		SOVERSION "${LIBUSB_MAJOR}.${LIBUSB_MINOR}.${LIBUSB_MICRO}"
	)

	if (DEFINED LIBUSB_LIBRARIES)
		target_link_libraries(usb-1.0-static
			${LIBUSB_LIBRARIES}
		)
	endif()

	list(APPEND LIBUSB_LIBTARGETS usb-1.0-static)
endif()

install(TARGETS ${LIBUSB_LIBTARGETS} EXPORT libusb-1
	PUBLIC_HEADER DESTINATION include/libusb-1.0
	ARCHIVE DESTINATION lib
	LIBRARY DESTINATION lib
	RUNTIME DESTINATION lib
)
install(EXPORT libusb-1 DESTINATION lib/libusb)

foreach(LIB IN LISTS LIBUSB_LIBRARIES)
	if (LIB MATCHES .framework$)
		get_filename_component(LIB "${LIB}" NAME)
		set(LIB "-Wl,-framework,${LIB}")
	elseif (LIB MATCHES .dylib$)
		get_filename_component(LIBDIR "${LIB}" PATH)
		get_filename_component(LIB "${LIB}" NAME)
		string(REGEX REPLACE "lib(.*).dylib$" "\\1" LIB "${LIB}")
		set(LIB "-L${LIBDIR} -l${LIB}")
	endif()
	set(LIBUSB_LIB_DEPENDS "${LIBUSB_LIB_DEPENDS} ${LIB}")
endforeach()

configure_file(libusb-1.0.pc.cmake "${CMAKE_CURRENT_BINARY_DIR}/libusb-1.0.pc" @ONLY)
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libusb-1.0.pc" DESTINATION lib/pkgconfig)