Add libusb and libuvc
[rtmpclient.git] / app / src / main / jni / libuvc-0.0.6 / CMakeLists.txt
1 cmake_minimum_required(VERSION 2.8)
2 project(libuvc)
3
4 if (NOT CMAKE_BUILD_TYPE)
5   message(STATUS "No build type selected, default to Release")
6   set(CMAKE_BUILD_TYPE "Release" CACHE STRING "" FORCE)
7 endif ()
8
9 if (NOT CMAKE_BUILD_TARGET)
10   message(STATUS "No target type selected, default to both shared and static library")
11   set(CMAKE_BUILD_TARGET "Both" CACHE STRING "" FORCE)
12 endif()
13
14 set(libuvc_VERSION_MAJOR 0)
15 set(libuvc_VERSION_MINOR 0)
16 set(libuvc_VERSION_PATCH 6)
17 set(libuvc_VERSION ${libuvc_VERSION_MAJOR}.${libuvc_VERSION_MINOR}.${libuvc_VERSION_PATCH})
18
19 set(libuvc_DESCRIPTION "A cross-platform library for USB video devices")
20 set(libuvc_URL "https://github.com/ktossell/libuvc")
21
22 find_package(PkgConfig)
23 pkg_check_modules(LIBUSB libusb-1.0)
24
25 # Try to find JPEG using a module or pkg-config. If that doesn't work, search for the header.
26 find_package(jpeg QUIET)
27 if(JPEG_FOUND)
28   set(JPEG_LINK_FLAGS ${JPEG_LIBRARIES})
29 else()
30   pkg_check_modules(JPEG QUIET libjpeg)
31   if(JPEG_FOUND)
32       set(JPEG_INCLUDE_DIR ${JPEG_INCLUDE_DIRS})
33       set(JPEG_LINK_FLAGS ${JPEG_LDFLAGS})
34   else()
35     find_path(JPEG_INCLUDE_DIR jpeglib.h)
36     if(JPEG_INCLUDE_DIR)
37       set(JPEG_FOUND ON)
38       set(JPEG_LINK_FLAGS -ljpeg)
39     endif()
40   endif()
41 endif()
42
43 include(GNUInstallDirs)
44
45 SET(CMAKE_C_FLAGS_DEBUG "-g -DUVC_DEBUGGING")
46
47 SET(INSTALL_CMAKE_DIR "${CMAKE_INSTALL_PREFIX}/lib/cmake/libuvc" CACHE PATH
48         "Installation directory for CMake files")
49
50 SET(SOURCES src/ctrl.c src/ctrl-gen.c src/device.c src/diag.c
51            src/frame.c src/init.c src/stream.c
52            src/misc.c)
53
54 include_directories(
55   ${libuvc_SOURCE_DIR}/include
56   ${libuvc_BINARY_DIR}/include
57   ${LIBUSB_INCLUDE_DIRS}
58 )
59
60 if(JPEG_FOUND)
61   message(STATUS "Building libuvc with JPEG support.")
62   include_directories(${JPEG_INCLUDE_DIR})
63   SET(LIBUVC_HAS_JPEG TRUE)
64   SET(SOURCES ${SOURCES} src/frame-mjpeg.c)
65 else()
66   message(WARNING "JPEG not found. libuvc will not support JPEG decoding.")
67 endif()
68
69 if(${CMAKE_BUILD_TARGET} MATCHES "Shared")
70   set(BUILD_UVC_SHARED TRUE)
71 elseif(${CMAKE_BUILD_TARGET} MATCHES "Static")
72   set(BUILD_UVC_STATIC TRUE)
73 elseif(${CMAKE_BUILD_TARGET} MATCHES "Both")
74   set(BUILD_UVC_SHARED TRUE)
75   set(BUILD_UVC_STATIC TRUE)
76 else()
77   message( FATAL_ERROR "Invalid build type ${CMAKE_BUILD_TARGET}" )
78 endif()
79
80 if(BUILD_UVC_SHARED)
81   add_library(uvc SHARED ${SOURCES})
82   list(APPEND UVC_TARGETS uvc)
83 endif()
84
85 if(BUILD_UVC_STATIC)
86   add_library(uvc_static STATIC ${SOURCES})
87   set_target_properties(uvc_static PROPERTIES OUTPUT_NAME uvc)
88   list(APPEND UVC_TARGETS uvc_static)
89 endif()
90
91 configure_file(include/libuvc/libuvc_config.h.in
92   ${PROJECT_BINARY_DIR}/include/libuvc/libuvc_config.h @ONLY)
93
94 foreach(target_name ${UVC_TARGETS})
95   set_target_properties(${target_name} PROPERTIES
96     PUBLIC_HEADER "include/libuvc/libuvc.h;${libuvc_BINARY_DIR}/include/libuvc/libuvc_config.h" )
97 endforeach()
98
99 if(BUILD_UVC_SHARED)
100   if(JPEG_FOUND)
101     target_link_libraries (uvc ${JPEG_LINK_FLAGS})
102   endif(JPEG_FOUND)
103
104   target_link_libraries(uvc ${LIBUSB_LIBRARIES})
105
106   #add_executable(test src/test.c)
107   #target_link_libraries(test uvc ${LIBUSB_LIBRARIES} opencv_highgui
108   #  opencv_core)
109 endif()
110
111 install(TARGETS ${UVC_TARGETS}
112     EXPORT libuvcTargets
113   LIBRARY DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/${CMAKE_LIBRARY_ARCHITECTURE}"
114   ARCHIVE DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/${CMAKE_LIBRARY_ARCHITECTURE}"
115   PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_PREFIX}/include/libuvc"
116 )
117
118 export(TARGETS ${UVC_TARGETS}
119   FILE "${PROJECT_BINARY_DIR}/libuvcTargets.cmake")
120 export(PACKAGE libuvc)
121
122 set(CONF_INCLUDE_DIR "${CMAKE_INSTALL_PREFIX}/include")
123 set(CONF_LIBRARY_DIR "${CMAKE_INSTALL_PREFIX}/lib/${CMAKE_LIBRARY_ARCHITECTURE}")
124 set(CONF_LIBRARY "${CMAKE_INSTALL_PREFIX}/lib/${CMAKE_LIBRARY_ARCHITECTURE}/${CMAKE_SHARED_LIBRARY_PREFIX}uvc${CMAKE_SHARED_LIBRARY_SUFFIX}")
125
126 configure_file(libuvcConfig.cmake.in ${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/libuvcConfig.cmake)
127
128 configure_file(libuvcConfigVersion.cmake.in ${PROJECT_BINARY_DIR}/libuvcConfigVersion.cmake @ONLY)
129
130 configure_file(libuvc.pc.in ${PROJECT_BINARY_DIR}/libuvc.pc @ONLY)
131
132 install(FILES
133   "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/libuvcConfig.cmake"
134   "${PROJECT_BINARY_DIR}/libuvcConfigVersion.cmake"
135   DESTINATION "${INSTALL_CMAKE_DIR}")
136
137 install(EXPORT libuvcTargets
138   DESTINATION "${INSTALL_CMAKE_DIR}")
139
140 install(FILES
141   "${PROJECT_BINARY_DIR}/libuvc.pc"
142   DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig"
143 )