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 | 8170f7a | 2016-09-28 10:42:03 +0300 | [diff] [blame] | 4 | include(LTO.cmake) |
| 5 | |
Tomi Valkeinen | 736b295 | 2016-06-11 20:45:55 +0300 | [diff] [blame] | 6 | set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) |
| 7 | set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) |
| 8 | set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) |
| 9 | |
Tomi Valkeinen | beae616 | 2016-05-22 22:22:37 +0300 | [diff] [blame] | 10 | include(CheckCXXCompilerFlag) |
| 11 | |
Tomi Valkeinen | 009828b | 2015-09-28 01:13:34 +0300 | [diff] [blame] | 12 | IF(NOT CMAKE_BUILD_TYPE) |
Tomi Valkeinen | 17b890d | 2016-05-22 21:51:52 +0300 | [diff] [blame] | 13 | message(STATUS "Setting build type to 'Release' as none was specified.") |
| 14 | SET(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build." FORCE) |
| 15 | set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo") |
| 16 | ENDIF() |
Tomi Valkeinen | 009828b | 2015-09-28 01:13:34 +0300 | [diff] [blame] | 17 | |
Tomi Valkeinen | beae616 | 2016-05-22 22:22:37 +0300 | [diff] [blame] | 18 | string(TOUPPER "${CMAKE_BUILD_TYPE}" U_CMAKE_BUILD_TYPE) |
| 19 | |
Tomi Valkeinen | c5f1661 | 2016-06-11 20:33:18 +0300 | [diff] [blame] | 20 | option(BUILD_SHARED_LIBS "Build shared libs" FALSE) |
Tomi Valkeinen | 2293f88 | 2016-10-01 18:48:44 +0300 | [diff] [blame] | 21 | option(TREAT_WARNINGS_AS_ERRORS "Treat warnings as errors" FALSE) |
Tomi Valkeinen | c5f1661 | 2016-06-11 20:33:18 +0300 | [diff] [blame] | 22 | |
Tomi Valkeinen | 711a0b8 | 2016-06-11 20:37:17 +0300 | [diff] [blame] | 23 | set(KMSXX_ENABLE_PYTHON ON CACHE BOOL "Enable Python wrappers") |
Alejandro Hernandez | 643d678 | 2017-02-03 10:11:58 -0500 | [diff] [blame] | 24 | set(KMSXX_PYTHON_VERSION "python3;python2" CACHE STRING "Python pkgconfig package") |
| 25 | |
Tomi Valkeinen | 711a0b8 | 2016-06-11 20:37:17 +0300 | [diff] [blame] | 26 | set(KMSXX_ENABLE_KMSCUBE OFF CACHE BOOL "Enable kmscube") |
Tomi Valkeinen | 009828b | 2015-09-28 01:13:34 +0300 | [diff] [blame] | 27 | |
Tomi Valkeinen | 8a703fb | 2016-11-26 20:53:28 +0200 | [diff] [blame] | 28 | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c11 -Wall") |
| 29 | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wextra -Wno-unused-parameter") |
| 30 | |
Tomi Valkeinen | 009828b | 2015-09-28 01:13:34 +0300 | [diff] [blame] | 31 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall") |
Tomi Valkeinen | cecb364 | 2016-04-16 22:26:47 +0300 | [diff] [blame] | 32 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wextra -Wno-unused-parameter") |
Tomi Valkeinen | 009828b | 2015-09-28 01:13:34 +0300 | [diff] [blame] | 33 | |
Tomi Valkeinen | 11a1c56 | 2016-05-25 11:17:46 +0300 | [diff] [blame] | 34 | if (CMAKE_COMPILER_IS_GNUCC) |
| 35 | if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.0) |
| 36 | # GCC 4.x seems to warn too much |
| 37 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-missing-field-initializers") |
| 38 | endif() |
| 39 | endif() |
| 40 | |
Tomi Valkeinen | 132d917 | 2016-10-01 18:24:28 +0300 | [diff] [blame] | 41 | # HACK: cmake always adds "-rdynamic", this removes it |
| 42 | SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "") |
| 43 | SET(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "") |
| 44 | |
Tomi Valkeinen | 009828b | 2015-09-28 01:13:34 +0300 | [diff] [blame] | 45 | set(CMAKE_POSITION_INDEPENDENT_CODE TRUE) |
| 46 | |
Tomi Valkeinen | 2293f88 | 2016-10-01 18:48:44 +0300 | [diff] [blame] | 47 | if (TREAT_WARNINGS_AS_ERRORS) |
| 48 | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror") |
| 49 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror") |
| 50 | endif() |
| 51 | |
Tomi Valkeinen | 856fa56 | 2015-09-30 13:43:35 +0300 | [diff] [blame] | 52 | # static link libc |
| 53 | # set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++") |
| 54 | |
Tomi Valkeinen | 8170f7a | 2016-09-28 10:42:03 +0300 | [diff] [blame] | 55 | check_lto() |
Tomi Valkeinen | beae616 | 2016-05-22 22:22:37 +0300 | [diff] [blame] | 56 | |
Tomi Valkeinen | 8170f7a | 2016-09-28 10:42:03 +0300 | [diff] [blame] | 57 | if (NOT ${U_CMAKE_BUILD_TYPE} MATCHES DEBUG) |
| 58 | if (LTO_WORKS) |
Tomi Valkeinen | 8a703fb | 2016-11-26 20:53:28 +0200 | [diff] [blame] | 59 | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -flto") |
Tomi Valkeinen | 8170f7a | 2016-09-28 10:42:03 +0300 | [diff] [blame] | 60 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto") |
| 61 | set(CMAKE_AR "${LTO_AR}") |
| 62 | set(CMAKE_RANLIB "${LTO_RANLIB}") |
Tomi Valkeinen | beae616 | 2016-05-22 22:22:37 +0300 | [diff] [blame] | 63 | endif() |
Tomi Valkeinen | bf1a382 | 2016-03-20 10:47:56 +0200 | [diff] [blame] | 64 | endif() |
| 65 | |
Tomi Valkeinen | 009828b | 2015-09-28 01:13:34 +0300 | [diff] [blame] | 66 | find_package(PkgConfig REQUIRED) |
Tomi Valkeinen | 54d91d8 | 2016-05-25 10:58:43 +0300 | [diff] [blame] | 67 | pkg_check_modules(LIBDRM libdrm>=2.4.64 REQUIRED) |
Tomi Valkeinen | 4934864 | 2016-11-22 13:13:20 +0200 | [diff] [blame] | 68 | |
Tomi Valkeinen | cb747ea | 2016-09-23 14:54:39 +0300 | [diff] [blame] | 69 | pkg_check_modules(LIBDRM_OMAP libdrm_omap) |
Tomi Valkeinen | 4934864 | 2016-11-22 13:13:20 +0200 | [diff] [blame] | 70 | if(LIBDRM_OMAP_FOUND) |
| 71 | add_definitions(-DHAS_LIBDRM_OMAP) |
| 72 | endif() |
Tomi Valkeinen | 009828b | 2015-09-28 01:13:34 +0300 | [diff] [blame] | 73 | |
| 74 | enable_testing() |
| 75 | |
Tomi Valkeinen | 17d1808 | 2016-06-11 20:17:35 +0300 | [diff] [blame] | 76 | add_subdirectory(kms++) |
| 77 | add_subdirectory(kms++util) |
Tomi Valkeinen | a5c28bc | 2016-05-23 09:54:08 +0300 | [diff] [blame] | 78 | add_subdirectory(utils) |
Tomi Valkeinen | 009828b | 2015-09-28 01:13:34 +0300 | [diff] [blame] | 79 | |
Tomi Valkeinen | 711a0b8 | 2016-06-11 20:37:17 +0300 | [diff] [blame] | 80 | if(KMSXX_ENABLE_KMSCUBE) |
Tomi Valkeinen | bf1a382 | 2016-03-20 10:47:56 +0200 | [diff] [blame] | 81 | add_subdirectory(kmscube) |
Tomi Valkeinen | 8bc7333 | 2015-10-02 21:34:50 +0300 | [diff] [blame] | 82 | endif() |
| 83 | |
Tomi Valkeinen | 711a0b8 | 2016-06-11 20:37:17 +0300 | [diff] [blame] | 84 | if(KMSXX_ENABLE_PYTHON) |
Tomi Valkeinen | ba853e9 | 2015-09-30 22:38:28 +0300 | [diff] [blame] | 85 | add_subdirectory(py) |
| 86 | endif() |
Tomi Valkeinen | 0286945 | 2017-02-06 12:57:38 +0200 | [diff] [blame] | 87 | |
| 88 | add_custom_target(docs SOURCES "README.md") |