Skip to content

Commit 256b6b9

Browse files
authored
fix: prefix pwd for imacros flag (bazelbuild#4116)
toolchains_llvm [now](bazel-contrib/toolchains_llvm@1194923) force-includes a header via `-imacros`, which surfaced this bug.
1 parent 8f4cba1 commit 256b6b9

3 files changed

Lines changed: 33 additions & 1 deletion

File tree

cargo/private/cargo_build_script.bzl

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,10 @@ def _pwd_flags_resource_dir(args):
225225
"""Prefix execroot-relative paths in -resource-dir arguments with ${pwd}."""
226226
return _prefix_pwd_to_flag(args, ["-resource-dir=", "-resource-dir"])
227227

228+
def _pwd_flags_imacros(args):
229+
"""Prefix execroot-relative paths in -imacros arguments with ${pwd}."""
230+
return _prefix_pwd_to_flag(args, ["-imacros"])
231+
228232
_DIRECT_LIB_EXTENSIONS = (".a", ".o", ".so", ".dylib")
229233

230234
def _pwd_flags_direct_libs(args):
@@ -257,7 +261,7 @@ def _pwd_paths(args):
257261
return _prefix_pwd_to_paths(args)
258262

259263
def _pwd_flags(args):
260-
return _pwd_flags_direct_libs(_pwd_flags_fsanitize_ignorelist(_pwd_flags_isystem(_pwd_flags_L(_pwd_flags_B(_pwd_flags_resource_dir(_pwd_flags_sysroot(args)))))))
264+
return _pwd_flags_direct_libs(_pwd_flags_imacros(_pwd_flags_fsanitize_ignorelist(_pwd_flags_isystem(_pwd_flags_L(_pwd_flags_B(_pwd_flags_resource_dir(_pwd_flags_sysroot(args))))))))
261265

262266
def _feature_enabled(ctx, feature_name, default = False):
263267
"""Check if a feature is enabled.

cargo/tests/cargo_build_script/cc_args_and_env/BUILD.bazel

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ load(
66
"direct_libs_relative_test",
77
"fsanitize_ignorelist_absolute_test",
88
"fsanitize_ignorelist_relative_test",
9+
"imacros_absolute_test",
10+
"imacros_relative_test",
911
"include_absolute_test",
1012
"include_mixed_test",
1113
"include_relative_test",
@@ -48,6 +50,10 @@ fsanitize_ignorelist_absolute_test(name = "fsanitize_ignorelist_absolute_test")
4850

4951
fsanitize_ignorelist_relative_test(name = "fsanitize_ignorelist_relative_test")
5052

53+
imacros_absolute_test(name = "imacros_absolute_test")
54+
55+
imacros_relative_test(name = "imacros_relative_test")
56+
5157
legacy_cc_toolchain_test(name = "legacy_cc_toolchain_test")
5258

5359
libpath_absolute_test(name = "libpath_absolute_test")

cargo/tests/cargo_build_script/cc_args_and_env/cc_args_and_env_test.bzl

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -613,6 +613,28 @@ def include_mixed_test(name):
613613
}),
614614
)
615615

616+
def imacros_relative_test(name):
617+
cargo_build_script_with_extra_cc_compile_flags(
618+
name = "%s/cargo_build_script" % name,
619+
extra_cc_compile_flags = ["-imacros", "test/relative/redacted_dates.h"],
620+
)
621+
cc_args_and_env_analysis_test(
622+
name = name,
623+
target_under_test = "%s/cargo_build_script" % name,
624+
expected_cflags = ["-imacros", "${pwd}/test/relative/redacted_dates.h"],
625+
)
626+
627+
def imacros_absolute_test(name):
628+
cargo_build_script_with_extra_cc_compile_flags(
629+
name = "%s/cargo_build_script" % name,
630+
extra_cc_compile_flags = ["-imacros", "/test/absolute/redacted_dates.h"],
631+
)
632+
cc_args_and_env_analysis_test(
633+
name = name,
634+
target_under_test = "%s/cargo_build_script" % name,
635+
expected_cflags = ["-imacros", "/test/absolute/redacted_dates.h"],
636+
)
637+
616638
def direct_libs_relative_test(name):
617639
cargo_build_script_with_extra_cc_compile_flags(
618640
name = "%s/cargo_build_script" % name,

0 commit comments

Comments
 (0)