diff --git a/CMakeLists.txt b/CMakeLists.txt index 8771c8ba9..ab8a44e52 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -60,46 +60,62 @@ if (BUILD_DEPS) set(BUILD_TESTING OFF) add_subdirectory(crt/aws-c-common) if (UNIX AND NOT APPLE) - set(BUILD_LIBSSL OFF CACHE BOOL "Don't need libssl, only need libcrypto") + include(AwsPrebuildDependency) + + set(AWSLC_CMAKE_ARGUMENTS + -DBUILD_LIBSSL=OFF + -DBUILD_TESTING=OFF + ) + message("Build with FIPS: " ${CRT_FIPS}) if (CRT_FIPS) set(FIPS ON CACHE BOOL "FIPS compliance") + list(append AWSLC_CMAKE_ARGUMENTS -DFIPS=ON) + set(PERL_EXECUTABLE "perl") + list(append AWSLC_CMAKE_ARGUMENTS -DPERL_EXECUTABLE=perl) + if (DEFINED ENV{GO_PATH}) set(GO_EXECUTABLE $ENV{GO_PATH}/go) + list(append AWSLC_CMAKE_ARGUMENTS -DGO_EXECUTABLE=${GO_EXECUTABLE}) message(STATUS "Overriding GO_EXECUTABLE to ${GO_EXECUTABLE}") endif() else() - set(DISABLE_PERL ON CACHE BOOL "Disable codegen") - set(DISABLE_GO ON CACHE BOOL "Disable codegen") + list(append AWSLC_CMAKE_ARGUMENTS -DDISABLE_PERL=ON) # Disable codegen + list(append AWSLC_CMAKE_ARGUMENTS -DDISABLE_GO=ON) # Disable codegen endif() if(CMAKE_C_COMPILER_ID MATCHES "GNU" AND CMAKE_C_COMPILER_VERSION VERSION_LESS "5.0") - set(DISABLE_PERL OFF CACHE BOOL "Build with Perl to avoid using pre-compiled binary with AVX512") set(PERL_EXECUTABLE "perl") - set(MY_ASSEMBLER_IS_TOO_OLD_FOR_512AVX ON CACHE BOOL "Disable AVX512 on old GCC that not supports it") + # Build with Perl to avoid using pre-compiled binary with AVX512 + list(append AWSLC_CMAKE_ARGUMENTS -DDISABLE_PERL=OFF) + list(append AWSLC_CMAKE_ARGUMENTS -DPERL_EXECUTABLE=perl) + # Disable AVX512 on old GCC that not supports it + list(append AWSLC_CMAKE_ARGUMENTS -DMY_ASSEMBLER_IS_TOO_OLD_FOR_512AVX=ON) endif() # temporarily disable certain warnings as errors for the aws-lc build - set(OLD_CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") + set(AWSLC_CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") if (NOT MSVC) check_c_compiler_flag(-Wno-stringop-overflow HAS_WNO_STRINGOP_OVERFLOW) if (HAS_WNO_STRINGOP_OVERFLOW) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-stringop-overflow") + set(AWSLC_CMAKE_C_FLAGS "${AWSLC_CMAKE_C_FLAGS} -Wno-stringop-overflow") endif() check_c_compiler_flag(-Wno-array-parameter HAS_WNO_ARRAY_PARAMETER) if (HAS_WNO_ARRAY_PARAMETER) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-array-parameter") + set(AWSLC_CMAKE_C_FLAGS "${AWSLC_CMAKE_C_FLAGS} -Wno-array-parameter") endif() endif() + list(append AWSLC_CMAKE_ARGUMENTS ${AWSLC_CMAKE_C_FLAGS}) - add_subdirectory(crt/aws-lc) - - # restore previous build flags - set(CMAKE_C_FLAGS "${OLD_CMAKE_C_FLAGS}") + # s2n-tls uses libcrypto during its configuration, so we need to prebuild aws-lc. + prebuild_dependency( + DEPENDENCY_NAME AWSLC + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/crt/aws-lc + CMAKE_ARGUMENTS ${AWSLC_CMAKE_ARGUMENTS} + ) - set(SEARCH_LIBCRYPTO OFF CACHE BOOL "Let S2N use libcrypto from AWS-LC.") set(UNSAFE_TREAT_WARNINGS_AS_ERRORS OFF CACHE BOOL "Disable warnings-as-errors when building S2N") add_subdirectory(crt/s2n) endif() diff --git a/crt/aws-c-cal b/crt/aws-c-cal index bc0d71b66..8232595f5 160000 --- a/crt/aws-c-cal +++ b/crt/aws-c-cal @@ -1 +1 @@ -Subproject commit bc0d71b66deea9e1a2d3a073c9f1ece9286b9e60 +Subproject commit 8232595f5344854fdeb74c80054742567673287a diff --git a/crt/aws-c-common b/crt/aws-c-common index 2add521b7..d6004d333 160000 --- a/crt/aws-c-common +++ b/crt/aws-c-common @@ -1 +1 @@ -Subproject commit 2add521b78d69f9f043a701232e751f43cf123e6 +Subproject commit d6004d3337c43275115bfddae289b787ebbf4d55