Warning, /sdk/umbrello/CMakeLists.txt is written in an unsupported language. File is not indexed.
0001 cmake_minimum_required(VERSION 3.16.0 FATAL_ERROR) 0002 0003 project(umbrello) 0004 0005 if(POLICY CMP0028) 0006 cmake_policy(SET CMP0028 OLD) 0007 endif() 0008 0009 if(POLICY CMP0057) 0010 cmake_policy(SET CMP0057 NEW) 0011 endif() 0012 0013 # KDE Application Version, managed by release script 0014 set (RELEASE_SERVICE_VERSION_MAJOR "23") 0015 set (RELEASE_SERVICE_VERSION_MINOR "03") 0016 set (RELEASE_SERVICE_VERSION_MICRO "80") 0017 0018 set(UMBRELLO_VERSION_MAJOR "2") 0019 set(UMBRELLO_VERSION_MINOR "38") 0020 if (RELEASE_SERVICE_VERSION_MICRO GREATER_EQUAL 70) 0021 math(EXPR UMBRELLO_VERSION_MINOR "${UMBRELLO_VERSION_MINOR}-1") 0022 endif() 0023 0024 set(UMBRELLO_VERSION_PATCH ${RELEASE_SERVICE_VERSION_MICRO}) 0025 0026 option(BUILD_APIDOC "Create api documentation" ON) 0027 0028 option(BUILD_ICONS "Create icons from svg source" OFF) 0029 0030 option(BUILD_CURSOR_ICONS "Create cursor icons from svg source" OFF) 0031 0032 option(BUILD_ICONS_INTO_SIZE_RELATED_DIRS "place icons into separate directories (for debugging purpose)" OFF) 0033 0034 option(BUILD_PHP_IMPORT "Build with php import support" ON) 0035 0036 option(BUILD_QCH "Build with QCH support" ON) 0037 0038 # where to look first for cmake modules, before ${CMAKE_ROOT}/Modules/ is checked 0039 list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules) 0040 include(Macros) 0041 0042 set(CMAKE_AUTORCC ON) 0043 0044 if(CMAKE_COMPILER_IS_GNUCXX) 0045 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-delete-null-pointer-checks") 0046 # TODO: after removing kdelibs4support this could also be removed 0047 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated-declarations") 0048 endif() 0049 0050 set(CMAKE_CXX_STANDARD 17) 0051 set(CMAKE_CXX_STANDARD_REQUIRED YES) 0052 0053 set(APP_SUFFIX 5) 0054 set(LIB_PREFIX Qt5::) 0055 set(KF5_MIN_VERSION "5.2.0") 0056 # we need some parts of the ECM CMake helpers 0057 find_package(ECM ${KF5_MIN_VERSION} NO_MODULE REQUIRED) 0058 0059 list(APPEND CMAKE_MODULE_PATH ${ECM_MODULE_PATH}) 0060 0061 include(KDEInstallDirs) 0062 include(KDECompilerSettings NO_POLICY_SCOPE) 0063 include(KDECMakeSettings) 0064 include(FeatureSummary) 0065 include(ECMInstallIcons) 0066 include(ECMSetupVersion) 0067 include(ECMOptionalAddSubdirectory) 0068 include(ECMAddAppIcon) 0069 include(ECMAddTests) 0070 set(QT_MIN_VERSION "5.2.0") 0071 set(KDEV_MIN_VERSION 5.1.2) 0072 set(KDEV_SOURCE_DIR lib/kdev5-php) 0073 set(KDEV_COMPONENTS KDev::Interfaces KDev::Language KDev::Shell) 0074 if(NOT QTQCHDIR) 0075 set(QTQCHDIR ${KDE_INSTALL_QTQCHDIR}) 0076 endif() 0077 0078 # search packages used by Qt 0079 find_package(Qt5 ${QT_MIN_VERSION} REQUIRED COMPONENTS 0080 Core 0081 Gui 0082 PrintSupport 0083 Svg 0084 Test 0085 Widgets 0086 Xml 0087 ) 0088 0089 # search packages used by KDE 0090 find_package(KF5 REQUIRED COMPONENTS 0091 Archive 0092 Completion 0093 Config 0094 CoreAddons 0095 Crash 0096 DocTools 0097 I18n 0098 IconThemes 0099 KIO 0100 TextEditor 0101 WidgetsAddons 0102 WindowSystem 0103 XmlGui 0104 ) 0105 0106 if(CMAKE_COMPILER_IS_GNUCXX) 0107 string(REPLACE "-Wsuggest-override" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) 0108 endif() 0109 0110 if(BUILD_PHP_IMPORT) 0111 find_package(KDevelop-PG-Qt) 0112 find_package(KDevPlatform ${KDEV_MIN_VERSION} COMPONENTS ${KDEV_COMPONENTS}) 0113 endif() 0114 if(KDEVPGQT_FOUND AND KDEVPLATFORM_FOUND) 0115 message(STATUS "requirements available - enable building php code import") 0116 include_directories( 0117 ${KDEVPGQT_INCLUDE_DIR} 0118 ${KDEVPLATFORM_INCLUDE_DIR} 0119 ) 0120 set(BUILD_PHP_IMPORT 1) 0121 add_definitions( 0122 -DENABLE_PHP_IMPORT 0123 ) 0124 add_subdirectory(lib/kdevplatform) 0125 find_package(KDevPHP) 0126 if(NOT KDevPHP_FOUND) 0127 set(NO_INSTALL 1) 0128 set(BUILD_PARSER_ONLY 1) 0129 set(BUILD_PHP_IMPORT 1) 0130 add_definitions( 0131 -DKDEVPHPPARSER_EXPORT= 0132 ) 0133 include_directories( 0134 ${CMAKE_SOURCE_DIR}/${KDEV_SOURCE_DIR} 0135 ${CMAKE_BINARY_DIR}/${KDEV_SOURCE_DIR} 0136 ) 0137 add_subdirectory(${KDEV_SOURCE_DIR}) 0138 endif() 0139 else() 0140 set(BUILD_PHP_IMPORT 0) 0141 endif() 0142 0143 set(UMBRELLO_DATA_INSTALL_DIR ${DATA_INSTALL_DIR}/umbrello${APP_SUFFIX}) 0144 0145 set(BUILD_UNITTESTS 1) 0146 0147 ki18n_install(po) 0148 kdoctools_install(po) 0149 0150 if(POLICY CMP0071) 0151 cmake_policy(SET CMP0071 OLD) 0152 endif() 0153 0154 # use some compile flags 0155 add_definitions( 0156 -DQT_NO_SIGNAL_SLOTS_KEYWORDS 0157 -DQT_NO_URL_CAST_FROM_STRING 0158 ) 0159 0160 # set default umbrello version 0161 # umbrello version could be overridden by cmake command line using -DUMBRELLO_VERSION_STRING=major.minor.patch 0162 if(NOT UMBRELLO_VERSION_STRING) 0163 set(UMBRELLO_VERSION_STRING "${UMBRELLO_VERSION_MAJOR}.${UMBRELLO_VERSION_MINOR}.${UMBRELLO_VERSION_PATCH}") 0164 if(EXISTS ${CMAKE_SOURCE_DIR}/.git) 0165 execute_process( 0166 COMMAND git rev-parse --short HEAD 0167 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} 0168 OUTPUT_VARIABLE _hash 0169 ) 0170 if(_hash) 0171 string(REPLACE "\n" "" hash ${_hash}) 0172 set(UMBRELLO_VERSION_STRING "${UMBRELLO_VERSION_STRING}-${hash}") 0173 endif() 0174 endif() 0175 endif() 0176 set(APPLICATIONS_VERSION_STRING "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE_VERSION_MINOR}.${RELEASE_SERVICE_VERSION_MICRO}") 0177 0178 message(STATUS "Using umbrello version ${UMBRELLO_VERSION_STRING}") 0179 add_definitions(-DUMBRELLO_VERSION_STRING="${UMBRELLO_VERSION_STRING}") 0180 add_definitions(-DAPPLICATIONS_VERSION_STRING="${APPLICATIONS_VERSION_STRING}") 0181 0182 message(STATUS "Using automoc4 version ${AUTOMOC4_VERSION}") 0183 message(STATUS "Using cmake version ${CMAKE_VERSION}") 0184 0185 find_package(LibXslt) 0186 set_package_properties(LibXslt PROPERTIES 0187 DESCRIPTION "A library to transform XMLfiles into other XML files." 0188 URL "http://xmlsoft.org/XSLT" 0189 TYPE REQUIRED) 0190 0191 find_package(LibXml2) 0192 set_package_properties(LibXml2 PROPERTIES 0193 DESCRIPTION "Libraries used to develop XML applications." 0194 URL "http://xmlsoft.org" 0195 TYPE REQUIRED) 0196 0197 include_directories( 0198 ${CMAKE_BINARY_DIR} 0199 ) 0200 0201 # 0202 # Unstable features should not be enabled in stable branches 0203 # This macro limits unstable feature to development branches 0204 # by only adding -DENABLE_<name> to the compile command when 0205 # the patch level is >= 70 which includes releases from master 0206 # beta and rc releases. On cmake configure time a related status 0207 # note is displayed. 0208 # 0209 # syntax: add_unstable_feature(<name>) 0210 # 0211 # In code wrap feature related code with 0212 # 0213 # #ifdef ENABLE_<name> 0214 # <feature code> 0215 # #endif 0216 # 0217 macro(add_unstable_feature name) 0218 if(UMBRELLO_VERSION_PATCH GREATER 69) 0219 add_definitions(-DENABLE_${name}) 0220 set(ENABLE_${name} 1) 0221 message(STATUS "Enable unstable feature ${name} - use '#ifdef ENABLE_${name}' in related code") 0222 else() 0223 set(ENABLE_${name} 0) 0224 message(STATUS "Disable unstable feature ${name}") 0225 endif() 0226 endmacro(add_unstable_feature) 0227 0228 add_unstable_feature(WIDGET_SHOW_DOC) # show documentation in classes ticket xxx 0229 add_unstable_feature(NEW_CODE_GENERATORS) # new c++ code generator 0230 add_unstable_feature(UML_OBJECTS_WINDOW) # objects dock window 0231 add_unstable_feature(XMIRESOLUTION) # see https://bugs.kde.org/show_bug.cgi?id=90103 0232 add_unstable_feature(COMBINED_STATE_DIRECT_EDIT) # experimental feature 0233 0234 # Current object diagram implementation does not follow UML 1.4 standard 0235 # because of using umbrello specific XMI tag (UML:InstanceAttribute). 0236 add_unstable_feature(OBJECT_DIAGRAM) # see https://bugs.kde.org/show_bug.cgi?id=123633 0237 0238 # requires cmake >= 3.9.6 0239 find_package(Doxygen OPTIONAL_COMPONENTS dot) 0240 if(DOXYGEN_FOUND AND BUILD_APIDOC) 0241 message(STATUS "found doxygen package") 0242 find_program(QHELPGENERATOR_EXECUTABLE NAMES qhelpgenerator qhelpgenerator-qt5) 0243 message(STATUS "found qhelpgenerator ${QHELPGENERATOR_EXECUTABLE}") 0244 set(DOXYGEN_ABBREVIATE_BRIEF "The $name class" "The $name widget") 0245 set(DOXYGEN_CALL_GRAPH YES) 0246 set(DOXYGEN_EXCLUDE_PATTERNS */lib/*) 0247 set(DOXYGEN_EXTRACT_ALL YES) 0248 set(DOXYGEN_EXTRACT_PACKAGE YES) 0249 set(DOXYGEN_EXTRACT_PRIVATE YES) 0250 set(DOXYGEN_EXTRACT_STATIC YES) 0251 set(DOXYGEN_GENERATE_HTMLHELP YES) 0252 set(DOXYGEN_HAVE_DOT ${DOXYGEN_HAVE_DOT}) 0253 set(DOXYGEN_DOT_IMAGE_FORMAT svg) 0254 set(DOXYGEN_MARKDOWN_SUPPORT NO) 0255 set(DOT_GRAPH_MAX_NODES 0) 0256 set(DOXYGEN_MAX_DOT_GRAPH_DEPTH 0) 0257 set(DOXYGEN_PROJECT_BRIEF "Umbrello UML Modeller is a Unified Modelling Language (UML) diagram program based on KDE Technology") 0258 set(DOXYGEN_PROJECT_NUMBER ${UMBRELLO_VERSION_STRING}) 0259 #set(DOXYGEN_PROJECT_LOGO ${CMAKE_SOURCE_DIR}/umbrello/pics/global/hi32-apps-umbrello.png) 0260 set(DOXYGEN_SOURCE_BROWSER NO) 0261 set(DOXYGEN_UML_LOOK YES) 0262 set(DOXYGEN_USE_PDFLATEX NO) 0263 set(DOXYGEN_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/apidoc) 0264 0265 if(BUILD_QCH AND QHELPGENERATOR_EXECUTABLE) 0266 set(DOXYGEN_GENERATE_QHP YES) 0267 set(DOXYGEN_QCH_FILE ${CMAKE_BINARY_DIR}/umbrello.qch) 0268 set(DOXYGEN_QHP_NAMESPACE org.kde.umbrello) 0269 set(DOXYGEN_QHG_LOCATION ${QHELPGENERATOR_EXECUTABLE}) 0270 set(DOXYGEN_QHP_VIRTUAL_FOLDER doc) 0271 install(FILES ${DOXYGEN_QCH_FILE} DESTINATION ${QTQCHDIR} COMPONENT Devel) 0272 endif() 0273 0274 doxygen_add_docs(apidoc 0275 ALL 0276 ${CMAKE_SOURCE_DIR} 0277 COMMENT "generating api doc" 0278 ) 0279 0280 install(DIRECTORY ${CMAKE_BINARY_DIR}/apidoc DESTINATION ${UMBRELLO_DATA_INSTALL_DIR}) 0281 endif() 0282 0283 if(LIBXSLT_FOUND AND LIBXML2_FOUND) 0284 add_subdirectory(umbrello) 0285 add_subdirectory(doc) 0286 add_subdirectory(tools) 0287 endif(LIBXSLT_FOUND AND LIBXML2_FOUND) 0288 0289 add_subdirectory(maintainer) 0290 0291 # for automatic unit tests 0292 if(BUILD_UNITTESTS) 0293 ecm_optional_add_subdirectory(unittests) 0294 endif() 0295 0296 feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)