Hangyu Kuang | f047e7c | 2016-07-06 14:21:45 -0700 | [diff] [blame] | 1 | # CMakeLists for libyuv |
| 2 | # Originally created for "roxlu build system" to compile libyuv on windows |
| 3 | # Run with -DTEST=ON to build unit tests |
Hangyu Kuang | f047e7c | 2016-07-06 14:21:45 -0700 | [diff] [blame] | 4 | |
Frank Barchard | b83bb38 | 2017-02-22 18:01:07 -0800 | [diff] [blame] | 5 | PROJECT ( YUV C CXX ) # "C" is required even for C++ projects |
| 6 | CMAKE_MINIMUM_REQUIRED( VERSION 2.8 ) |
| 7 | OPTION( TEST "Built unit tests" OFF ) |
Hangyu Kuang | f047e7c | 2016-07-06 14:21:45 -0700 | [diff] [blame] | 8 | |
Frank Barchard | b83bb38 | 2017-02-22 18:01:07 -0800 | [diff] [blame] | 9 | SET ( ly_base_dir ${PROJECT_SOURCE_DIR} ) |
| 10 | SET ( ly_src_dir ${ly_base_dir}/source ) |
| 11 | SET ( ly_inc_dir ${ly_base_dir}/include ) |
| 12 | SET ( ly_tst_dir ${ly_base_dir}/unit_test ) |
| 13 | SET ( ly_lib_name yuv ) |
| 14 | SET ( ly_lib_static ${ly_lib_name} ) |
| 15 | SET ( ly_lib_shared ${ly_lib_name}_shared ) |
Hangyu Kuang | f047e7c | 2016-07-06 14:21:45 -0700 | [diff] [blame] | 16 | |
Frank Barchard | b83bb38 | 2017-02-22 18:01:07 -0800 | [diff] [blame] | 17 | FILE ( GLOB_RECURSE ly_source_files ${ly_src_dir}/*.cc ) |
| 18 | LIST ( SORT ly_source_files ) |
Hangyu Kuang | f047e7c | 2016-07-06 14:21:45 -0700 | [diff] [blame] | 19 | |
Frank Barchard | b83bb38 | 2017-02-22 18:01:07 -0800 | [diff] [blame] | 20 | FILE ( GLOB_RECURSE ly_unittest_sources ${ly_tst_dir}/*.cc ) |
| 21 | LIST ( SORT ly_unittest_sources ) |
Hangyu Kuang | f047e7c | 2016-07-06 14:21:45 -0700 | [diff] [blame] | 22 | |
Frank Barchard | b83bb38 | 2017-02-22 18:01:07 -0800 | [diff] [blame] | 23 | INCLUDE_DIRECTORIES( BEFORE ${ly_inc_dir} ) |
Hangyu Kuang | f047e7c | 2016-07-06 14:21:45 -0700 | [diff] [blame] | 24 | |
Frank Barchard | b83bb38 | 2017-02-22 18:01:07 -0800 | [diff] [blame] | 25 | # this creates the static library (.a) |
| 26 | ADD_LIBRARY ( ${ly_lib_static} STATIC ${ly_source_files} ) |
Hangyu Kuang | f047e7c | 2016-07-06 14:21:45 -0700 | [diff] [blame] | 27 | |
Frank Barchard | b83bb38 | 2017-02-22 18:01:07 -0800 | [diff] [blame] | 28 | # this creates the shared library (.so) |
| 29 | ADD_LIBRARY ( ${ly_lib_shared} SHARED ${ly_source_files} ) |
| 30 | SET_TARGET_PROPERTIES ( ${ly_lib_shared} PROPERTIES OUTPUT_NAME "${ly_lib_name}" ) |
| 31 | SET_TARGET_PROPERTIES ( ${ly_lib_shared} PROPERTIES PREFIX "lib" ) |
Hangyu Kuang | f047e7c | 2016-07-06 14:21:45 -0700 | [diff] [blame] | 32 | |
Frank Barchard | b83bb38 | 2017-02-22 18:01:07 -0800 | [diff] [blame] | 33 | # this creates the conversion tool |
Frank Barchard | b33a82f | 2017-04-18 11:28:09 -0700 | [diff] [blame] | 34 | ADD_EXECUTABLE ( yuvconvert ${ly_base_dir}/util/yuvconvert.cc ) |
| 35 | TARGET_LINK_LIBRARIES ( yuvconvert ${ly_lib_static} ) |
Frank Barchard | b83bb38 | 2017-02-22 18:01:07 -0800 | [diff] [blame] | 36 | |
| 37 | |
| 38 | INCLUDE ( FindJPEG ) |
Hangyu Kuang | f047e7c | 2016-07-06 14:21:45 -0700 | [diff] [blame] | 39 | if (JPEG_FOUND) |
Frank Barchard | b83bb38 | 2017-02-22 18:01:07 -0800 | [diff] [blame] | 40 | include_directories( ${JPEG_INCLUDE_DIR} ) |
Frank Barchard | b33a82f | 2017-04-18 11:28:09 -0700 | [diff] [blame] | 41 | target_link_libraries( yuvconvert ${JPEG_LIBRARY} ) |
Frank Barchard | b83bb38 | 2017-02-22 18:01:07 -0800 | [diff] [blame] | 42 | add_definitions( -DHAVE_JPEG ) |
Hangyu Kuang | f047e7c | 2016-07-06 14:21:45 -0700 | [diff] [blame] | 43 | endif() |
| 44 | |
| 45 | if(TEST) |
| 46 | find_library(GTEST_LIBRARY gtest) |
| 47 | if(GTEST_LIBRARY STREQUAL "GTEST_LIBRARY-NOTFOUND") |
| 48 | set(GTEST_SRC_DIR /usr/src/gtest CACHE STRING "Location of gtest sources") |
| 49 | if(EXISTS ${GTEST_SRC_DIR}/src/gtest-all.cc) |
| 50 | message(STATUS "building gtest from sources in ${GTEST_SRC_DIR}") |
| 51 | set(gtest_sources ${GTEST_SRC_DIR}/src/gtest-all.cc) |
| 52 | add_library(gtest STATIC ${gtest_sources}) |
| 53 | include_directories(${GTEST_SRC_DIR}) |
| 54 | include_directories(${GTEST_SRC_DIR}/include) |
| 55 | set(GTEST_LIBRARY gtest) |
| 56 | else() |
| 57 | message(FATAL_ERROR "TEST is set but unable to find gtest library") |
| 58 | endif() |
| 59 | endif() |
| 60 | |
| 61 | add_executable(libyuv_unittest ${ly_unittest_sources}) |
Chong Zhang | ab123ac | 2019-06-27 14:28:37 -0700 | [diff] [blame] | 62 | target_link_libraries(libyuv_unittest ${ly_lib_name} ${GTEST_LIBRARY}) |
| 63 | find_library(PTHREAD_LIBRARY pthread) |
| 64 | if(NOT PTHREAD_LIBRARY STREQUAL "PTHREAD_LIBRARY-NOTFOUND") |
| 65 | target_link_libraries(libyuv_unittest pthread) |
| 66 | endif() |
Hangyu Kuang | f047e7c | 2016-07-06 14:21:45 -0700 | [diff] [blame] | 67 | if (JPEG_FOUND) |
| 68 | target_link_libraries(libyuv_unittest ${JPEG_LIBRARY}) |
| 69 | endif() |
Frank Barchard | b83bb38 | 2017-02-22 18:01:07 -0800 | [diff] [blame] | 70 | |
Hangyu Kuang | f047e7c | 2016-07-06 14:21:45 -0700 | [diff] [blame] | 71 | if(NACL AND NACL_LIBC STREQUAL "newlib") |
| 72 | target_link_libraries(libyuv_unittest glibc-compat) |
| 73 | endif() |
| 74 | |
Chong Zhang | ab123ac | 2019-06-27 14:28:37 -0700 | [diff] [blame] | 75 | find_library(GFLAGS_LIBRARY gflags) |
| 76 | if(NOT GFLAGS_LIBRARY STREQUAL "GFLAGS_LIBRARY-NOTFOUND") |
| 77 | target_link_libraries(libyuv_unittest gflags) |
| 78 | add_definitions(-DLIBYUV_USE_GFLAGS) |
| 79 | endif() |
Hangyu Kuang | f047e7c | 2016-07-06 14:21:45 -0700 | [diff] [blame] | 80 | endif() |
| 81 | |
Frank Barchard | b83bb38 | 2017-02-22 18:01:07 -0800 | [diff] [blame] | 82 | |
| 83 | # install the conversion tool, .so, .a, and all the header files |
Frank Barchard | b33a82f | 2017-04-18 11:28:09 -0700 | [diff] [blame] | 84 | INSTALL ( PROGRAMS ${CMAKE_BINARY_DIR}/yuvconvert DESTINATION bin ) |
Frank Barchard | b83bb38 | 2017-02-22 18:01:07 -0800 | [diff] [blame] | 85 | INSTALL ( TARGETS ${ly_lib_static} DESTINATION lib ) |
Chong Zhang | ab123ac | 2019-06-27 14:28:37 -0700 | [diff] [blame] | 86 | INSTALL ( TARGETS ${ly_lib_shared} LIBRARY DESTINATION lib RUNTIME DESTINATION bin ) |
Frank Barchard | b83bb38 | 2017-02-22 18:01:07 -0800 | [diff] [blame] | 87 | INSTALL ( DIRECTORY ${PROJECT_SOURCE_DIR}/include/ DESTINATION include ) |
| 88 | |
| 89 | # create the .deb and .rpm packages using cpack |
| 90 | INCLUDE ( CM_linux_packages.cmake ) |
| 91 | |