| # NOTE: With MSVC versions before 3.18 may not set /std:c11 consistently. | |
| cmake_minimum_required(VERSION 3.13) | |
| project(Tink VERSION 2.2.0 LANGUAGES CXX) | |
| list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") | |
| option(TINK_BUILD_TESTS "Build Tink tests" OFF) | |
| option(TINK_USE_SYSTEM_OPENSSL "Build Tink linking to OpenSSL installed in the system" OFF) | |
| option(TINK_USE_INSTALLED_ABSEIL "Build Tink linking to Abseil installed in the system" OFF) | |
| option(TINK_USE_INSTALLED_GOOGLETEST "Build Tink linking to GTest installed in the system" OFF) | |
| option(TINK_USE_INSTALLED_PROTOBUF "Build Tink linking to Protobuf installed in the system" OFF) | |
| option(USE_ONLY_FIPS "Enables the FIPS only mode in Tink" OFF) | |
| set(CPACK_GENERATOR TGZ) | |
| set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION}) | |
| include(CPack) | |
| include(TinkWorkspace) | |
| include(TinkBuildRules) | |
| include(TinkUtil) | |
| # Bazel rewrites import paths so that "cc/example/foo.h" can be included as | |
| # "tink/example/foo.h". The following lines simulate this behaviour by creating | |
| # a symlink to cc/ called tink/, and placing it in a separate subdirectory, | |
| # which is then specified as a global include path. | |
| # | |
| # It's important to create a separate directory and not just drop the link in | |
| # CMAKE_CURRENT_BINARY_DIR, since adding that to the include paths will | |
| # make the whole contents of that directory visible to the compiled files, | |
| # which may result in undeclared dependencies that nevertheless happen to work. | |
| # | |
| set(TINK_INCLUDE_ALIAS_DIR "${CMAKE_CURRENT_BINARY_DIR}/__include_alias") | |
| add_directory_alias( | |
| "${CMAKE_CURRENT_SOURCE_DIR}/tink" "${TINK_INCLUDE_ALIAS_DIR}/tink") | |
| list(APPEND TINK_INCLUDE_DIRS "${TINK_INCLUDE_ALIAS_DIR}") | |
| add_subdirectory(tink) | |
| add_subdirectory(proto) |