Warning, /pim/sink/CMakeLists.txt is written in an unsupported language. File is not indexed.
0001 cmake_minimum_required(VERSION 3.16) 0002 0003 cmake_policy(SET CMP0048 NEW) 0004 cmake_policy(SET CMP0028 NEW) 0005 cmake_policy(SET CMP0063 NEW) 0006 0007 project(sink VERSION 0.9.0) 0008 0009 option(BUILD_MAILDIR "BUILD_MAILDIR" ON) 0010 option(BUILD_DAV "BUILD_DAV" ON) 0011 option(CATCH_ERRORS "CATCH_ERRORS" OFF) 0012 # Requires the docker container from the kube repo 0013 option(ENABLE_INTEGRATION_TESTS "Enable integration tests" OFF) 0014 0015 # ECM setup 0016 find_package(ECM 5.29.0 REQUIRED NO_MODULE) 0017 set(CMAKE_MODULE_PATH 0018 ${ECM_MODULE_PATH} 0019 ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules 0020 ${CMAKE_CURRENT_SOURCE_DIR}/tests 0021 ${CMAKE_MODULE_PATH}) 0022 set(CMAKE_CXX_STANDARD 17) 0023 0024 include(FeatureSummary) 0025 include(GenerateExportHeader) 0026 include(CMakePackageConfigHelpers) 0027 include(ECMSetupVersion) 0028 include(KDEInstallDirs) 0029 include(KDECompilerSettings) 0030 #Avoid building appstreamtest 0031 set(KDE_SKIP_TEST_SETTINGS true) 0032 #Pick up rpath settings 0033 include(KDECMakeSettings NO_POLICY_SCOPE) 0034 #We only have console applications here 0035 set(CMAKE_MACOSX_BUNDLE OFF) 0036 set(CMAKE_WIN32_EXECUTABLE OFF) 0037 0038 ecm_setup_version(PROJECT 0039 SOVERSION sink_VERSION_MAJOR 0040 VERSION_HEADER sink_version.h 0041 ) 0042 0043 find_package(Qt5 COMPONENTS REQUIRED Core Concurrent Network Gui Test) 0044 find_package(KF5 COMPONENTS REQUIRED Mime Contacts CalendarCore) 0045 find_package(FlatBuffers REQUIRED 1.4.0) 0046 find_package(KAsync REQUIRED 0.3) 0047 find_package(LMDB REQUIRED 0.9) 0048 find_package(Xapian REQUIRED 1.4) 0049 find_package(Gpgme REQUIRED) 0050 find_package(zstd REQUIRED) 0051 0052 #Clang-format support 0053 add_custom_command( 0054 OUTPUT format.dummy 0055 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} 0056 COMMAND clang-format -i ${CMAKE_SOURCE_DIR}/**.{cpp,h} 0057 ) 0058 add_custom_target(format DEPENDS format.dummy) 0059 0060 function(generate_flatbuffers _target) 0061 foreach(fbs ${ARGN}) 0062 #Necessary because we can get relative paths as name, e.g. commands/create_entity 0063 get_filename_component(filename ${fbs} NAME) 0064 #We first generate into a temporary directory to avoid changing the timestamp of the actual dependency unnecessarily. 0065 #Otherwise we'd end up unnecessarily rebuilding the target. 0066 add_custom_command( 0067 OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${fbs}_generated.h 0068 COMMAND ${FLATBUFFERS_FLATC_EXECUTABLE} -c -b -o ${CMAKE_CURRENT_BINARY_DIR}/flatbufferstmp ${CMAKE_CURRENT_SOURCE_DIR}/${fbs}.fbs 0069 COMMAND ${CMAKE_COMMAND} -E copy_if_different 0070 ${CMAKE_CURRENT_BINARY_DIR}/flatbufferstmp/${filename}_generated.h 0071 ${CMAKE_CURRENT_BINARY_DIR}/${filename}_generated.h 0072 DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${fbs}.fbs 0073 0074 ) 0075 target_sources(${_target} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/${fbs}_generated.h) 0076 set_property(SOURCE ${fbs}_generated.h PROPERTY SKIP_AUTOMOC ON) 0077 endforeach(fbs) 0078 endfunction(generate_flatbuffers) 0079 0080 0081 set(CMAKE_AUTOMOC ON) 0082 if (${CATCH_ERRORS}) 0083 add_definitions("-Werror -Wall -Weverything -Wno-unused-function -Wno-cast-align -Wno-used-but-marked-unused -Wno-shadow -Wno-weak-vtables -Wno-global-constructors -Wno-deprecated -Wno-weak-template-vtables -Wno-exit-time-destructors -Wno-covered-switch-default -Wno-shorten-64-to-32 -Wno-documentation -Wno-old-style-cast -Wno-extra-semi -Wno-unused-parameter -Wno-c++98-compat -Wno-c++98-compat-pedantic -Wno-padded -Wno-missing-noreturn -Wno-missing-prototypes -Wno-documentation-unknown-command -Wno-sign-conversion -Wno-gnu-zero-variadic-macro-arguments -Wno-disabled-macro-expansion -Wno-vla-extension -Wno-vla -Wno-undefined-func-template -Wno-#warnings -Wno-unused-template -Wno-inconsistent-missing-destructor-override -Wno-zero-as-null-pointer-constant -Wno-unused-lambda-capture -Wno-switch-enum -Wno-redundant-parens -Wno-extra-semi-stmt -Wno-suggest-destructor-override") 0084 endif() 0085 0086 set(CMAKE_CXX_STANDARD 20) 0087 set(CMAKE_CXX_STANDARD_REQUIRED ON) 0088 if (MSVC) 0089 # Workaround for older cmake versions 0090 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /std:c++20") 0091 # We get way to many warnings for this 0092 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-nonportable-include-path") 0093 endif() 0094 0095 include_directories(${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR} ${FLATBUFFERS_INCLUDE_DIR} ${CMAKE_BINARY_DIR}/common 3rdparty) 0096 include_directories(SYSTEM ${CMAKE_SOURCE_DIR}/common ${CMAKE_SOURCE_DIR}/common/domain ${CMAKE_SOURCE_DIR}/mime) 0097 0098 configure_file(hawd.conf hawd.conf) 0099 0100 enable_testing() 0101 0102 set(SINK_RESOURCE_PLUGINS_PATH ${QT_PLUGIN_INSTALL_DIR}/sink/resources) 0103 0104 # mime support 0105 add_subdirectory(mime) 0106 0107 # common, eventually a lib but right now just the command buffers 0108 add_subdirectory(common) 0109 0110 # the synchronizer 0111 add_subdirectory(synchronizer) 0112 0113 # example implementations 0114 add_subdirectory(examples) 0115 0116 # some tests 0117 add_subdirectory(tests) 0118 0119 # cli 0120 add_subdirectory(sinksh) 0121 0122 feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)