project( okteta ) cmake_minimum_required(VERSION 2.8.11.1) set(QT_MIN_VERSION "5.2.0") find_package(ECM 0.0.8 REQUIRED NO_MODULE) # where to look first for cmake modules, before ${CMAKE_ROOT}/Modules/ is checked set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR}) include(ECMInstallIcons) include(FeatureSummary) include(GenerateExportHeader) include(KDEInstallDirs) include(KDECMakeSettings) include(KDECompilerSettings) find_package(Qt5 REQUIRED NO_MODULE COMPONENTS Core Network Designer PrintSupport Script ScriptTools Widgets Xml OPTIONAL_COMPONENTS Test ) if (NOT Qt5Test_FOUND) message(STATUS "Qt5Test not found, unit tests will not be built.") endif() find_package(KF5 CONFIG REQUIRED COMPONENTS Bookmarks Codecs Completion ConfigWidgets DBusAddons DocTools I18n KCMUtils KIO NewStuff Parts PrintUtils Service Solid WidgetsAddons XmlGui ) if( UNIX ) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -std=c++0x -fno-rtti") endif() find_package(QCA2) set_package_properties(QCA2 PROPERTIES DESCRIPTION "Qt Cryptographic Architecture" URL "http://delta.affinix.com/qca" TYPE OPTIONAL PURPOSE "Needed for most of the algorithms of the checksum tool") # control build scope # TODO: examples and templates not internal need headers and libs as installed # so they can be only build after the installation was done # How to handle this best, as in: they are per default always build after an install? # set( KASTEN_BUILD_EXAMPLES NOT OMIT_EXAMPLES ) # set( OKTETA_BUILD_EXAMPLES NOT OMIT_EXAMPLES ) set( KASTEN_BUILD_INTERNAL_EXAMPLES NOT OMIT_INTERNAL_EXAMPLES ) set( OKTETA_BUILD_INTERNAL_EXAMPLES NOT OMIT_INTERNAL_EXAMPLES ) # set( KASTEN_BUILD_TEMPLATES NOT SKIPTEMPLATES ) # set( OKTETA_BUILD_TEMPLATES NOT SKIPTEMPLATES ) set( KASTEN_BUILD_INTERNAL_TEMPLATES NOT OMIT_INTERNAL_TEMPLATES ) set( OKTETA_BUILD_INTERNAL_TEMPLATES NOT OMIT_INTERNAL_TEMPLATES ) # mobile needs option(OKTETA_MOBILE_UI "Build UI for mobile devices instead of for desktops" FALSE) if (OKTETA_MOBILE_UI) find_package(Qt5Quick REQUIRED) add_definitions( -DOKTETA_MOBILE_UI ) endif (OKTETA_MOBILE_UI) add_definitions( -DQT_USE_QSTRINGBUILDER -DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_FROM_BYTEARRAY ) # helper libs add_subdirectory( libs ) add_subdirectory( doc ) set( OKTETALIBS_MAJOR_VERSION 0 ) set( OKTETALIBS_MINOR_VERSION 9 ) set( OKTETALIBS_PATCHLEVEL_VERSION 0 ) set( OKTETALIBS_VERSION "${OKTETALIBS_MAJOR_VERSION}.${OKTETALIBS_MINOR_VERSION}.${OKTETALIBS_PATCHLEVEL_VERSION}" ) set( OKTETALIBS_ABI_VERSION 2 ) set( OKTETALIBS_INCLUDE_INSTALL_DIR ${INCLUDE_INSTALL_DIR}/okteta ) #${OKTETALIBS_ABI_VERSION} ) set( OKTETALIBS_CCINCLUDE_INSTALL_DIR ${INCLUDE_INSTALL_DIR}/Okteta ) #${OKTETALIBS_ABI_VERSION} ) set( oktetacore_LIB oktetacore ) set( oktetagui_LIB oktetagui ) set( oktetacore_LIB_NAME okteta${OKTETALIBS_ABI_VERSION}core ) set( oktetagui_LIB_NAME okteta${OKTETALIBS_ABI_VERSION}gui ) set( OKTETALIBS_LIB_SOVERSION ${OKTETALIBS_ABI_VERSION} ) set( OKTETALIBS_LIB_VERSION ${OKTETALIBS_VERSION} ) # Okteta libs add_subdirectory( core ) add_subdirectory( gui ) add_subdirectory( designer ) # Okteta Kasten components add_subdirectory( kasten ) # special mimetypes #disable this for now, FindSharedMimeInfo is no longer installed by KF5 #TODO fix this #add_subdirectory( mimetypes ) # programs and parts for desktop add_subdirectory( parts ) add_subdirectory( program ) # program for mobile if (Qt5Quick_FOUND AND OKTETA_MOBILE_UI) macro_optional_add_subdirectory(mobile) endif () feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)