Warning, /libraries/kdb/cmake/modules/KDbMacros.cmake is written in an unsupported language. File is not indexed.
0001 # Additional CMake macros 0002 # 0003 # Copyright (C) 2015-2018 Jarosław Staniek <staniek@kde.org> 0004 # 0005 # Redistribution and use is allowed according to the terms of the BSD license. 0006 # For details see the accompanying COPYING-CMAKE-SCRIPTS file. 0007 0008 if(__kdb_macros) 0009 return() 0010 endif() 0011 set(__kdb_macros YES) 0012 0013 include(GenerateExportHeader) 0014 include(GetGitRevisionDescription) 0015 include(KDbAddSimpleOption) 0016 0017 string(TOUPPER ${PROJECT_NAME} PROJECT_NAME_UPPER) 0018 string(TOLOWER ${PROJECT_NAME} PROJECT_NAME_LOWER) 0019 string(COMPARE EQUAL "${CMAKE_CXX_COMPILER_ID}" "Clang" CMAKE_COMPILER_IS_CLANG) 0020 0021 # x.81.z or larger means test release, so the stable major version is x+1 0022 if(PROJECT_VERSION_MINOR GREATER 80) 0023 set(PROJECT_UNSTABLE ON) 0024 math(EXPR PROJECT_STABLE_VERSION_MAJOR "${PROJECT_VERSION_MAJOR} + 1") 0025 set(PROJECT_STABLE_VERSION_MINOR 0) 0026 set(PROJECT_STABLE_VERSION_PATCH 0) 0027 # x.y.81 or larger means test release, so the stable minor version is y+1 0028 elseif(PROJECT_VERSION_PATCH GREATER 80) 0029 set(PROJECT_STABLE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR}) 0030 math(EXPR PROJECT_STABLE_VERSION_MINOR "${PROJECT_VERSION_MINOR} + 1") 0031 set(PROJECT_STABLE_VERSION_PATCH 0) 0032 else() 0033 set(PROJECT_STABLE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR}) 0034 set(PROJECT_STABLE_VERSION_MINOR ${PROJECT_VERSION_MINOR}) 0035 set(PROJECT_STABLE_VERSION_PATCH ${PROJECT_VERSION_PATCH}) 0036 endif() 0037 0038 # Fetches git revision and branch from the source dir of the current build if possible. 0039 # Sets ${PROJECT_NAME_UPPER}_GIT_SHA1_STRING and ${PROJECT_NAME_UPPER}_GIT_BRANCH_STRING variables. 0040 # If git information is not available but ${CMAKE_SOURCE_DIR}/GIT_VERSION file exists, 0041 # it is parsed. This file can be created by scripts while preparing tarballs and is 0042 # supposed to contain two lines: hash and branch. 0043 macro(get_git_revision_and_branch) 0044 set(${PROJECT_NAME_UPPER}_GIT_SHA1_STRING "") 0045 set(${PROJECT_NAME_UPPER}_GIT_BRANCH_STRING "") 0046 get_git_head_revision(GIT_REFSPEC ${PROJECT_NAME_UPPER}_GIT_SHA1_STRING) 0047 get_git_branch(${PROJECT_NAME_UPPER}_GIT_BRANCH_STRING) 0048 if(NOT ${PROJECT_NAME_UPPER}_GIT_SHA1_STRING OR NOT ${PROJECT_NAME_UPPER}_GIT_BRANCH_STRING) 0049 if(EXISTS "${CMAKE_SOURCE_DIR}/GIT_VERSION") 0050 file(READ "${CMAKE_SOURCE_DIR}/GIT_VERSION" _ver) 0051 string(REGEX REPLACE "\n" ";" _ver "${_ver}") 0052 list(GET _ver 0 ${PROJECT_NAME_UPPER}_GIT_SHA1_STRING) 0053 list(GET _ver 1 ${PROJECT_NAME_UPPER}_GIT_BRANCH_STRING) 0054 endif() 0055 endif() 0056 if(${PROJECT_NAME_UPPER}_GIT_SHA1_STRING OR ${PROJECT_NAME_UPPER}_GIT_BRANCH_STRING) 0057 string(SUBSTRING ${${PROJECT_NAME_UPPER}_GIT_SHA1_STRING} 0 7 ${PROJECT_NAME_UPPER}_GIT_SHA1_STRING) 0058 else() 0059 set(${PROJECT_NAME_UPPER}_GIT_SHA1_STRING "") 0060 set(${PROJECT_NAME_UPPER}_GIT_BRANCH_STRING "") 0061 endif() 0062 endmacro() 0063 0064 # Adds ${PROJECT_NAME_UPPER}_UNFINISHED option. If it is ON, unfinished features 0065 # (useful for testing but may confuse end-user) are compiled-in. 0066 # This option is OFF by default. 0067 macro(add_unfinished_features_option) 0068 simple_option(${PROJECT_NAME_UPPER}_UNFINISHED 0069 "Include unfinished features (useful for testing but may confuse end-user)" OFF) 0070 endmacro() 0071 0072 # Sets detailed version information for library co-installability. 0073 # - adds PROJECT_STABLE_VERSION_MAJOR to the lib name 0074 # - sets VERSION to PROJECT_STABLE_VERSION_MAJOR.PROJECT_STABLE_VERSION_MINOR.PROJECT_STABLE_VERSION_PATCH 0075 # - sets SOVERSION to PROJECT_STABLE_VERSION_MAJOR 0076 # (special case for 3.0 < PROJECT_STABLE_VERSION < 4.0: sets SOVERSION to PROJECT_STABLE_VERSION_MAJOR + 1 0077 # to separate from incompatible version 3.0) 0078 # - sets ${_target_upper}_BASE_NAME variable to the final lib name 0079 # - sets ${_target_upper}_BASE_NAME_LOWER variable to the final lib name, lowercase 0080 # - sets ${_target_upper}_INCLUDE_INSTALL_DIR to include dir for library headers 0081 # - (where _target_upper is uppercase ${_target} 0082 macro(set_coinstallable_lib_version _target) 0083 set(_name ${_target}${PROJECT_STABLE_VERSION_MAJOR}) 0084 set(_soversion ${PROJECT_STABLE_VERSION_MAJOR}) 0085 if(${PROJECT_STABLE_VERSION_MAJOR} EQUAL 3) 0086 math(EXPR _soversion "${PROJECT_STABLE_VERSION_MAJOR} + 1") 0087 math(EXPR _version "${PROJECT_STABLE_VERSION_MAJOR} + 1") 0088 else() 0089 set(_soversion ${PROJECT_STABLE_VERSION_MAJOR}) 0090 endif() 0091 set(_version "${_version}.${PROJECT_STABLE_VERSION_MINOR}.${PROJECT_STABLE_VERSION_PATCH}") 0092 set_target_properties(${_target} 0093 PROPERTIES VERSION ${_version} 0094 SOVERSION ${_soversion} 0095 EXPORT_NAME ${_target} 0096 OUTPUT_NAME ${_name} 0097 ) 0098 string(TOUPPER ${_target} _target_upper) 0099 string(TOUPPER ${_target_upper}_BASE_NAME _var) 0100 set(${_var} ${_name}) 0101 string(TOLOWER ${_name} ${_var}_LOWER) 0102 set(${_target_upper}_INCLUDE_INSTALL_DIR ${INCLUDE_INSTALL_DIR}/${_name}) 0103 unset(_soversion) 0104 unset(_version) 0105 unset(_target_upper) 0106 unset(_var) 0107 endmacro()