From 114dfd6f9691669c4a8b8b14f462187e5c297e18 Mon Sep 17 00:00:00 2001 From: Bartosz Golaszewski Date: Mon, 7 Feb 2022 13:24:49 +0100 Subject: [PATCH] build: fix building without external dependencies Configuration fails with -DBUILD_DEPS=OFF because the cmake file containing the AwsFindPackage() macro is located in one of the submodules. Pull it into the main git repo to fix it. --- cmake/AwsFindPackage.cmake | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 cmake/AwsFindPackage.cmake diff --git a/cmake/AwsFindPackage.cmake b/cmake/AwsFindPackage.cmake new file mode 100644 index 00000000000..f7abd14e14b --- /dev/null +++ b/cmake/AwsFindPackage.cmake @@ -0,0 +1,22 @@ +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# SPDX-License-Identifier: Apache-2.0. + +option(IN_SOURCE_BUILD "If the CRT libs are being built from your source tree (add_subdirectory), set this to ON" OFF) + +# This function handles dependency list building based on if traditional CMAKE modules via. find_package should be +# used, vs if this is an in source build via. something like git submodules and add_subdirectory. +# This is largely because CMake was not well planned out, and as a result, in-source and modules don't play well +# together. Only use this on CRT libraries (including S2N), libcrypto will stay as an assumed external dependency. +# +# package_name: is the name of the package to find +# DEP_AWS_LIBS: output variable will be appended after each call to this function. You don't have to use it, +# but it can be passed directly target_link_libraries and it will be the properly qualified library +# name and namespace based on configuration. +function(aws_use_package package_name) + if (IN_SOURCE_BUILD) + set(DEP_AWS_LIBS ${DEP_AWS_LIBS} ${package_name} PARENT_SCOPE) + else() + find_package(${package_name} REQUIRED) + set(DEP_AWS_LIBS ${DEP_AWS_LIBS} AWS::${package_name} PARENT_SCOPE) + endif() +endfunction()