63 lines
2.2 KiB
CMake
63 lines
2.2 KiB
CMake
cmake_minimum_required(VERSION 3.10 FATAL_ERROR)
|
|
|
|
# TODO Remove this deprecated policy switch once we're on cmake 3.4 or later
|
|
cmake_policy(SET CMP0065 OLD)
|
|
|
|
# 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
|
|
|
|
set(ANDROID_ABI arm64-v8a)
|
|
set(ANDROID_NDK /ndk/23.1.7779620/)
|
|
set(ANDROID_PLATFORM android-21)
|
|
set(ANDROID_TOOLCHAIN clang)
|
|
|
|
set(CMAKE_SYSTEM_NAME Android)
|
|
set(CMAKE_SYSTEM_VERSION 21)
|
|
set(CMAKE_ANDROID_ARCH_ABI arm64-v8a)
|
|
set(CMAKE_ANDROID_NDK ${ANDROID_NDK})
|
|
set(CMAKE_ANDROID_STL_TYPE c++_static)
|
|
|
|
set(CMAKE_TOOLCHAIN_FILE ${CMAKE_ANDROID_NDK}/build/cmake/android.toolchain.cmake)
|
|
set(ANDROID TRUE) # Current toolchain file doesn't set this variable which is needed by spdlog
|
|
|
|
project(cryfs)
|
|
|
|
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/cmake-utils)
|
|
include(utils)
|
|
|
|
require_gcc_version(7.0)
|
|
require_clang_version(7.0)
|
|
|
|
# Default value is not to build test cases
|
|
option(BUILD_TESTING "build test cases" OFF)
|
|
option(CRYFS_UPDATE_CHECKS "let cryfs check for updates and security vulnerabilities" OFF)
|
|
option(DISABLE_OPENMP "allow building without OpenMP libraries. This will cause performance degradations." OFF)
|
|
|
|
# The following options are helpful for development and/or CI
|
|
option(USE_WERROR "build with -Werror flag")
|
|
option(USE_CLANG_TIDY "build with clang-tidy checks enabled" OFF)
|
|
option(USE_IWYU "build with iwyu checks enabled" OFF)
|
|
option(CLANG_TIDY_WARNINGS_AS_ERRORS "treat clang-tidy warnings as errors" OFF)
|
|
|
|
if (MSVC)
|
|
option(DOKAN_PATH "Location of the Dokan library, e.g. C:\\Program Files\\Dokan\\DokanLibrary-1.1.0" "")
|
|
endif()
|
|
|
|
# Default value is to build in release mode but with debug symbols
|
|
if(NOT CMAKE_BUILD_TYPE)
|
|
set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE INTERNAL "CMAKE_BUILD_TYPE")
|
|
endif(NOT CMAKE_BUILD_TYPE)
|
|
|
|
# We don't use LTO because crypto++ has problems with it, see https://github.com/weidai11/cryptopp/issues/1031 and https://www.cryptopp.com/wiki/Link_Time_Optimization
|
|
|
|
# The MSVC version on AppVeyor CI needs this
|
|
if(MSVC)
|
|
add_definitions(/bigobj)
|
|
endif()
|
|
|
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
|
|
|
add_subdirectory(vendor EXCLUDE_FROM_ALL)
|
|
add_subdirectory(src)
|