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)