2019-10-20 08:57:58 -07:00
cmake_minimum_required ( VERSION 3.1 FATAL_ERROR )
# TODO Remove this deprecated policy switch once we're on cmake 3.4 or later
cmake_policy ( SET CMP0065 OLD )
2016-01-12 14:21:57 +01:00
2018-05-19 14:42:00 -07:00
# TODO Perf test:
# - try if setting CRYPTOPP_NATIVE_ARCH=ON and adding -march=native to the compile commands for cryfs source files makes a difference
# -> if yes, offer a cmake option to enable both of these
2016-06-01 15:19:17 +03:00
project ( cryfs )
2019-02-27 23:34:49 -08:00
list ( APPEND CMAKE_MODULE_PATH ${ CMAKE_CURRENT_LIST_DIR } /cmake-utils )
include ( utils )
2015-02-17 01:02:15 +01:00
2018-05-28 14:54:17 -07:00
require_gcc_version ( 5.0 )
require_clang_version ( 4.0 )
2015-03-16 02:15:51 +01:00
2016-02-14 16:25:21 +01:00
# Default value is not to build test cases
2018-05-20 14:11:54 -07:00
option ( BUILD_TESTING "build test cases" OFF )
option ( CRYFS_UPDATE_CHECKS "let cryfs check for updates and security vulnerabilities" ON )
2018-05-20 14:15:18 -07:00
option ( DISABLE_OPENMP "allow building without OpenMP libraries. This will cause performance degradations." OFF )
2018-10-02 20:51:33 -07:00
# The following options are helpful for development and/or CI
option ( USE_WERROR "build with -Werror flag" )
2018-09-29 18:01:38 -07:00
option ( USE_CLANG_TIDY "build with clang-tidy checks enabled" OFF )
2018-10-21 11:46:27 +02:00
option ( USE_IWYU "build with iwyu checks enabled" OFF )
2018-09-29 18:01:38 -07:00
option ( CLANG_TIDY_WARNINGS_AS_ERRORS "treat clang-tidy warnings as errors" OFF )
2016-02-14 17:06:06 +01:00
2019-10-19 18:33:29 -07:00
set ( CONAN_BUILD_INFO_FILE ${ CMAKE_BINARY_DIR } /conanbuildinfo.cmake )
if ( EXISTS ${ CONAN_BUILD_INFO_FILE } )
include ( ${ CONAN_BUILD_INFO_FILE } )
else ( )
message ( WARNING "The file ${CONAN_BUILD_INFO_FILE} doesn't exist, you have to run conan install first" )
endif ( )
conan_basic_setup ( TARGETS SKIP_STD )
if ( CONAN_SETTINGS_COMPILER_LIBCXX STREQUAL "libstdc++" )
# TODO Test this warning works correctly and that the proposed solution in the warning message works.
message ( FATAL_ERROR "Conan is set up to build against libstdc++ (i.e. the legacy GCC ABI). We only support libstdc++11 (i.e. the new GCC ABI).\nPlease add the '-s compiler.libcxx=libstdc++11' argument when running 'conan install'." )
endif ( )
2018-10-21 11:46:27 +02:00
if ( USE_IWYU )
# note: for iwyu, we need cmake 3.3
cmake_minimum_required ( VERSION 3.3 FATAL_ERROR )
endif ( )
if ( USE_CLANG_TIDY )
# note: for clang-tidy, we need cmake 3.6, or (if the return code should be handled correctly, e.g. on CI), we need 3.8.
cmake_minimum_required ( VERSION 3.8 FATAL_ERROR )
endif ( )
2018-10-02 20:51:33 -07:00
2018-09-15 17:42:32 -07:00
if ( MSVC )
2018-09-18 04:35:50 -07:00
option ( DOKAN_PATH "Location of the Dokan library, e.g. C:\\Program Files\\Dokan\\DokanLibrary-1.1.0" "" )
2018-09-15 17:42:32 -07:00
endif ( )
2018-11-10 13:25:15 -08:00
# Default value is to build in release mode but with debug symbols
2016-02-14 17:06:06 +01:00
if ( NOT CMAKE_BUILD_TYPE )
2018-11-10 13:25:15 -08:00
set ( CMAKE_BUILD_TYPE RelWithDebInfo CACHE INTERNAL "CMAKE_BUILD_TYPE" )
2016-02-14 17:06:06 +01:00
endif ( NOT CMAKE_BUILD_TYPE )
2016-02-14 16:25:21 +01:00
2018-07-17 21:08:17 -07:00
# The MSVC version on AppVeyor CI needs this
if ( MSVC )
add_definitions ( /bigobj )
endif ( )
2016-09-24 13:16:26 +02:00
2019-03-29 21:21:37 -07:00
add_subdirectory ( vendor EXCLUDE_FROM_ALL )
2016-02-10 00:58:03 +01:00
add_subdirectory ( src )
2017-03-26 14:08:47 +01:00
add_subdirectory ( doc )
2016-02-10 00:58:03 +01:00
add_subdirectory ( test )
2016-02-11 17:34:08 +01:00
add_subdirectory ( cpack )