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)