cmake_minimum_required(VERSION 2.8) project(kms++) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) include(CheckCXXCompilerFlag) IF(NOT CMAKE_BUILD_TYPE) message(STATUS "Setting build type to 'Release' as none was specified.") SET(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build." FORCE) set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo") ENDIF() string(TOUPPER "${CMAKE_BUILD_TYPE}" U_CMAKE_BUILD_TYPE) option(BUILD_SHARED_LIBS "Build shared libs" FALSE) set(KMSXX_ENABLE_PYTHON ON CACHE BOOL "Enable Python wrappers") set(KMSXX_ENABLE_KMSCUBE OFF CACHE BOOL "Enable kmscube") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wextra -Wno-unused-parameter") if (CMAKE_COMPILER_IS_GNUCC) if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.0) # GCC 4.x seems to warn too much set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-missing-field-initializers") endif() endif() set(CMAKE_POSITION_INDEPENDENT_CODE TRUE) # static link libc # set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++") if (NOT ${U_CMAKE_BUILD_TYPE} MATCHES DEBUG) CHECK_CXX_COMPILER_FLAG("-flto" HAS_LTO_FLAG) if (HAS_LTO_FLAG) find_program(LTO_AR NAMES "${CMAKE_C_COMPILER}-ar" gcc-ar) find_program(LTO_RANLIB NAMES "${CMAKE_C_COMPILER}-ranlib" gcc-ranlib) if (LTO_AR AND LTO_RANLIB) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto") set(CMAKE_AR "${LTO_AR}") set(CMAKE_RANLIB "${LTO_RANLIB}") else() message(STATUS "gcc-ar or gcc-ranlib not found, disabling LTO") endif() endif() endif() find_package(PkgConfig REQUIRED) pkg_check_modules(LIBDRM libdrm>=2.4.64 REQUIRED) enable_testing() add_subdirectory(kms++) add_subdirectory(kms++util) add_subdirectory(utils) if(KMSXX_ENABLE_KMSCUBE) add_subdirectory(kmscube) endif() if(KMSXX_ENABLE_PYTHON) add_subdirectory(py) endif()