Home | History | Annotate | Download | only in libkmsxx
      1 cmake_minimum_required(VERSION 2.8)
      2 project(kms++)
      3 
      4 include(LTO.cmake)
      5 
      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 
     10 include(CheckCXXCompilerFlag)
     11 
     12 IF(NOT CMAKE_BUILD_TYPE)
     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()
     17 
     18 string(TOUPPER "${CMAKE_BUILD_TYPE}" U_CMAKE_BUILD_TYPE)
     19 
     20 option(BUILD_SHARED_LIBS "Build shared libs" FALSE)
     21 option(TREAT_WARNINGS_AS_ERRORS "Treat warnings as errors" FALSE)
     22 
     23 set(KMSXX_ENABLE_PYTHON ON CACHE BOOL "Enable Python wrappers")
     24 set(KMSXX_PYTHON_VERSION "python3;python2" CACHE STRING "Python pkgconfig package")
     25 
     26 set(KMSXX_ENABLE_KMSCUBE OFF CACHE BOOL "Enable kmscube")
     27 
     28 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c11 -Wall")
     29 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wextra -Wno-unused-parameter")
     30 
     31 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall")
     32 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wextra -Wno-unused-parameter")
     33 
     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 
     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 
     45 set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
     46 
     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 
     52 # static link libc
     53 # set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++")
     54 
     55 check_lto()
     56 
     57 if (NOT ${U_CMAKE_BUILD_TYPE} MATCHES DEBUG)
     58     if (LTO_WORKS)
     59         set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -flto")
     60         set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto")
     61         set(CMAKE_AR "${LTO_AR}")
     62         set(CMAKE_RANLIB "${LTO_RANLIB}")
     63     endif()
     64 endif()
     65 
     66 find_package(PkgConfig REQUIRED)
     67 pkg_check_modules(LIBDRM libdrm>=2.4.64 REQUIRED)
     68 
     69 pkg_check_modules(LIBDRM_OMAP libdrm_omap)
     70 if(LIBDRM_OMAP_FOUND)
     71     add_definitions(-DHAS_LIBDRM_OMAP)
     72 endif()
     73 
     74 enable_testing()
     75 
     76 add_subdirectory(kms++)
     77 add_subdirectory(kms++util)
     78 add_subdirectory(utils)
     79 
     80 if(KMSXX_ENABLE_KMSCUBE)
     81 	add_subdirectory(kmscube)
     82 endif()
     83 
     84 if(KMSXX_ENABLE_PYTHON)
     85         add_subdirectory(py)
     86 endif()
     87 
     88 add_custom_target(docs SOURCES "README.md")
     89