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)