From 4928295b236ec8f590a7e9d863502bc2f50a77d9 Mon Sep 17 00:00:00 2001 From: Jingwen Chen Date: Fri, 5 Mar 2021 02:56:12 -0800 Subject: [PATCH] Allow .S files in C++ Starlark cc_common.compile. .S files are (typically handwritten) assembly files that require preprocessing, compared to their lower-capital .s counterparts that can be compiled directly into object files. Native cc_library rules already allow .S files in srcs [1]. However, the Starlark cc_common.compile srcs argument doesn't accept them. This change adds .S files to the list of valid srcs for cc_common.compile. This is required for building AOSP, as there are handwritten source files in Android's libc with the .S extension [2] that will be compiled through Starlark C++ rules, e.g. directly into .o files. [1] https://cs.opensource.google/bazel/bazel/+/master:src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCppRuleClasses.java;l=280;drc=35de1e352459729f95d552b6ae5af9ce7d00a943 [2] https://cs.android.com/search?q=f:%5C.S$&sq= Closes #13155. PiperOrigin-RevId: 361106705 --- .../google/devtools/build/lib/rules/cpp/CcModule.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java index 33c3d7943f0f03..a4243f0949dc96 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java @@ -1979,8 +1979,13 @@ protected Tuple compile( validateExtensions( "srcs", sources, - CppFileTypes.ALL_C_CLASS_SOURCE.including(CppFileTypes.ASSEMBLER), - FileTypeSet.of(CppFileTypes.CPP_SOURCE, CppFileTypes.C_SOURCE, CppFileTypes.ASSEMBLER)); + CppFileTypes.ALL_C_CLASS_SOURCE.including( + CppFileTypes.ASSEMBLER_WITH_C_PREPROCESSOR, CppFileTypes.ASSEMBLER), + FileTypeSet.of( + CppFileTypes.CPP_SOURCE, + CppFileTypes.C_SOURCE, + CppFileTypes.ASSEMBLER_WITH_C_PREPROCESSOR, + CppFileTypes.ASSEMBLER)); validateExtensions( "public_hdrs", publicHeaders,