From 6e9de20f6a66ecac7f570fcffef4bb81d0f81cb6 Mon Sep 17 00:00:00 2001 From: Keith Smiley Date: Mon, 7 Oct 2024 11:58:33 -0700 Subject: [PATCH] Make --cxxopt apply to ObjC++ files Fixes https://github.com/bazelbuild/bazel/issues/12716 Closes #23858. PiperOrigin-RevId: 683271198 Change-Id: I14d8c85e56e8a1069d4fe925d4eb78db8d8ff757 --- .../build/lib/rules/cpp/CcCompilationHelper.java | 1 + .../build/lib/rules/objc/ObjcLibraryTest.java | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java index f1cb9dc44056bd..58899e898fc52e 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java @@ -1268,6 +1268,7 @@ public static ImmutableList getCoptsFromOptions( if (CppFileTypes.CPP_SOURCE.matches(sourceFilename) || CppFileTypes.CPP_HEADER.matches(sourceFilename) || CppFileTypes.CPP_MODULE_MAP.matches(sourceFilename) + || CppFileTypes.OBJCPP_SOURCE.matches(sourceFilename) || CppFileTypes.CLIF_INPUT_PROTO.matches(sourceFilename)) { flagsBuilder.addAll(config.getCxxopts()); } diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java index 1c86239916df74..9e311763287fb5 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java @@ -684,6 +684,20 @@ public void testObjcCopts_argumentOrdering() throws Exception { assertThat(args).containsAtLeast("-fobjc-arc", "-foo", "-bar").inOrder(); } + @Test + public void testObjcCxxopts_argumentOrdering() throws Exception { + useConfiguration("--objccopt=-foo", "--cxxopt=-cxxfoo"); + createLibraryTargetWriter("//lib:lib") + .setAndCreateFiles("srcs", "a.mm", "b.m", "private.h") + .setList("copts", "-bar") + .write(); + List aArgs = compileAction("//lib:lib", "a.o").getArguments(); + assertThat(aArgs).containsAtLeast("-fobjc-arc", "-cxxfoo", "-foo", "-bar").inOrder(); + List bArgs = compileAction("//lib:lib", "b.o").getArguments(); + assertThat(bArgs).containsAtLeast("-fobjc-arc", "-foo", "-bar").inOrder(); + assertThat(bArgs).doesNotContain("-cxxfoo"); + } + @Test public void testBothModuleNameAndModuleMapGivesError() throws Exception { checkError(