CMAKE_MINIMUM_REQUIRED(VERSION 3.0.2) PROJECT(fractgen LANGUAGES C CXX) SET(BUILD_MAJOR "2") SET(BUILD_MINOR "1") SET(BUILD_PATCH "8") SET(BUILD_VERSION ${BUILD_MAJOR}.${BUILD_MINOR}.${BUILD_PATCH}) ############################################################################# # INSTALLATION_DIRECTORIES ############################################################################# # See: https://cmake.org/cmake/help/v3.0/module/GNUInstallDirs.html INCLUDE(GNUInstallDirs) ############################################################################# # PACKAGING ############################################################################# SET(CPACK_SOURCE_GENERATOR "TXZ") SET(CPACK_SOURCE_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${BUILD_MAJOR}.${BUILD_MINOR}.${BUILD_PATCH}") SET(CPACK_SOURCE_IGNORE_FILES "${PROJECT_SOURCE_DIR}/${CMAKE_PROJECT_NAME}-*;${PROJECT_SOURCE_DIR}/${CMAKE_PROJECT_NAME}_*;/build/;/.git/;/config.log;/CMakeFiles/;CMakeCache.txt$;.cmake$;.tar.gz$;/_CPack_Packages;/Makefile$;~$;/build-deb;/clean-deb;/filter-empty-entries;/make-symbols;/make-ppa;/make-deb;/debian.conf;/make-rpm;/rpm.conf;${CPACK_SOURCE_IGNORE_FILES}") INCLUDE(CPack) ADD_CUSTOM_TARGET(dist COMMAND ${CMAKE_MAKE_PROGRAM} clean package_source) INCLUDE(CheckIncludeFile) INCLUDE(CheckStructHasMember) ############################################################################# # OS-DEPENDENT ############################################################################# IF (${CMAKE_SYSTEM_NAME} MATCHES "Linux") MESSAGE(STATUS ${CMAKE_SYSTEM_NAME} " supported") ADD_DEFINITIONS("-D_DEFAULT_SOURCE -DLINUX") ELSEIF (${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD") MESSAGE(STATUS ${CMAKE_SYSTEM_NAME} " supported") SET(CMAKE_REQUIRED_INCLUDES "/usr/local/include" "/usr/include") SET(CMAKE_LIBRARY_PATH "/usr/local/lib") INCLUDE_DIRECTORIES("/usr/local/include") ADD_DEFINITIONS("-DFreeBSD") ELSEIF (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") MESSAGE(STATUS ${CMAKE_SYSTEM_NAME} " supported") SET(CMAKE_REQUIRED_INCLUDES "/usr/local/include" "/usr/include" "/usr/local/opt/openssl/include") SET(CMAKE_LIBRARY_PATH "/usr/local/lib") INCLUDE_DIRECTORIES("/usr/local/include" "/usr/local/opt/openssl/include") ADD_DEFINITIONS("-DDARWIN") ELSEIF (${CMAKE_SYSTEM_NAME} MATCHES "NetBSD") MESSAGE(STATUS ${CMAKE_SYSTEM_NAME} " supported") LIST(APPEND neat_headers neat_bsd.h) LIST(APPEND neat_sources neat_bsd.c) SET(CMAKE_REQUIRED_INCLUDES "/usr/pkg/include" "/usr/include" "/usr/local/include") SET(CMAKE_LIBRARY_PATH "/usr/local/lib") INCLUDE_DIRECTORIES("/usr/pkg/include" "/usr/local/include") ADD_DEFINITIONS("-DNetBSD") ELSEIF (${CMAKE_SYSTEM_NAME} MATCHES "NetBSD") MESSAGE(STATUS ${CMAKE_SYSTEM_NAME} " supported") ADD_DEFINITIONS("-DSOLARIS") ELSE() MESSAGE(FATAL_ERROR ${CMAKE_SYSTEM_NAME} " not supported (yet?)") ENDIF() ############################################################################# # REQUIREMENTS ############################################################################# # ###### Qt ################################################################# SET(CMAKE_AUTOMOC ON) FIND_PACKAGE(Qt5 COMPONENTS Core Xml Widgets PrintSupport REQUIRED) # ###### KDE ################################################################ OPTION(ENABLE_KDE "Include KDE version" 0) IF (ENABLE_KDE) FIND_PACKAGE(ECM "1.0.0" NO_MODULE REQUIRED) SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR}) INCLUDE(KDEInstallDirs) INCLUDE(KDECMakeSettings) INCLUDE(KDECompilerSettings NO_POLICY_SCOPE) INCLUDE(KDEFrameworkCompilerSettings NO_POLICY_SCOPE) FIND_PACKAGE(KF5 "5.2.0" REQUIRED COMPONENTS CoreAddons WidgetsAddons XmlGui) ENDIF() INCLUDE(FeatureSummary) feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES) ############################################################################# # COMPILER FLAGS ############################################################################# SET(CMAKE_CXX_STANDARD 14) SET(CMAKE_CXX_STANDARD_REQUIRED ON) SET(CMAKE_CXX_EXTENSIONS OFF) SET(CMAKE_C_STANDARD 11) SET(CMAKE_C_STANDARD_REQUIRED ON) SET(CMAKE_C_EXTENSIONS OFF) SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Werror") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Werror") IF (CMAKE_BUILD_TYPE MATCHES DEBUG) MESSAGE(STATUS "Building in DEBUG mode") # _FORTIFY_SOURCE requires compiling with optimization SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O") ENDIF() ############################################################################# # SUBDIRECTORIES ############################################################################# ADD_SUBDIRECTORY(src)