From 6e542304f83ec7d54f5b98e1ab534246e7b6ba96 Mon Sep 17 00:00:00 2001 From: Matt Smith Date: Fri, 1 Nov 2024 08:41:51 -0700 Subject: [PATCH] add foreign_cc deps to cmake prefix path (#1311) --- examples/third_party/curl/BUILD.curl.bazel | 2 -- examples/third_party/libgit2/BUILD.libgit2.bazel | 1 - examples/third_party/libssh2/BUILD.libssh2.bazel | 1 - foreign_cc/cmake.bzl | 1 + foreign_cc/private/cmake_script.bzl | 11 ++++++++--- 5 files changed, 9 insertions(+), 7 deletions(-) diff --git a/examples/third_party/curl/BUILD.curl.bazel b/examples/third_party/curl/BUILD.curl.bazel index 570b06d3..95ae0e85 100644 --- a/examples/third_party/curl/BUILD.curl.bazel +++ b/examples/third_party/curl/BUILD.curl.bazel @@ -12,11 +12,9 @@ _CACHE_ENTRIES = { "BUILD_CURL_EXE": "off", "BUILD_SHARED_LIBS": "off", "CMAKE_BUILD_TYPE": "RELEASE", - "CMAKE_PREFIX_PATH": "$$EXT_BUILD_DEPS/openssl", "CMAKE_USE_OPENSSL": "on", # TODO: ldap should likely be enabled "CURL_DISABLE_LDAP": "on", - "OPENSSL_ROOT_DIR": "$$EXT_BUILD_DEPS/openssl", } _MACOS_CACHE_ENTRIES = dict(_CACHE_ENTRIES.items() + { diff --git a/examples/third_party/libgit2/BUILD.libgit2.bazel b/examples/third_party/libgit2/BUILD.libgit2.bazel index ae34aa72..66de63c5 100644 --- a/examples/third_party/libgit2/BUILD.libgit2.bazel +++ b/examples/third_party/libgit2/BUILD.libgit2.bazel @@ -13,7 +13,6 @@ _CACHE_ENTRIES = { "BUILD_EXAMPLES": "off", "BUILD_FUZZERS": "off", "BUILD_SHARED_LIBS": "off", - "CMAKE_PREFIX_PATH": "$$EXT_BUILD_DEPS/pcre;$$EXT_BUILD_DEPS/openssl;$$EXT_BUILD_DEPS/libssh2;$$EXT_BUILD_DEPS/zlib;$${CMAKE_PREFIX_PATH:-}", #"EMBED_SSH_PATH": "$(location @libssh2//:libssh2)", "USE_HTTPS": "on", } diff --git a/examples/third_party/libssh2/BUILD.libssh2.bazel b/examples/third_party/libssh2/BUILD.libssh2.bazel index 4f4cdb14..7a0b828a 100644 --- a/examples/third_party/libssh2/BUILD.libssh2.bazel +++ b/examples/third_party/libssh2/BUILD.libssh2.bazel @@ -13,7 +13,6 @@ _CACHE_ENTRIES = { "BUILD_SHARED_LIBS": "off", "BUILD_TESTING": "off", "CMAKE_FIND_DEBUG_MODE": "on", - "CMAKE_PREFIX_PATH": "$${CMAKE_PREFIX_PATH:-};$$EXT_BUILD_DEPS/openssl", } _LINUX_CACHE_ENTRIES = dict(_CACHE_ENTRIES.items() + { diff --git a/foreign_cc/cmake.bzl b/foreign_cc/cmake.bzl index cfe03dc1..8c958c0d 100644 --- a/foreign_cc/cmake.bzl +++ b/foreign_cc/cmake.bzl @@ -271,6 +271,7 @@ def _create_configure_script(configureParameters): cmake_prefix = prefix, include_dirs = inputs.include_dirs, is_debug_mode = is_debug_mode(ctx), + ext_build_dirs = inputs.ext_build_dirs, ) return configure_script diff --git a/foreign_cc/private/cmake_script.bzl b/foreign_cc/private/cmake_script.bzl index 7645e614..0d11a3c1 100644 --- a/foreign_cc/private/cmake_script.bzl +++ b/foreign_cc/private/cmake_script.bzl @@ -58,7 +58,8 @@ def create_cmake_script( cmake_commands, include_dirs = [], cmake_prefix = None, - is_debug_mode = True): + is_debug_mode = True, + ext_build_dirs = []): """Constructs CMake script to be passed to cc_external_rule_impl. Args: @@ -81,12 +82,13 @@ def create_cmake_script( include_dirs: Optional additional include directories. Defaults to []. cmake_prefix: Optional prefix before the cmake command (without the trailing space). is_debug_mode: If the compilation mode is `debug`. Defaults to True. + ext_build_dirs: A list of gen_dirs for each foreign_cc dep. Returns: list: Lines of bash which make up the build script """ - merged_prefix_path = _merge_prefix_path(user_cache, include_dirs) + merged_prefix_path = _merge_prefix_path(user_cache, include_dirs, ext_build_dirs) toolchain_dict = _fill_crossfile_from_toolchain(workspace_name, tools, flags) params = None @@ -171,9 +173,12 @@ def _wipe_empty_values(cache, keys_with_empty_values_in_user_cache): cache.pop(key) # From CMake documentation: ;-list of directories specifying installation prefixes to be searched... -def _merge_prefix_path(user_cache, include_dirs): +def _merge_prefix_path(user_cache, include_dirs, ext_build_dirs): user_prefix = user_cache.get("CMAKE_PREFIX_PATH") values = ["$$EXT_BUILD_DEPS$$"] + include_dirs + for ext_dir in ext_build_dirs: + values.append("$$EXT_BUILD_DEPS$$/{}".format(ext_dir.basename)) + if user_prefix != None: # remove it, it is gonna be merged specifically user_cache.pop("CMAKE_PREFIX_PATH")