CMAKE_MINIMUM_REQUIRED(VERSION 3.1.0) IF(POLICY CMP0020) CMAKE_POLICY(SET CMP0020 NEW) ENDIF() IF(POLICY CMP0046) CMAKE_POLICY(SET CMP0046 NEW) ENDIF() IF(POLICY CMP0048) CMAKE_POLICY(SET CMP0048 NEW) ENDIF() IF(POLICY CMP0054) CMAKE_POLICY(SET CMP0054 NEW) ENDIF() # "tools.only" can be defined to disable the normal build and enable # cmdline "tools" only. For example: "make format" or "make package_source" IF(tools.only) SET(LANGUAGES NONE) ELSE() SET(LANGUAGES CXX) ENDIF() PROJECT(AusweisApp2 VERSION 1.10.3 LANGUAGES ${LANGUAGES}) # Set TWEAK if not defined in PROJECT_VERSION above to # have a valid tweak version without propagating it IF(NOT PROJECT_VERSION_TWEAK) SET(PROJECT_VERSION_TWEAK 0) ENDIF() IF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT OR ANDROID OR IOS) SET(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/dist" CACHE PATH "default install path" FORCE) ENDIF() SET(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake") OPTION(BUILD_SHARED_LIBS "Enable build of shared libraries") INCLUDE(Helper) IF(NOT VENDOR) SET(VENDOR_FILE "${PROJECT_SOURCE_DIR}/vendor.txt") IF(EXISTS "${VENDOR_FILE}") FILE(READ "${VENDOR_FILE}" VENDOR) STRING(STRIP "${VENDOR}" VENDOR) ELSE() SET(VENDOR AusweisApp2_CE) # CommunityEdition ENDIF() ENDIF() IF(VENDOR MATCHES "Governikus") SET(VENDOR_GOVERNIKUS TRUE) ENDIF() MESSAGE(STATUS "VENDOR: ${VENDOR}") MESSAGE(STATUS "VERSION: ${PROJECT_VERSION}") IF(ANDROID) IF(NOT ANDROID_VERSION_CODE) SET(ANDROID_VERSION_CODE 0) ENDIF() MESSAGE(STATUS "ANDROID_VERSION_CODE: ${ANDROID_VERSION_CODE}") ENDIF() IF("${PROJECT_BINARY_DIR}" STREQUAL "${PROJECT_SOURCE_DIR}") MESSAGE(FATAL_ERROR "in tree building is not supported!") ENDIF() IF(CMAKE_BUILD_TYPE) STRING(TOUPPER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE) ELSE() SET(CMAKE_BUILD_TYPE "DEBUG" CACHE STRING "build type configuration" FORCE) ENDIF() IF(NOT ${CMAKE_BUILD_TYPE} STREQUAL "DEBUG" AND NOT ${CMAKE_BUILD_TYPE} STREQUAL "RELEASE") MESSAGE(FATAL_ERROR "CMAKE_BUILD_TYPE is invalid! Available options: RELEASE, DEBUG") ENDIF() SET(CMAKE_AUTOMOC ON) SET(CMAKE_AUTOUIC ON) SET(CMAKE_INCLUDE_CURRENT_DIR ON) SET(SRC_DIR ${PROJECT_SOURCE_DIR}/src) SET(TEST_DIR ${PROJECT_SOURCE_DIR}/test) SET(RESOURCES_DIR ${PROJECT_SOURCE_DIR}/resources) SET(PACKAGING_DIR ${RESOURCES_DIR}/packaging) SET(EXECUTABLE_BASE_NAME AusweisApp2) SET(EXECUTABLE_NAME ${EXECUTABLE_BASE_NAME}${CMAKE_EXECUTABLE_SUFFIX}) INCLUDE(Tools) INCLUDE(DVCS) ADD_SUBDIRECTORY(docs) INCLUDE(DefaultFiles) INCLUDE(Appcast) INCLUDE(Messages) IF(tools.only) INCLUDE(Packaging) RETURN() ENDIF() INCLUDE(Libraries) INCLUDE(CompilerFlags) ADD_SUBDIRECTORY(resources) ADD_SUBDIRECTORY(src) IF("${CMAKE_BUILD_TYPE}" STREQUAL "DEBUG") INCLUDE(CTest) CONFIGURE_FILE("${CMAKE_MODULE_PATH}/CTestCustom.cmake.in" "${CMAKE_BINARY_DIR}/CTestCustom.cmake" COPYONLY) ENDIF() IF(BUILD_TESTING) ADD_SUBDIRECTORY(test) ENDIF() ADD_SUBDIRECTORY(utils) INCLUDE(Packaging)