diff --git a/CMakeLists.txt b/CMakeLists.txt index f91804097..f2a24877a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,275 +1,283 @@ project(labplot2) # minimum 3.2.0 for FindGSL.cmake cmake_minimum_required(VERSION 3.2.0) set(KF5_MIN_VERSION "5.16.0") find_package(ECM 1.3.0 REQUIRED NO_MODULE) set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR}) +# build type: "release", "debug", "debugfull" +string (TOLOWER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE) find_package(Qt5 ${QT_MIN_VERSION} NO_MODULE REQUIRED COMPONENTS Concurrent Gui PrintSupport Sql Svg Widgets Test SerialPort ) #find_package(Qt5 ${QT_MIN_VERSION} NO_MODULE OPTIONAL_COMPONENTS) find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS Archive Completion Config ConfigWidgets CoreAddons DocTools I18n IconThemes KDELibs4Support KIO TextWidgets WidgetsAddons XmlGui OPTIONAL_COMPONENTS NewStuff SyntaxHighlighting ) IF (Qt5SerialPort_FOUND) MESSAGE (STATUS "Found Qt5 SerialPort") ELSE () MESSAGE (STATUS "Qt5 SerialPort not found") ENDIF () IF (KF5NewStuff_FOUND) MESSAGE (STATUS "Found KF5 new stuff") add_definitions (-DHAVE_KF5_NEW_STUFF) ELSE () MESSAGE (STATUS "KF5 new stuff not found") ENDIF () IF (KF5SyntaxHighlighting_FOUND) MESSAGE (STATUS "Found KF5 syntax highlighting") add_definitions (-DHAVE_KF5_SYNTAX_HIGHLIGHTING) ELSE () MESSAGE (STATUS "KF5 syntax highlighting not found") ENDIF () find_package(BISON REQUIRED) include(FeatureSummary) include(ECMInstallIcons) include(KDEInstallDirs) include(KDECompilerSettings) include(KDECMakeSettings) ### compiler flags ###################################### set (GENERIC_FLAGS "-O2 -Wall -Wextra -Wundef -Wpointer-arith -Wcast-align -Wunreachable-code -Wunused -Wswitch-enum -fno-omit-frame-pointer -fstack-protector") set (GENERIC_C_FLAGS "-std=c99 ${GENERIC_FLAGS} -fno-exceptions") # liborigin needs exceptions set (GENERIC_CXX_FLAGS "-std=c++11 ${GENERIC_FLAGS} -fexceptions") if ("${CMAKE_C_COMPILER_ID}" MATCHES "GNU") message(STATUS "GNU C compiler detected, adding compile flags") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${GENERIC_C_FLAGS}") elseif ("${CMAKE_C_COMPILER_ID}" MATCHES "Clang") message(STATUS "Clang C compiler detected, adding compile flags") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_GNU_SOURCE ${GENERIC_C_FLAGS}") # " x" postfix to work around a bug in CMake that causes "MSVC" to translate to something completely different elseif (("${CMAKE_C_COMPILER_ID} x" MATCHES "MSVC") OR MSVC) message(STATUS "MSVC C compiler detected, adding compile flags") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2 -Wall") else () message(STATUS "UNKNOWN C compiler, adding compile flags") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${GENERIC_C_FLAGS}") endif() if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU") message(STATUS "GNU C++ compiler detected, adding compile flags") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GENERIC_CXX_FLAGS}") elseif ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") message(STATUS "Clang C++ compiler detected, adding compile flags") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_GNU_SOURCE ${GENERIC_CXX_FLAGS}") # " x" postfix to work around a bug in CMake that causes "MSVC" to translate to something completely different elseif (("${CMAKE_CXX_COMPILER_ID} x" MATCHES "MSVC") OR MSVC) message(STATUS "MSVC C++ compiler detected, adding compile flags") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2 -Wall") else () message(STATUS "UNKNOWN C++ compiler, adding compile flags") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GENERIC_CXX_FLAGS}") endif () ##########################################################ESC[m add_definitions (${QT_DEFINITIONS} ${QT_QTDBUS_DEFINITIONS}) include_directories (${QDBUS_INCLUDE_DIRS} ${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR}) set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH}) add_definitions (-DLVERSION=\"2.5.0\") # add_definitions (-DLDEBUG='1') set(BUILD_SHARED_LIBS true) add_definitions(-fvisibility=default) cmake_policy(SET CMP0002 OLD) IF (CMAKE_VERSION VERSION_EQUAL "3.3" OR CMAKE_VERSION VERSION_GREATER "3.3") cmake_policy(SET CMP0063 NEW) ENDIF() ### Options ###################################### option(ENABLE_CANTOR "Build with Cantor support" ON) option(ENABLE_FFTW "Build with FFTW support" ON) option(ENABLE_HDF5 "Build with HDF5 support" ON) option(ENABLE_NETCDF "Build with NetCDF support" ON) option(ENABLE_FITS "Build with FITS support" ON) option(ENABLE_LIBORIGIN "Build with liborigin support" ON) ### OS macros #################################### IF (WIN32) add_definitions (-DHAVE_WINDOWS) ENDIF () ### GSL (required) ############################### FIND_PACKAGE(GSL REQUIRED) ### liborigin (included) ############################### IF (ENABLE_LIBORIGIN) add_definitions (-DHAVE_LIBORIGIN) - MESSAGE (STATUS "Origin project import (through internal liborigin) enabled") + + IF (CMAKE_BUILD_TYPE STREQUAL "debug" OR CMAKE_BUILD_TYPE STREQUAL "debugfull") + MESSAGE (STATUS "Origin project import (through internal liborigin) enabled (parser logging enabled)") + SET (ENABLE_ORIGIN_PARSER_LOG TRUE) + ELSE () + MESSAGE (STATUS "Origin project import (through internal liborigin) enabled (parser logging disabled)") + ENDIF () ELSE () - MESSAGE (STATUS "Origin project import (through internal liborigin) disabled") + MESSAGE (STATUS "Origin project import disabled") ENDIF () ### Cantorlibs (optional) ############################### IF (ENABLE_CANTOR) FIND_LIBRARY (CANTOR_LIBS cantorlibs) FIND_PATH (CANTOR_INCLUDE_DIR worksheetaccess.h /usr/include/cantor /usr/local/include/cantor ) IF (CANTOR_LIBS AND CANTOR_INCLUDE_DIR) SET (CANTOR_LIBS_FOUND TRUE) ELSE () SET (CANTOR_LIBS_FOUND FALSE) SET (CANTOR_LIBS "") ENDIF() IF (CANTOR_LIBS_FOUND) MESSAGE (STATUS "Found Cantor Library: ${CANTOR_INCLUDE_DIR} ${CANTOR_LIBS}") add_definitions (-DHAVE_CANTOR_LIBS) ELSE () MESSAGE (STATUS "Cantor Library not found.") ENDIF () ENDIF () ### FFTW (optional) ##################################### IF (ENABLE_FFTW) FIND_LIBRARY (FFTW_LIBRARIES fftw3 PATHS /usr/lib /usr/local/lib ) FIND_PATH (FFTW_INCLUDE_DIR fftw3.h /usr/include /usr/local/include ) IF (FFTW_LIBRARIES AND FFTW_INCLUDE_DIR) SET (FFTW_FOUND TRUE) ELSE () SET (FFTW_FOUND FALSE) ENDIF () IF (FFTW_FOUND) MESSAGE (STATUS "Found FFTW 3 Library: ${FFTW_INCLUDE_DIR} ${FFTW_LIBRARIES}") add_definitions (-DHAVE_FFTW3) ELSE () MESSAGE (STATUS "FFTW 3 Library not found.") ENDIF () ENDIF () ### HDF5 (optional) ############################## IF (ENABLE_HDF5) FIND_PACKAGE(HDF5 COMPONENTS C) IF (HDF5_FOUND) MESSAGE (STATUS "Found Hierarchical Data Format (HDF5) Library: ${HDF5_INCLUDE_DIRS} ${HDF5_LIBRARIES}") add_definitions (-DHAVE_HDF5) include_directories (${HDF5_INCLUDE_DIRS}) ELSE () MESSAGE (STATUS "Hierarchical Data Format (HDF5) Library not found.") ENDIF () ENDIF () ### NETCDF (optional) ############################# IF(ENABLE_NETCDF) FIND_LIBRARY (NETCDF_LIBRARY netcdf PATHS /usr/lib /usr/local/lib ) FIND_PATH (NETCDF_INCLUDE_DIR netcdf.h /usr/include/ /usr/local/include/ ) IF(NETCDF_LIBRARY AND NETCDF_INCLUDE_DIR) SET (NETCDF_FOUND TRUE) ELSE () SET (NETCDF_FOUND FALSE) ENDIF () IF (NETCDF_FOUND) MESSAGE (STATUS "Found Network Common Data Format (NetCDF) Library: ${NETCDF_INCLUDE_DIR} ${NETCDF_LIBRARY}") add_definitions (-DHAVE_NETCDF) ELSE () MESSAGE (STATUS "Network Common Data Format (NetCDF) Library not found.") ENDIF () ENDIF () ### FITS (optional) ############################### IF (ENABLE_FITS) FIND_LIBRARY (CFITSIO_LIBRARY cfitsio PATHS /usr/lib /usr/local/lib $ENV{CFITSIO} ) FIND_PATH (CFITSIO_INCLUDE_DIR fitsio.h /usr/include/ /usr/include/cfitsio/ /usr/local/include/ $ENV{CFITSIO} ) IF(CFITSIO_LIBRARY AND CFITSIO_INCLUDE_DIR) SET (CFITSIO_FOUND TRUE) ELSE() SET (CFITSIO_FOUND FALSE) ENDIF() IF (CFITSIO_FOUND) MESSAGE (STATUS "Found Flexible Image Transport System Data Format (FITS) Library: ${CFITSIO_INCLUDE_DIR} ${CFITSIO_LIBRARY}") add_definitions (-DHAVE_FITS) include_directories (${CFITSIO_INCLUDE_DIR}) ELSE () MESSAGE (STATUS "Flexible Image Transport System Data Format (FITS) Library not found.") ENDIF () ENDIF () ################################################# FIND_PATH (XLOCALE_INCLUDE_DIR xlocale.h /usr/include/ /usr/local/include/ ) IF (XLOCALE_INCLUDE_DIR) add_definitions (-DHAVE_XLOCALE) include_directories (${XLOCALE_INCLUDE_DIR}) ENDIF() -IF (ENABLE_LIBORIGIN) - add_subdirectory(liborigin) -ENDIF () - add_subdirectory(doc) add_subdirectory(icons) add_subdirectory(src) +IF (ENABLE_LIBORIGIN) + add_subdirectory(liborigin) +ENDIF () + # if (BUILD_TESTS) enable_testing(true) add_subdirectory(tests) # endif() install(FILES org.kde.labplot2.appdata.xml DESTINATION ${KDE_INSTALL_METAINFODIR}) feature_summary(WHAT ALL) diff --git a/compile_debug b/compile_debug index 7e84db87e..d35a10512 100755 --- a/compile_debug +++ b/compile_debug @@ -1,11 +1,11 @@ #!/bin/bash BUILDDIR=build_debug if [ ! -d $BUILDDIR ]; then mkdir $BUILDDIR fi cd $BUILDDIR -cmake .. -DCMAKE_BUILD_TYPE=debug -DCMAKE_INSTALL_PREFIX=/usr && make -j 4 +cmake .. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=/usr && make -j 4 diff --git a/liborigin/CMakeLists.txt b/liborigin/CMakeLists.txt index 64ff88082..f69c4e399 100644 --- a/liborigin/CMakeLists.txt +++ b/liborigin/CMakeLists.txt @@ -1,95 +1,33 @@ -# CMakeLists.txt for liborigin -#cmake_minimum_required(VERSION 2.8) - -# c++11 standard -#add_compile_options(-std=c++11) - # library version set(LIBORIGIN_VERSION_MAJOR 3) set(LIBORIGIN_VERSION_MINOR 0) set(LIBORIGIN_VERSION_BUGFIX 0) # compile-time configuration variables to be linked in configure_file(config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h) include_directories(${CMAKE_CURRENT_BINARY_DIR}) # source files set (sources OriginFile.cpp OriginParser.cpp OriginAnyParser.cpp ) # header files for development set (devel-headers ${CMAKE_CURRENT_BINARY_DIR}/config.h OriginObj.h OriginFile.h OriginParser.h tree.hh ) -# LIB_SUFFIX can either be defined at cmake command line: cmake -DLIB_SUFFIX:STRING=64 ... -#if (NOT (LIB_SUFFIX STREQUAL "${LIB_SUFFIX}")) -# message("LIB_SUFFIX not defined.") -# # ... or deduced from size of void ptr -# if (CMAKE_SIZEOF_VOID_P EQUAL 8) -# set( LIB_SUFFIX "64") -# else () -# set( LIB_SUFFIX "") -# endif () -# message("LIB_SUFFIX set to '${LIB_SUFFIX}'") -#endif() - -# Generate a pkg-config file matching this config -#configure_file("${CMAKE_CURRENT_SOURCE_DIR}/liborigin.pc.in" -# "${CMAKE_CURRENT_BINARY_DIR}/liborigin.pc" @ONLY) - -# allow for installation of individual targets -#set(CMAKE_SKIP_INSTALL_ALL_DEPENDENCY true) - -# dynamic library -#add_library (origin SHARED ${sources}) -#set_target_properties(origin PROPERTIES -# VERSION ${LIBORIGIN_VERSION_MAJOR}.${LIBORIGIN_VERSION_MINOR}.${LIBORIGIN_VERSION_BUGFIX} -# SOVERSION ${LIBORIGIN_VERSION_MAJOR} ) - # static library add_library (liborigin-static STATIC ${sources}) set_target_properties(liborigin-static PROPERTIES OUTPUT_NAME "origin" POSITION_INDEPENDENT_CODE ON) # inform on log setting -if (DEFINED GENERATE_CODE_FOR_LOG) - message("File parsing will be logged.") - target_compile_definitions(origin PRIVATE GENERATE_CODE_FOR_LOG=${GENERATE_CODE_FOR_LOG}) - target_compile_definitions(origin-static PRIVATE GENERATE_CODE_FOR_LOG=${GENERATE_CODE_FOR_LOG}) -else() - message("File parsing will NOT be logged. Define GENERATE_CODE_FOR_LOG to activate logging.") +if (ENABLE_ORIGIN_PARSER_LOG) + target_compile_definitions(liborigin-static PRIVATE GENERATE_CODE_FOR_LOG=${ENABLE_ORIGIN_PARSER_LOG}) endif () - -# install libraries -#install(TARGETS origin DESTINATION lib${LIB_SUFFIX} OPTIONAL) -#install(TARGETS origin-static DESTINATION lib${LIB_SUFFIX} OPTIONAL) - -# install headers -#install(FILES ${devel-headers} DESTINATION include/liborigin) - -# install pkg-config file -#install(FILES ${CMAKE_CURRENT_BINARY_DIR}/liborigin.pc DESTINATION lib${LIB_SUFFIX}/pkgconfig) - -# command line util -#add_executable(opj2dat opj2dat.cpp) -#target_link_libraries (opj2dat origin-static) - -#install(TARGETS opj2dat DESTINATION bin OPTIONAL) - -# documentation -#install(FILES COPYING FORMAT README DESTINATION share/doc/liborigin OPTIONAL) -#configure_file(doc/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile) -#find_package(Doxygen) -#if(DOXYGEN_FOUND) -# add_custom_target(doc ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile -# WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) -# set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${CMAKE_CURRENT_BINARY_DIR}/html) -# install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html DESTINATION share/doc/liborigin OPTIONAL) -#endif(DOXYGEN_FOUND)