68 lines
2.5 KiB
CMake
68 lines
2.5 KiB
CMake
|
|
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||
|
|
# SPDX-License-Identifier: Apache-2.0 OR ISC
|
||
|
|
|
||
|
|
cmake_minimum_required(VERSION 3.5...3.31)
|
||
|
|
|
||
|
|
project(AWS_LC_RUST NONE)
|
||
|
|
enable_language(C)
|
||
|
|
|
||
|
|
function(set_my_target_properties ...)
|
||
|
|
set_target_properties(crypto PROPERTIES ${ARGV})
|
||
|
|
if (BUILD_LIBSSL)
|
||
|
|
set_target_properties(ssl PROPERTIES ${ARGV})
|
||
|
|
endif()
|
||
|
|
endfunction()
|
||
|
|
|
||
|
|
if(BUILD_SHARED_LIBS)
|
||
|
|
add_definitions(-DBORINGSSL_SHARED_LIBRARY)
|
||
|
|
endif()
|
||
|
|
|
||
|
|
add_subdirectory(aws-lc aws-lc EXCLUDE_FROM_ALL)
|
||
|
|
if(NOT EXISTS "${AWS_LC_RUST_SOURCE_DIR}/aws-lc/CMakeLists.txt")
|
||
|
|
message(WARNING "###### WARNING: MISSING GIT SUBMODULE ###### Did you initialize the repo's git submodules? CMakeLists.txt not found.\n -- run 'git submodule update --init --recursive' to initialize.")
|
||
|
|
endif()
|
||
|
|
|
||
|
|
if (BUILD_LIBSSL)
|
||
|
|
add_definitions(-DAWS_LC_RUST_INCLUDE_SSL)
|
||
|
|
endif()
|
||
|
|
|
||
|
|
# Custom target needed because aws-lc is added with EXCLUDE_FROM_ALL, so its targets aren't built by default.
|
||
|
|
if (BUILD_LIBSSL)
|
||
|
|
add_custom_target(aws_lc_sys ALL DEPENDS crypto ssl)
|
||
|
|
else()
|
||
|
|
add_custom_target(aws_lc_sys ALL DEPENDS crypto)
|
||
|
|
endif()
|
||
|
|
|
||
|
|
set(FINAL_ARTIFACTS_DIRECTORY ${CMAKE_BINARY_DIR}/artifacts)
|
||
|
|
|
||
|
|
# Places the compiled library files at the root of the binary directory so we can have a consistent
|
||
|
|
# location to find the artifacts cross-platform.
|
||
|
|
set_my_target_properties(
|
||
|
|
ARCHIVE_OUTPUT_DIRECTORY ${FINAL_ARTIFACTS_DIRECTORY}
|
||
|
|
RUNTIME_OUTPUT_DIRECTORY ${FINAL_ARTIFACTS_DIRECTORY}
|
||
|
|
LIBRARY_OUTPUT_DIRECTORY ${FINAL_ARTIFACTS_DIRECTORY})
|
||
|
|
|
||
|
|
# Based on https://stackoverflow.com/a/7750816 as some generators, like MSVC, will try to prefix the output directory
|
||
|
|
# which is not needed in our case.
|
||
|
|
foreach (OUT_NAME ${CMAKE_CONFIGURATION_TYPES})
|
||
|
|
string(TOUPPER ${OUT_NAME} OUT_NAME)
|
||
|
|
set_my_target_properties(
|
||
|
|
ARCHIVE_OUTPUT_DIRECTORY_${OUT_NAME} ${FINAL_ARTIFACTS_DIRECTORY}
|
||
|
|
RUNTIME_OUTPUT_DIRECTORY_${OUT_NAME} ${FINAL_ARTIFACTS_DIRECTORY}
|
||
|
|
LIBRARY_OUTPUT_DIRECTORY_${OUT_NAME} ${FINAL_ARTIFACTS_DIRECTORY})
|
||
|
|
endforeach ()
|
||
|
|
|
||
|
|
if (BORINGSSL_PREFIX)
|
||
|
|
if (MSVC)
|
||
|
|
set(TARGET_PREFIX "${BORINGSSL_PREFIX}")
|
||
|
|
set_my_target_properties(IMPORT_PREFIX ${TARGET_PREFIX})
|
||
|
|
else()
|
||
|
|
set(TARGET_PREFIX "lib${BORINGSSL_PREFIX}")
|
||
|
|
endif()
|
||
|
|
set_my_target_properties(PREFIX ${TARGET_PREFIX})
|
||
|
|
|
||
|
|
# This BORINGSSL_PREFIX has an "_" appended, so we must remove it
|
||
|
|
string(REGEX REPLACE "_$" "" BORINGSSL_PREFIX_MACRO ${BORINGSSL_PREFIX})
|
||
|
|
add_definitions(-DBORINGSSL_PREFIX=${BORINGSSL_PREFIX_MACRO})
|
||
|
|
endif ()
|