chandlerc created this revision. chandlerc added reviewers: GMNGeoffrey, dblaikie. Herald added a subscriber: mcrosier. chandlerc requested review of this revision.
Sadly, these are necessary AFAICT. There is a file `lib/AST/CXXABI.h`. On case insensitive file systems like macOS this will collide with `cxxabi.h` on the system if we use the `includes` trick to allow file-relative `#include` of generated files. I've tested this on both Linux and Windows to make sure it remains reasonably portable. https://reviews.llvm.org/D112883 Files: utils/bazel/llvm-project-overlay/clang/BUILD.bazel Index: utils/bazel/llvm-project-overlay/clang/BUILD.bazel =================================================================== --- utils/bazel/llvm-project-overlay/clang/BUILD.bazel +++ utils/bazel/llvm-project-overlay/clang/BUILD.bazel @@ -691,14 +691,25 @@ "lib/AST/*.h", "lib/AST/Interp/*.cpp", "lib/AST/Interp/*.h", - ]), + ]) + [ + "lib/AST/AttrDocTable.inc", + "lib/AST/Interp/Opcodes.inc", + ], hdrs = glob([ "include/clang/AST/*.h", ]), - includes = [ - "include", - "lib/AST", - "lib/AST/Interp", + copts = [ + # FIXME: This is necessary to allow "file relative" include paths from + # non-generated `srcs` to find generated `srcs` above. Bazel should + # either make this work automatically by creating a unified tree of + # `srcs` or at least provide a `local_includes` that has the path + # translation logic of `includes` but is only used locally (similar to + # `local_defines` vs. `defines`). Until one of those lands, this is the + # least bad approach. Using `includes` is *specifically* problematic for + # this library because it contains files that collide easily with system + # headers such as `CXXABI.h`. + "-I$(GENDIR)/external/llvm-project/clang/lib/AST", + "-I$(GENDIR)/external/llvm-project/clang/lib/AST/Interp", ], textual_hdrs = [ "include/clang/AST/AttrImpl.inc", @@ -715,8 +726,6 @@ "include/clang/AST/DeclNodes.inc", "include/clang/AST/StmtDataCollectors.inc", "include/clang/AST/StmtNodes.inc", - "lib/AST/AttrDocTable.inc", - "lib/AST/Interp/Opcodes.inc", ] + glob([ "include/clang/AST/*.def", ]),
Index: utils/bazel/llvm-project-overlay/clang/BUILD.bazel =================================================================== --- utils/bazel/llvm-project-overlay/clang/BUILD.bazel +++ utils/bazel/llvm-project-overlay/clang/BUILD.bazel @@ -691,14 +691,25 @@ "lib/AST/*.h", "lib/AST/Interp/*.cpp", "lib/AST/Interp/*.h", - ]), + ]) + [ + "lib/AST/AttrDocTable.inc", + "lib/AST/Interp/Opcodes.inc", + ], hdrs = glob([ "include/clang/AST/*.h", ]), - includes = [ - "include", - "lib/AST", - "lib/AST/Interp", + copts = [ + # FIXME: This is necessary to allow "file relative" include paths from + # non-generated `srcs` to find generated `srcs` above. Bazel should + # either make this work automatically by creating a unified tree of + # `srcs` or at least provide a `local_includes` that has the path + # translation logic of `includes` but is only used locally (similar to + # `local_defines` vs. `defines`). Until one of those lands, this is the + # least bad approach. Using `includes` is *specifically* problematic for + # this library because it contains files that collide easily with system + # headers such as `CXXABI.h`. + "-I$(GENDIR)/external/llvm-project/clang/lib/AST", + "-I$(GENDIR)/external/llvm-project/clang/lib/AST/Interp", ], textual_hdrs = [ "include/clang/AST/AttrImpl.inc", @@ -715,8 +726,6 @@ "include/clang/AST/DeclNodes.inc", "include/clang/AST/StmtDataCollectors.inc", "include/clang/AST/StmtNodes.inc", - "lib/AST/AttrDocTable.inc", - "lib/AST/Interp/Opcodes.inc", ] + glob([ "include/clang/AST/*.def", ]),
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits