From 65ec5ef37fe2c2b9e25ad62bb5b4db8d4b6cd7d9 Mon Sep 17 00:00:00 2001 From: Andrew Noyes Date: Tue, 20 Sep 2022 11:23:18 -0700 Subject: [PATCH] Statically link libcurl for the aws sdk (#8226) --- cmake/awssdk.cmake | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/cmake/awssdk.cmake b/cmake/awssdk.cmake index 0fef54338d..e22a47bdd9 100644 --- a/cmake/awssdk.cmake +++ b/cmake/awssdk.cmake @@ -2,10 +2,8 @@ project(awssdk-download NONE) # Compile the sdk with clang and libc++, since otherwise we get libc++ vs libstdc++ link errors when compiling fdb with clang set(AWSSDK_COMPILER_FLAGS "") -set(AWSSDK_LINK_FLAGS "") -if(APPLE OR CLANG OR USE_LIBCXX) +if(APPLE OR USE_LIBCXX) set(AWSSDK_COMPILER_FLAGS -stdlib=libc++ -nostdlib++) - set(AWSSDK_LINK_FLAGS -stdlib=libc++ -lc++abi) endif() include(ExternalProject) @@ -21,11 +19,11 @@ ExternalProject_Add(awssdk_project -DSIMPLE_INSTALL=ON -DCMAKE_INSTALL_PREFIX=install # need to specify an install prefix so it doesn't install in /usr/lib - FIXME: use absolute path -DBYO_CRYPTO=ON # we have our own crypto libraries that conflict if we let aws sdk build and link its own - + -DBUILD_CURL=ON + -DBUILD_ZLIB=ON -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} - -DCMAKE_EXE_LINKER_FLAGS=${AWSSDK_COMPILER_FLAGS} - -DCMAKE_CXX_FLAGS=${AWSSDK_LINK_FLAGS} + -DCMAKE_CXX_FLAGS=${AWSSDK_COMPILER_FLAGS} TEST_COMMAND "" # the sdk build produces a ton of artifacts, with their own dependency tree, so there is a very specific dependency order they must be linked in BUILD_BYPRODUCTS "${CMAKE_CURRENT_BINARY_DIR}/awssdk-build/install/lib64/libaws-cpp-sdk-core.a" @@ -41,6 +39,8 @@ ExternalProject_Add(awssdk_project "${CMAKE_CURRENT_BINARY_DIR}/awssdk-build/install/lib64/libaws-c-compression.a" "${CMAKE_CURRENT_BINARY_DIR}/awssdk-build/install/lib64/libaws-c-cal.a" "${CMAKE_CURRENT_BINARY_DIR}/awssdk-build/install/lib64/libaws-c-common.a" + "${CMAKE_CURRENT_BINARY_DIR}/awssdk-build/install/external-install/curl/lib/libcurl.a" + "${CMAKE_CURRENT_BINARY_DIR}/awssdk-build/install/external-install/zlib/lib/libz.a" ) add_library(awssdk_core STATIC IMPORTED) @@ -96,7 +96,15 @@ add_library(awssdk_c_common STATIC IMPORTED) add_dependencies(awssdk_c_common awssdk_project) set_target_properties(awssdk_c_common PROPERTIES IMPORTED_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/awssdk-build/install/lib64/libaws-c-common.a") +add_library(curl STATIC IMPORTED) +add_dependencies(curl awssdk_project) +set_property(TARGET curl PROPERTY IMPORTED_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/awssdk-build/install/external-install/curl/lib/libcurl.a") + +add_library(zlib STATIC IMPORTED) +add_dependencies(zlib awssdk_project) +set_property(TARGET zlib PROPERTY IMPORTED_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/awssdk-build/install/external-install/zlib/lib/libz.a") + # link them all together in one interface target add_library(awssdk_target INTERFACE) target_include_directories(awssdk_target SYSTEM INTERFACE ${CMAKE_CURRENT_BINARY_DIR}/awssdk-build/install/include) -target_link_libraries(awssdk_target INTERFACE awssdk_core awssdk_crt awssdk_c_s3 awssdk_c_auth awssdk_c_eventstream awssdk_c_http awssdk_c_mqtt awssdk_c_sdkutils awssdk_c_io awssdk_checksums awssdk_c_compression awssdk_c_cal awssdk_c_common curl) +target_link_libraries(awssdk_target INTERFACE awssdk_core awssdk_crt awssdk_c_s3 awssdk_c_auth awssdk_c_eventstream awssdk_c_http awssdk_c_mqtt awssdk_c_sdkutils awssdk_c_io awssdk_checksums awssdk_c_compression awssdk_c_cal awssdk_c_common zlib curl)