Jyri Sarha | bdbb646 | 2015-10-01 12:52:09 +0300 | [diff] [blame] | 1 | cmake_minimum_required(VERSION 2.8) |
Tomi Valkeinen | 009828b | 2015-09-28 01:13:34 +0300 | [diff] [blame] | 2 | project(kms++) |
| 3 | |
Tomi Valkeinen | 736b295 | 2016-06-11 20:45:55 +0300 | [diff] [blame] | 4 | set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) |
| 5 | set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) |
| 6 | set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) |
| 7 | |
Tomi Valkeinen | beae616 | 2016-05-22 22:22:37 +0300 | [diff] [blame] | 8 | include(CheckCXXCompilerFlag) |
| 9 | |
Tomi Valkeinen | 009828b | 2015-09-28 01:13:34 +0300 | [diff] [blame] | 10 | IF(NOT CMAKE_BUILD_TYPE) |
Tomi Valkeinen | 17b890d | 2016-05-22 21:51:52 +0300 | [diff] [blame] | 11 | message(STATUS "Setting build type to 'Release' as none was specified.") |
| 12 | SET(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build." FORCE) |
| 13 | set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo") |
| 14 | ENDIF() |
Tomi Valkeinen | 009828b | 2015-09-28 01:13:34 +0300 | [diff] [blame] | 15 | |
Tomi Valkeinen | beae616 | 2016-05-22 22:22:37 +0300 | [diff] [blame] | 16 | string(TOUPPER "${CMAKE_BUILD_TYPE}" U_CMAKE_BUILD_TYPE) |
| 17 | |
Tomi Valkeinen | c5f1661 | 2016-06-11 20:33:18 +0300 | [diff] [blame] | 18 | option(BUILD_SHARED_LIBS "Build shared libs" FALSE) |
| 19 | |
Tomi Valkeinen | 711a0b8 | 2016-06-11 20:37:17 +0300 | [diff] [blame] | 20 | set(KMSXX_ENABLE_PYTHON ON CACHE BOOL "Enable Python wrappers") |
| 21 | set(KMSXX_ENABLE_KMSCUBE OFF CACHE BOOL "Enable kmscube") |
Tomi Valkeinen | 009828b | 2015-09-28 01:13:34 +0300 | [diff] [blame] | 22 | |
| 23 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall") |
Tomi Valkeinen | cecb364 | 2016-04-16 22:26:47 +0300 | [diff] [blame] | 24 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wextra -Wno-unused-parameter") |
Tomi Valkeinen | 009828b | 2015-09-28 01:13:34 +0300 | [diff] [blame] | 25 | |
Tomi Valkeinen | 11a1c56 | 2016-05-25 11:17:46 +0300 | [diff] [blame] | 26 | if (CMAKE_COMPILER_IS_GNUCC) |
| 27 | if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.0) |
| 28 | # GCC 4.x seems to warn too much |
| 29 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-missing-field-initializers") |
| 30 | endif() |
| 31 | endif() |
| 32 | |
Tomi Valkeinen | 009828b | 2015-09-28 01:13:34 +0300 | [diff] [blame] | 33 | set(CMAKE_POSITION_INDEPENDENT_CODE TRUE) |
| 34 | |
Tomi Valkeinen | 856fa56 | 2015-09-30 13:43:35 +0300 | [diff] [blame] | 35 | # static link libc |
| 36 | # set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++") |
| 37 | |
Tomi Valkeinen | beae616 | 2016-05-22 22:22:37 +0300 | [diff] [blame] | 38 | if (NOT ${U_CMAKE_BUILD_TYPE} MATCHES DEBUG) |
| 39 | CHECK_CXX_COMPILER_FLAG("-flto" HAS_LTO_FLAG) |
| 40 | |
| 41 | if (HAS_LTO_FLAG) |
| 42 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto") |
| 43 | set(CMAKE_AR gcc-ar) |
| 44 | set(CMAKE_RANLIB gcc-ranlib) |
| 45 | endif() |
Tomi Valkeinen | bf1a382 | 2016-03-20 10:47:56 +0200 | [diff] [blame] | 46 | endif() |
| 47 | |
Tomi Valkeinen | 009828b | 2015-09-28 01:13:34 +0300 | [diff] [blame] | 48 | find_package(PkgConfig REQUIRED) |
Tomi Valkeinen | 54d91d8 | 2016-05-25 10:58:43 +0300 | [diff] [blame] | 49 | pkg_check_modules(LIBDRM libdrm>=2.4.64 REQUIRED) |
Tomi Valkeinen | 009828b | 2015-09-28 01:13:34 +0300 | [diff] [blame] | 50 | |
| 51 | enable_testing() |
| 52 | |
Tomi Valkeinen | 17d1808 | 2016-06-11 20:17:35 +0300 | [diff] [blame] | 53 | add_subdirectory(kms++) |
| 54 | add_subdirectory(kms++util) |
Tomi Valkeinen | a5c28bc | 2016-05-23 09:54:08 +0300 | [diff] [blame] | 55 | add_subdirectory(utils) |
Tomi Valkeinen | 009828b | 2015-09-28 01:13:34 +0300 | [diff] [blame] | 56 | |
Tomi Valkeinen | 711a0b8 | 2016-06-11 20:37:17 +0300 | [diff] [blame] | 57 | if(KMSXX_ENABLE_KMSCUBE) |
Tomi Valkeinen | bf1a382 | 2016-03-20 10:47:56 +0200 | [diff] [blame] | 58 | add_subdirectory(kmscube) |
Tomi Valkeinen | 8bc7333 | 2015-10-02 21:34:50 +0300 | [diff] [blame] | 59 | endif() |
| 60 | |
Tomi Valkeinen | 711a0b8 | 2016-06-11 20:37:17 +0300 | [diff] [blame] | 61 | if(KMSXX_ENABLE_PYTHON) |
Tomi Valkeinen | ba853e9 | 2015-09-30 22:38:28 +0300 | [diff] [blame] | 62 | add_subdirectory(py) |
| 63 | endif() |