Warning, /education/labplot/CMakeLists.txt is written in an unsupported language. File is not indexed.
0001 project(labplot2) 0002 0003 # minimum 3.2.0 for FindGSL.cmake 0004 cmake_minimum_required (VERSION 3.2.0 FATAL_ERROR) 0005 set(CMAKE_C_STANDARD 99) 0006 set(CMAKE_C_STANDARD_REQUIRED ON) 0007 set(CMAKE_CXX_STANDARD 11) 0008 set(CMAKE_CXX_STANDARD_REQUIRED ON) 0009 set(CMAKE_CXX_EXTENSIONS OFF) 0010 0011 set(QT_MINIMUM_VERSION 5.6.0) 0012 set(KF5_MIN_VERSION "5.16.0") 0013 0014 set(APPLE_SUPPRESS_X11_WARNING ON) 0015 0016 find_package(ECM REQUIRED NO_MODULE) 0017 set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/ ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR}) 0018 # build type: "release", "debug", "debugfull" 0019 string (TOLOWER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE) 0020 find_package(Qt5 ${QT_MIN_VERSION} NO_MODULE REQUIRED COMPONENTS 0021 Concurrent 0022 Gui 0023 # Qml 0024 # Quick 0025 # QuickWidgets 0026 PrintSupport 0027 Sql 0028 Svg 0029 Widgets 0030 Test 0031 ) 0032 0033 find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS 0034 Archive 0035 Completion 0036 Config 0037 ConfigWidgets 0038 CoreAddons 0039 Crash 0040 DocTools 0041 I18n 0042 IconThemes 0043 KIO 0044 TextWidgets 0045 WidgetsAddons 0046 XmlGui 0047 NewStuffCore 0048 NewStuff 0049 OPTIONAL_COMPONENTS 0050 Service 0051 Parts 0052 SyntaxHighlighting 0053 ) 0054 # TODO: make NewStuff optional? 0055 IF (KF5NewStuff_FOUND) 0056 add_definitions (-DHAVE_KF5_NEW_STUFF) 0057 ELSE () 0058 MESSAGE (STATUS "KF5 new stuff not found") 0059 ENDIF () 0060 # TODO: service not used? 0061 IF (NOT KF5Service_FOUND) 0062 MESSAGE (STATUS "KF5 service not found") 0063 ENDIF () 0064 # TODO: parts not used? 0065 IF (NOT KF5Parts_FOUND) 0066 MESSAGE (STATUS "KF5 parts not found") 0067 ENDIF () 0068 IF (KF5SyntaxHighlighting_FOUND) 0069 add_definitions (-DHAVE_KF5_SYNTAX_HIGHLIGHTING) 0070 ELSE () 0071 MESSAGE (STATUS "KF5 syntax highlighting not found") 0072 ENDIF () 0073 0074 find_package(KUserFeedback) 0075 IF (KUserFeedback_FOUND) 0076 MESSAGE (STATUS "Found KUserFeedback") 0077 add_definitions (-DHAVE_KUSERFEEDBACK) 0078 ELSE () 0079 MESSAGE (STATUS "KUserFeedback not found") 0080 ENDIF () 0081 0082 find_package(BISON REQUIRED) 0083 0084 include(FeatureSummary) 0085 include(ECMAddAppIcon) 0086 include(ECMInstallIcons) 0087 include(KDEInstallDirs) 0088 include(KDECompilerSettings) 0089 include(KDECMakeSettings) 0090 0091 ### compiler flags ###################################### 0092 set (GENERIC_FLAGS "-Wall -Wextra -Wundef -Wpointer-arith -Wunreachable-code -Wunused -Wdeprecated-declarations -fno-omit-frame-pointer -fstack-protector") 0093 set (GENERIC_GNU_FLAGS "-O2 -Wcast-align -Wswitch-enum -fvisibility=default") 0094 set (GENERIC_C_FLAGS "${GENERIC_FLAGS} -fno-exceptions") 0095 # liborigin needs exceptions 0096 set (GENERIC_CXX_FLAGS "${GENERIC_FLAGS} -fexceptions") 0097 0098 if ("${CMAKE_C_COMPILER_ID}" MATCHES "GNU") 0099 message(STATUS "GNU C compiler detected, adding compile flags") 0100 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${GENERIC_C_FLAGS} ${GENERIC_GNU_FLAGS}") 0101 elseif ("${CMAKE_C_COMPILER_ID}" MATCHES "Clang") 0102 message(STATUS "Clang C compiler detected, adding compile flags") 0103 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_GNU_SOURCE ${GENERIC_C_FLAGS} ${GENERIC_GNU_FLAGS}") 0104 elseif ("${CMAKE_C_COMPILER_ID}" MATCHES "Intel") 0105 message(STATUS "Intel C compiler detected, adding compile flags") 0106 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_GNU_SOURCE -O3 ${GENERIC_C_FLAGS}") 0107 elseif ("${CMAKE_C_COMPILER_ID}" MATCHES "PGI") 0108 message(STATUS "PGI C compiler detected, adding compile flags") 0109 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_GNU_SOURCE -O3 -D__GCC_ATOMIC_TEST_AND_SET_TRUEVAL=1 -Minform=inform -Mbounds -Mchkstk") 0110 # " x" postfix to work around a bug in CMake that causes "MSVC" to translate to something completely different 0111 elseif (("${CMAKE_C_COMPILER_ID} x" MATCHES "MSVC") OR MSVC) 0112 message(STATUS "MSVC C compiler detected, adding compile flags") 0113 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2 -W3") 0114 set(MSVC_FOUND TRUE) 0115 else () 0116 message(STATUS "UNKNOWN C compiler, adding compile flags") 0117 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${GENERIC_C_FLAGS}") 0118 endif() 0119 0120 if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU") 0121 message(STATUS "GNU C++ compiler detected, adding compile flags") 0122 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GENERIC_CXX_FLAGS} ${GENERIC_GNU_FLAGS}") 0123 elseif ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") 0124 message(STATUS "Clang C++ compiler detected, adding compile flags") 0125 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_GNU_SOURCE ${GENERIC_CXX_FLAGS} ${GENERIC_GNU_FLAGS}") 0126 elseif ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Intel") 0127 message(STATUS "Intel C++ compiler detected, adding compile flags") 0128 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_GNU_SOURCE -std=c++11 ${GENERIC_CXX_FLAGS}") 0129 #-std=c++0x comes with cmake's general flags, deprecated in icc, remove it 0130 string(REPLACE "-std=c++0x" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) 0131 elseif ("${CMAKE_CXX_COMPILER_ID}" MATCHES "PGI") 0132 message(STATUS "PGI C++ compiler detected, adding compile flags") 0133 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_GNU_SOURCE -O3 -std=c++11 -D__GCC_ATOMIC_TEST_AND_SET_TRUEVAL=1 -Minform=inform -Mbounds -Mchkstk") 0134 # " x" postfix to work around a bug in CMake that causes "MSVC" to translate to something completely different 0135 elseif (("${CMAKE_CXX_COMPILER_ID} x" MATCHES "MSVC") OR MSVC) 0136 message(STATUS "MSVC C++ compiler detected, adding compile flags") 0137 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2 -W3 -DPSAPI_VERSION=1") 0138 set(MSVC_FOUND TRUE) 0139 else () 0140 message(STATUS "UNKNOWN C++ compiler, adding compile flags") 0141 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GENERIC_CXX_FLAGS}") 0142 endif () 0143 0144 ##########################################################ESC[m 0145 0146 0147 add_definitions (${QT_DEFINITIONS} ${QT_QTDBUS_DEFINITIONS}) 0148 include_directories (${QDBUS_INCLUDE_DIRS} ${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR}) 0149 set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH}) 0150 add_definitions (-DLVERSION=\"2.8.2\") 0151 add_definitions (-DCXX_COMPILER=\"${CMAKE_CXX_COMPILER_ID}\ ${CMAKE_CXX_COMPILER_VERSION}\") 0152 add_definitions (-DCXX_COMPILER_FLAGS=\"${CMAKE_CXX_FLAGS}\") 0153 add_definitions (-DQT_NO_URL_CAST_FROM_STRING) 0154 set(BUILD_SHARED_LIBS true) 0155 0156 #cmake_policy(SET CMP0002 OLD) 0157 IF (CMAKE_VERSION VERSION_EQUAL "3.3" OR CMAKE_VERSION VERSION_GREATER "3.3") 0158 cmake_policy(SET CMP0063 NEW) 0159 ENDIF() 0160 0161 if (CMAKE_VERSION VERSION_GREATER "3.5") 0162 set(ENABLE_CLANG_TIDY OFF CACHE BOOL "Add clang-tidy automatically to builds") 0163 if (ENABLE_CLANG_TIDY) 0164 find_program (CLANG_TIDY_EXE NAMES "clang-tidy" PATHS /usr/bin) 0165 if (CLANG_TIDY_EXE) 0166 message(STATUS "Clang-tidy supported, found and enabled: ${CLANG_TIDY_EXE}") 0167 set(CLANG_TIDY_CHECKS "modernize-*,-modernize-use-trailing-return-type,clang-analyzer-*,-clang-analyzer-cplusplus*") 0168 #set(CLANG_TIDY_CHECKS "-*,modernize-*,clang-analyzer-*") 0169 # -extra-arg=--std=c++11 0170 set(CMAKE_CXX_CLANG_TIDY "${CLANG_TIDY_EXE};-checks=${CLANG_TIDY_CHECKS};-header-filter='${CMAKE_SOURCE_DIR}/*'" 0171 CACHE STRING "" FORCE) 0172 else() 0173 message(AUTHOR_WARNING "clang-tidy not found!") 0174 set(CMAKE_CXX_CLANG_TIDY "" CACHE STRING "" FORCE) # delete it 0175 endif() 0176 else() 0177 message(STATUS "Clang-tidy supported but disabled") 0178 endif() 0179 endif() 0180 0181 ### Options ###################################### 0182 option(ENABLE_CANTOR "Build with Cantor support" ON) 0183 option(ENABLE_FFTW "Build with FFTW support" ON) 0184 option(ENABLE_HDF5 "Build with HDF5 support" ON) 0185 option(ENABLE_NETCDF "Build with NetCDF support" ON) 0186 option(ENABLE_FITS "Build with FITS support" ON) 0187 option(ENABLE_LIBCERF "Build with libcerf support" ON) 0188 option(ENABLE_LIBORIGIN "Build with liborigin support" ON) 0189 option(ENABLE_ROOT "Build with ROOT (CERN) support" ON) 0190 option(ENABLE_READSTAT "Build with ReadStat support" OFF) 0191 option(ENABLE_TESTS "Build with tests" ON) 0192 option(ENABLE_MQTT "Build with MQTT support" ON) 0193 option(ENABLE_QTSERIALPORT "Build with QtSerialPort support" ON) 0194 option(ENABLE_REPRODUCIBLE "Enable reproducible builds" OFF) 0195 0196 ### OS macros #################################### 0197 IF (WIN32) 0198 add_definitions (-DHAVE_WINDOWS) 0199 find_library (PSAPI Psapi) 0200 message (STATUS "PSAPI: ${PSAPI}") 0201 ENDIF () 0202 0203 ### GSL (required) ############################### 0204 FIND_PACKAGE(GSL REQUIRED) 0205 0206 ### liborigin (included) ############################### 0207 IF (ENABLE_LIBORIGIN) 0208 add_definitions (-DHAVE_LIBORIGIN) 0209 0210 IF (CMAKE_BUILD_TYPE STREQUAL "debug" OR CMAKE_BUILD_TYPE STREQUAL "debugfull") 0211 MESSAGE (STATUS "Origin project import (through internal liborigin) enabled (parser logging enabled)") 0212 SET (ENABLE_ORIGIN_PARSER_LOG TRUE) 0213 ELSE () 0214 MESSAGE (STATUS "Origin project import (through internal liborigin) enabled (parser logging disabled)") 0215 ENDIF () 0216 ELSE () 0217 MESSAGE (STATUS "Origin project import DISABLED") 0218 ENDIF () 0219 0220 ### Cantorlibs (optional) ############################### 0221 IF (ENABLE_CANTOR) 0222 FIND_PACKAGE (Cantor) 0223 SET_PACKAGE_PROPERTIES(Cantor PROPERTIES 0224 URL "https://edu.kde.org/cantor/" 0225 ) 0226 IF (Cantor_FOUND) 0227 MESSAGE (STATUS "Found Cantor Library ${Cantor_VERSION}") 0228 0229 IF (${Cantor_VERSION} VERSION_GREATER "19.11") 0230 add_definitions (-DHAVE_CANTOR_LIBS) 0231 set(RECENT_CANTOR TRUE) 0232 FIND_PACKAGE(Poppler "0.62.0" REQUIRED COMPONENTS Qt5) 0233 ELSE () 0234 MESSAGE (STATUS "Cantor Library ${Cantor_VERSION} TOO OLD. Minimum usable version is 19.12") 0235 ENDIF () 0236 IF (${Cantor_VERSION} VERSION_GREATER "20.08.9") 0237 add_definitions (-DHAVE_NEW_CANTOR_LIBS) 0238 ENDIF () 0239 ELSE () 0240 MESSAGE (STATUS "Cantor Library NOT FOUND") 0241 ENDIF () 0242 ELSE () 0243 MESSAGE (STATUS "Cantor Library DISABLED") 0244 ENDIF () 0245 0246 ### FFTW (optional) ##################################### 0247 IF (ENABLE_FFTW) 0248 FIND_PACKAGE (FFTW3) 0249 IF (FFTW3_FOUND) 0250 add_definitions (-DHAVE_FFTW3) 0251 ELSE () 0252 MESSAGE (STATUS "FFTW 3 Library NOT FOUND") 0253 ENDIF () 0254 ELSE () 0255 MESSAGE (STATUS "FFTW 3 Library DISABLED") 0256 ENDIF () 0257 0258 ### HDF5 (optional) ############################## 0259 IF (ENABLE_HDF5) 0260 FIND_PACKAGE(HDF5 COMPONENTS C) 0261 SET_PACKAGE_PROPERTIES (HDF5 PROPERTIES 0262 DESCRIPTION "Reading and writing self describing array data" 0263 URL "https://www.hdfgroup.org/solutions/hdf5/" 0264 ) 0265 IF (HDF5_FOUND) 0266 add_definitions (-DHAVE_HDF5) 0267 IF (MSVC_FOUND) 0268 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DH5_BUILT_AS_DYNAMIC_LIB") 0269 ENDIF () 0270 IF (HDF5_VERSION VERSION_GREATER "1.9") 0271 add_definitions (-DHAVE_AT_LEAST_HDF5_1_10_0) 0272 ENDIF () 0273 IF (HDF5_VERSION VERSION_GREATER "1.10.0.1") 0274 add_definitions (-DHAVE_AT_LEAST_HDF5_1_10_0) 0275 add_definitions (-DHAVE_AT_LEAST_HDF5_1_10_1) 0276 ENDIF () 0277 include_directories (${HDF5_INCLUDE_DIRS}) 0278 ELSE () 0279 MESSAGE (STATUS "Hierarchical Data Format (HDF5) Library NOT FOUND") 0280 ENDIF () 0281 ELSE () 0282 MESSAGE (STATUS "Hierarchical Data Format (HDF5) Library DISABLED") 0283 ENDIF () 0284 0285 ### NETCDF (optional) ############################# 0286 IF (ENABLE_NETCDF) 0287 FIND_PACKAGE(netCDF) 0288 SET_PACKAGE_PROPERTIES(netCDF PROPERTIES 0289 DESCRIPTION "Interfaces for array-oriented data access" 0290 URL "https://www.unidata.ucar.edu/software/netcdf/" 0291 ) 0292 IF (netCDF_FOUND) 0293 add_definitions (-DHAVE_NETCDF) 0294 ELSE () 0295 MESSAGE (STATUS "Network Common Data Format (NetCDF) Library NOT FOUND") 0296 ENDIF () 0297 ELSE () 0298 MESSAGE (STATUS "Network Common Data Format (NetCDF) Library DISABLED") 0299 ENDIF () 0300 0301 ### MQTT (optional) ############################### 0302 IF (ENABLE_MQTT) 0303 # ATTENTION: unit test uses qWaitFor() which needs Qt >= 5.10 0304 # avoid warning for the moment using QUIET 0305 find_package(Qt5Mqtt ${QT_MIN_VERSION} NO_MODULE) 0306 IF (Qt5Mqtt_FOUND) 0307 MESSAGE (STATUS "Found MQTT Library") 0308 add_definitions (-DHAVE_MQTT) 0309 ELSE () 0310 MESSAGE (STATUS "MQTT Library NOT FOUND") 0311 ENDIF () 0312 ELSE () 0313 MESSAGE (STATUS "MQTT Library DISABLED") 0314 ENDIF () 0315 0316 ### QtSerialPort (optional) ############################### 0317 IF (ENABLE_QTSERIALPORT) 0318 find_package(Qt5SerialPort ${QT_MIN_VERSION} NO_MODULE) 0319 SET_PACKAGE_PROPERTIES (Qt5SerialPort PROPERTIES 0320 DESCRIPTION "Qt Serial Port library" 0321 URL "https://doc.qt.io/qt-5/qtserialport-index.html" 0322 PURPOSE "Support basic functionality of serial ports.") 0323 IF (Qt5SerialPort_FOUND) 0324 MESSAGE (STATUS "Found Qt5SerialPort Library") 0325 add_definitions (-DHAVE_QTSERIALPORT) 0326 ELSE () 0327 MESSAGE (STATUS "Qt5SerialPort Library NOT FOUND") 0328 ENDIF () 0329 ELSE () 0330 MESSAGE (STATUS "Qt5SerialPort Library DISABLED") 0331 ENDIF () 0332 0333 ### FITS (optional) ############################### 0334 IF (ENABLE_FITS) 0335 FIND_PACKAGE (CFitsio) 0336 SET_PACKAGE_PROPERTIES (CFitsio PROPERTIES 0337 DESCRIPTION "FITS IO Library" 0338 URL "https://heasarc.gsfc.nasa.gov/fitsio/fitsio.html" 0339 PURPOSE "Support for the FITS (Flexible Image Transport System) data format.") 0340 IF (CFITSIO_FOUND) 0341 add_definitions (-DHAVE_FITS) 0342 include_directories (${CFITSIO_INCLUDE_DIR}) 0343 ELSE () 0344 MESSAGE (STATUS "Flexible Image Transport System Data Format (FITS) Library NOT FOUND") 0345 ENDIF () 0346 ELSE () 0347 MESSAGE (STATUS "Flexible Image Transport System Data Format (FITS) Library DISABLED") 0348 ENDIF () 0349 0350 ### LIBCERF (optional) ############################# 0351 IF (ENABLE_LIBCERF) 0352 FIND_PACKAGE (LIBCERF) 0353 IF (LIBCERF_FOUND) 0354 add_definitions (-DHAVE_LIBCERF) 0355 ELSE () 0356 MESSAGE (STATUS "libcerf library NOT FOUND") 0357 ENDIF () 0358 ELSE () 0359 MESSAGE (STATUS "libcerf library DISABLED") 0360 ENDIF () 0361 0362 ### ROOT (optional) ############################# 0363 IF (ENABLE_ROOT) 0364 FIND_PACKAGE(ZLIB) 0365 SET_PACKAGE_PROPERTIES (ZLIB PROPERTIES 0366 DESCRIPTION "General purpose compression library" 0367 URL "https://www.zlib.net/" 0368 ) 0369 FIND_PACKAGE(LZ4) 0370 IF (ZLIB_FOUND AND LZ4_FOUND) 0371 MESSAGE (STATUS "Found ZIP libraries ZLIB and LZ4 (needed for ROOT importer)") 0372 add_definitions (-DHAVE_ZIP) 0373 ELSE () 0374 MESSAGE (STATUS "ZIP libraries ZLIB and LZ4 (needed for ROOT importer) NOT FOUND") 0375 ENDIF () 0376 ELSE () 0377 MESSAGE (STATUS "ROOT (CERN) importer DISABLED") 0378 ENDIF () 0379 0380 ### ReadStat (optional) ############################# 0381 # TODO: disabled on Windows until tested 0382 IF (ENABLE_READSTAT AND NOT WIN32) 0383 FIND_PACKAGE (ReadStat) 0384 IF (NOT READSTAT_FOUND) 0385 MESSAGE (STATUS "ReadStat library NOT FOUND. Building own version") 0386 set(BUILD_READSTAT TRUE) 0387 set(READSTAT_LIBRARY ${CMAKE_BINARY_DIR}/src/3rdparty/install/lib/libreadstat.a) 0388 ENDIF () 0389 add_definitions (-DHAVE_READSTAT) 0390 ELSE () 0391 MESSAGE (STATUS "ReadStat support DISABLED") 0392 ENDIF () 0393 ################################################# 0394 IF (ENABLE_REPRODUCIBLE) 0395 add_definitions (-DREPRODUCIBLE_BUILD) 0396 message(STATUS "Reproducable build ENABLED") 0397 ELSE () 0398 message(STATUS "Reproducable build DISABLED") 0399 ENDIF () 0400 ################################################# 0401 ################################################# 0402 include(CheckFunctionExists) 0403 0404 CHECK_FUNCTION_EXISTS(random HAVE_RANDOM_FUNCTION) 0405 ################################################# 0406 FIND_PATH (XLOCALE_INCLUDE_DIR xlocale.h 0407 /usr/include 0408 /usr/local/include 0409 ) 0410 IF (XLOCALE_INCLUDE_DIR) 0411 add_definitions (-DHAVE_XLOCALE) 0412 include_directories (${XLOCALE_INCLUDE_DIR}) 0413 ENDIF() 0414 0415 add_subdirectory(data) 0416 add_subdirectory(icons) 0417 add_subdirectory(src) 0418 add_subdirectory(doc) 0419 0420 IF (ENABLE_LIBORIGIN) 0421 add_subdirectory(liborigin) 0422 ENDIF () 0423 0424 if (ENABLE_TESTS) 0425 enable_testing(true) 0426 add_subdirectory(tests) 0427 endif() 0428 0429 install(FILES org.kde.labplot2.appdata.xml DESTINATION ${KDE_INSTALL_METAINFODIR}) 0430 feature_summary(WHAT ALL) 0431 0432 find_package(KF5I18n CONFIG REQUIRED) 0433 ki18n_install(po) 0434 find_package(KF5DocTools CONFIG REQUIRED) 0435 kdoctools_install(po)