jroelofs created this revision.
Herald added subscribers: steakhal, wenlei, martong, arphaman, hiraditya.
Herald added a reviewer: NoQ.
Herald added a reviewer: ributzka.
Herald added a project: All.
jroelofs requested review of this revision.
Herald added subscribers: llvm-commits, cfe-commits, MaskRay.
Herald added a reviewer: dang.
Herald added projects: clang, LLVM.

Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D150325

Files:
  clang/include/clang/Driver/CMakeLists.txt
  clang/lib/ARCMigrate/CMakeLists.txt
  clang/lib/Analysis/plugins/CheckerDependencyHandling/CMakeLists.txt
  clang/lib/Analysis/plugins/CheckerOptionHandling/CMakeLists.txt
  clang/lib/Analysis/plugins/SampleAnalyzer/CMakeLists.txt
  clang/lib/CodeGen/CMakeLists.txt
  clang/lib/CrossTU/CMakeLists.txt
  clang/lib/Driver/CMakeLists.txt
  clang/lib/ExtractAPI/CMakeLists.txt
  clang/lib/Frontend/Rewrite/CMakeLists.txt
  clang/lib/Index/CMakeLists.txt
  clang/lib/StaticAnalyzer/Core/CMakeLists.txt
  clang/lib/StaticAnalyzer/Frontend/CMakeLists.txt
  clang/lib/Tooling/ASTDiff/CMakeLists.txt
  clang/lib/Tooling/DumpTool/CMakeLists.txt
  clang/lib/Tooling/Refactoring/CMakeLists.txt
  clang/lib/Tooling/Syntax/CMakeLists.txt
  clang/lib/Tooling/Transformer/CMakeLists.txt
  clang/tools/arcmt-test/CMakeLists.txt
  clang/tools/c-index-test/CMakeLists.txt
  clang/tools/clang-check/CMakeLists.txt
  clang/tools/clang-diff/CMakeLists.txt
  clang/tools/clang-extdef-mapping/CMakeLists.txt
  clang/tools/clang-fuzzer/handle-cxx/CMakeLists.txt
  clang/tools/clang-import-test/CMakeLists.txt
  clang/tools/clang-offload-bundler/CMakeLists.txt
  clang/tools/clang-refactor/CMakeLists.txt
  clang/tools/clang-rename/CMakeLists.txt
  clang/tools/clang-repl/CMakeLists.txt
  clang/tools/clang-scan-deps/CMakeLists.txt
  clang/tools/diagtool/CMakeLists.txt
  clang/tools/driver/CMakeLists.txt
  llvm/cmake/modules/AddLLVM.cmake
  llvm/lib/TableGen/Main.cpp

Index: llvm/lib/TableGen/Main.cpp
===================================================================
--- llvm/lib/TableGen/Main.cpp
+++ llvm/lib/TableGen/Main.cpp
@@ -96,6 +96,16 @@
   return 0;
 }
 
+static cl::opt<std::string>
+DependencyGuardName("dependency-guard=", cl::Prefix, cl::Hidden, cl::init(""));
+
+static void EmitDependencyGuard(StringRef Name, raw_ostream &OS) {
+  OS << "#ifndef LLVM_DEPENDS_ON_" << Name << "\n"
+     << "#  error If you're seeing this message, there is a missing DEPENDS "
+     << Name << " in the CMake target that includes this file.\n"
+     << "#endif\n";
+}
+
 int llvm::TableGenMain(const char *argv0,
                        std::function<TableGenMainFn> MainFn) {
   RecordKeeper Records;
@@ -139,6 +149,9 @@
     status = MainFn(Out, Records);
   else
     return 1;
+  if (!DependencyGuardName.empty()) {
+    EmitDependencyGuard(DependencyGuardName, Out);
+  }
   Records.stopBackendTimer();
   if (status)
     return 1;
Index: llvm/cmake/modules/AddLLVM.cmake
===================================================================
--- llvm/cmake/modules/AddLLVM.cmake
+++ llvm/cmake/modules/AddLLVM.cmake
@@ -535,6 +535,10 @@
 
     set_target_properties(${obj_name} PROPERTIES FOLDER "Object Libraries")
     if(ARG_DEPENDS)
+      foreach(dependency ${ARG_DEPENDS})
+        string(REPLACE "-" "_" dependency ${dependency})
+        target_compile_definitions(${obj_name} PUBLIC -DLLVM_DEPENDS_ON_${dependency}=1)
+      endforeach()
       add_dependencies(${obj_name} ${ARG_DEPENDS})
     endif()
     # Treat link libraries like PUBLIC dependencies.  LINK_LIBS might
@@ -565,6 +569,12 @@
     if(ARG_OUTPUT_NAME)
       set(output_name OUTPUT_NAME "${ARG_OUTPUT_NAME}")
     endif()
+    if(ARG_DEPENDS)
+      foreach(dependency ${ARG_DEPENDS})
+        string(REPLACE "-" "_" dependency ${dependency})
+        target_compile_definitions(${name_static} PRIVATE -DLLVM_DEPENDS_ON_${dependency}=1)
+      endforeach()
+    endif()
     # DEPENDS has been appended to LLVM_COMMON_LIBS.
     llvm_add_library(${name_static} STATIC
       ${output_name}
@@ -590,6 +600,13 @@
     add_library(${name} STATIC ${ALL_FILES})
   endif()
 
+  if(ARG_DEPENDS)
+    foreach(dependency ${ARG_DEPENDS})
+      string(REPLACE "-" "_" dependency ${dependency})
+      target_compile_definitions(${name} PRIVATE -DLLVM_DEPENDS_ON_${dependency}=1)
+    endforeach()
+  endif()
+
   if(ARG_COMPONENT_LIB)
     set_target_properties(${name} PROPERTIES LLVM_COMPONENT TRUE)
     set_property(GLOBAL APPEND PROPERTY LLVM_COMPONENT_LIBS ${name})
@@ -950,9 +967,9 @@
   cmake_parse_arguments(ARG
     "DISABLE_LLVM_LINK_LLVM_DYLIB;IGNORE_EXTERNALIZE_DEBUGINFO;NO_INSTALL_RPATH;SUPPORT_PLUGINS"
     "ENTITLEMENTS;BUNDLE_PATH"
-    ""
+    "DEPENDS"
     ${ARGN})
-  generate_llvm_objects(${name} ${ARG_UNPARSED_ARGUMENTS})
+  generate_llvm_objects(${name} ${ARG_UNPARSED_ARGUMENTS} DEPENDS ${ARG_DEPENDS})
   add_windows_version_resource_file(ALL_FILES ${ALL_FILES})
 
   if(XCODE)
@@ -967,6 +984,11 @@
     add_executable(${name} ${ALL_FILES})
   endif()
 
+  foreach(dependency ${ARG_DEPENDS})
+    string(REPLACE "-" "_" dependency ${dependency})
+    target_compile_definitions(${name} PRIVATE -DLLVM_DEPENDS_ON_${dependency}=1)
+  endforeach()
+
   setup_dependency_debugging(${name} ${LLVM_COMMON_DEPENDS})
 
   if(NOT ARG_NO_INSTALL_RPATH)
Index: clang/tools/driver/CMakeLists.txt
===================================================================
--- clang/tools/driver/CMakeLists.txt
+++ clang/tools/driver/CMakeLists.txt
@@ -31,6 +31,7 @@
 
   DEPENDS
   intrinsics_gen
+  ClangDriverOptions
   ${support_plugins}
   GENERATE_DRIVER
   )
Index: clang/tools/diagtool/CMakeLists.txt
===================================================================
--- clang/tools/diagtool/CMakeLists.txt
+++ clang/tools/diagtool/CMakeLists.txt
@@ -10,6 +10,9 @@
   ListWarnings.cpp
   ShowEnabledWarnings.cpp
   TreeView.cpp
+
+  DEPENDS
+  ClangDriverOptions
 )
 
 clang_target_link_libraries(diagtool
Index: clang/tools/clang-scan-deps/CMakeLists.txt
===================================================================
--- clang/tools/clang-scan-deps/CMakeLists.txt
+++ clang/tools/clang-scan-deps/CMakeLists.txt
@@ -13,6 +13,7 @@
   ClangScanDeps.cpp
 
   DEPENDS
+  ClangDriverOptions
   ScanDepsOptsTableGen
   GENERATE_DRIVER
   )
Index: clang/tools/clang-repl/CMakeLists.txt
===================================================================
--- clang/tools/clang-repl/CMakeLists.txt
+++ clang/tools/clang-repl/CMakeLists.txt
@@ -9,6 +9,8 @@
 
 add_clang_tool(clang-repl
   ClangRepl.cpp
+  DEPENDS
+  ClangDriverOptions
   )
 
 clang_target_link_libraries(clang-repl PRIVATE
Index: clang/tools/clang-rename/CMakeLists.txt
===================================================================
--- clang/tools/clang-rename/CMakeLists.txt
+++ clang/tools/clang-rename/CMakeLists.txt
@@ -5,6 +5,9 @@
 
 add_clang_tool(clang-rename
   ClangRename.cpp
+
+  DEPENDS
+  ClangDriverOptions
   )
 
 clang_target_link_libraries(clang-rename
Index: clang/tools/clang-refactor/CMakeLists.txt
===================================================================
--- clang/tools/clang-refactor/CMakeLists.txt
+++ clang/tools/clang-refactor/CMakeLists.txt
@@ -6,6 +6,9 @@
 add_clang_tool(clang-refactor
   ClangRefactor.cpp
   TestSupport.cpp
+
+  DEPENDS
+  ClangDriverOptions
   )
 
 clang_target_link_libraries(clang-refactor
Index: clang/tools/clang-offload-bundler/CMakeLists.txt
===================================================================
--- clang/tools/clang-offload-bundler/CMakeLists.txt
+++ clang/tools/clang-offload-bundler/CMakeLists.txt
@@ -9,6 +9,7 @@
 
   DEPENDS
   intrinsics_gen
+  ClangDriverOptions
   )
 
 set(CLANG_OFFLOAD_BUNDLER_LIB_DEPS
Index: clang/tools/clang-import-test/CMakeLists.txt
===================================================================
--- clang/tools/clang-import-test/CMakeLists.txt
+++ clang/tools/clang-import-test/CMakeLists.txt
@@ -8,6 +8,7 @@
   clang-import-test.cpp
   DEPENDS
   intrinsics_gen
+  ClangDriverOptions
   )
 
 set(CLANG_IMPORT_TEST_LIB_DEPS
Index: clang/tools/clang-fuzzer/handle-cxx/CMakeLists.txt
===================================================================
--- clang/tools/clang-fuzzer/handle-cxx/CMakeLists.txt
+++ clang/tools/clang-fuzzer/handle-cxx/CMakeLists.txt
@@ -10,6 +10,9 @@
   clangLex
   clangSerialization
   clangTooling
+
+  DEPENDS
+  ClangDriverOptions
   )
 
 target_include_directories(clangHandleCXX PRIVATE .)
Index: clang/tools/clang-extdef-mapping/CMakeLists.txt
===================================================================
--- clang/tools/clang-extdef-mapping/CMakeLists.txt
+++ clang/tools/clang-extdef-mapping/CMakeLists.txt
@@ -5,6 +5,8 @@
 
 add_clang_tool(clang-extdef-mapping
   ClangExtDefMapGen.cpp
+  DEPENDS
+  ClangDriverOptions
   )
 
 clang_target_link_libraries(clang-extdef-mapping
Index: clang/tools/clang-diff/CMakeLists.txt
===================================================================
--- clang/tools/clang-diff/CMakeLists.txt
+++ clang/tools/clang-diff/CMakeLists.txt
@@ -4,6 +4,9 @@
 
 add_clang_executable(clang-diff
   ClangDiff.cpp
+
+  DEPENDS
+  ClangDriverOptions
   )
 
 clang_target_link_libraries(clang-diff
Index: clang/tools/clang-check/CMakeLists.txt
===================================================================
--- clang/tools/clang-check/CMakeLists.txt
+++ clang/tools/clang-check/CMakeLists.txt
@@ -6,6 +6,9 @@
 
 add_clang_tool(clang-check
   ClangCheck.cpp
+
+  DEPENDS
+  ClangDriverOptions
   )
 
 clang_target_link_libraries(clang-check
Index: clang/tools/c-index-test/CMakeLists.txt
===================================================================
--- clang/tools/c-index-test/CMakeLists.txt
+++ clang/tools/c-index-test/CMakeLists.txt
@@ -5,6 +5,9 @@
 add_clang_executable(c-index-test
   c-index-test.c
   core_main.cpp
+
+  DEPENDS
+  ClangDriverOptions
   )
 
 if(NOT MSVC)
Index: clang/tools/arcmt-test/CMakeLists.txt
===================================================================
--- clang/tools/arcmt-test/CMakeLists.txt
+++ clang/tools/arcmt-test/CMakeLists.txt
@@ -4,6 +4,9 @@
 
 add_clang_executable(arcmt-test
   arcmt-test.cpp
+
+  DEPENDS
+  ClangDriverOptions
   )
 
 clang_target_link_libraries(arcmt-test
Index: clang/lib/Tooling/Transformer/CMakeLists.txt
===================================================================
--- clang/lib/Tooling/Transformer/CMakeLists.txt
+++ clang/lib/Tooling/Transformer/CMakeLists.txt
@@ -22,4 +22,5 @@
 
   DEPENDS
   omp_gen
+  ClangDriverOptions
   )
Index: clang/lib/Tooling/Syntax/CMakeLists.txt
===================================================================
--- clang/lib/Tooling/Syntax/CMakeLists.txt
+++ clang/lib/Tooling/Syntax/CMakeLists.txt
@@ -19,4 +19,5 @@
 
   DEPENDS
   omp_gen
+  ClangDriverOptions
   )
Index: clang/lib/Tooling/Refactoring/CMakeLists.txt
===================================================================
--- clang/lib/Tooling/Refactoring/CMakeLists.txt
+++ clang/lib/Tooling/Refactoring/CMakeLists.txt
@@ -26,4 +26,5 @@
 
   DEPENDS
   omp_gen
+  ClangDriverOptions
   )
Index: clang/lib/Tooling/DumpTool/CMakeLists.txt
===================================================================
--- clang/lib/Tooling/DumpTool/CMakeLists.txt
+++ clang/lib/Tooling/DumpTool/CMakeLists.txt
@@ -2,6 +2,9 @@
 add_clang_executable(clang-ast-dump
   ASTSrcLocProcessor.cpp
   ClangSrcLocDump.cpp
+
+  DEPENDS
+  ClangDriverOptions
 )
 
 target_link_libraries(clang-ast-dump
Index: clang/lib/Tooling/ASTDiff/CMakeLists.txt
===================================================================
--- clang/lib/Tooling/ASTDiff/CMakeLists.txt
+++ clang/lib/Tooling/ASTDiff/CMakeLists.txt
@@ -11,4 +11,5 @@
 
   DEPENDS
   omp_gen
+  ClangDriverOptions
   )
Index: clang/lib/StaticAnalyzer/Frontend/CMakeLists.txt
===================================================================
--- clang/lib/StaticAnalyzer/Frontend/CMakeLists.txt
+++ clang/lib/StaticAnalyzer/Frontend/CMakeLists.txt
@@ -26,4 +26,5 @@
 
   DEPENDS
   omp_gen
+  ClangDriverOptions
   )
Index: clang/lib/StaticAnalyzer/Core/CMakeLists.txt
===================================================================
--- clang/lib/StaticAnalyzer/Core/CMakeLists.txt
+++ clang/lib/StaticAnalyzer/Core/CMakeLists.txt
@@ -64,5 +64,6 @@
 
   DEPENDS
   omp_gen
+  ClangDriverOptions
   )
 
Index: clang/lib/Index/CMakeLists.txt
===================================================================
--- clang/lib/Index/CMakeLists.txt
+++ clang/lib/Index/CMakeLists.txt
@@ -28,4 +28,5 @@
 
   DEPENDS
   omp_gen
+  ClangDriverOptions
   )
Index: clang/lib/Frontend/Rewrite/CMakeLists.txt
===================================================================
--- clang/lib/Frontend/Rewrite/CMakeLists.txt
+++ clang/lib/Frontend/Rewrite/CMakeLists.txt
@@ -23,4 +23,5 @@
 
   DEPENDS
   omp_gen
+  ClangDriverOptions
   )
Index: clang/lib/ExtractAPI/CMakeLists.txt
===================================================================
--- clang/lib/ExtractAPI/CMakeLists.txt
+++ clang/lib/ExtractAPI/CMakeLists.txt
@@ -19,4 +19,7 @@
   clangFrontend
   clangIndex
   clangLex
+
+  DEPENDS
+  ClangDriverOptions
   )
Index: clang/lib/Driver/CMakeLists.txt
===================================================================
--- clang/lib/Driver/CMakeLists.txt
+++ clang/lib/Driver/CMakeLists.txt
@@ -99,4 +99,4 @@
   LINK_LIBS
   clangBasic
   ${system_libs}
-  )
+  )
\ No newline at end of file
Index: clang/lib/CrossTU/CMakeLists.txt
===================================================================
--- clang/lib/CrossTU/CMakeLists.txt
+++ clang/lib/CrossTU/CMakeLists.txt
@@ -11,4 +11,7 @@
   clangBasic
   clangFrontend
   clangIndex
+
+  DEPENDS
+  ClangDriverOptions
   )
Index: clang/lib/CodeGen/CMakeLists.txt
===================================================================
--- clang/lib/CodeGen/CMakeLists.txt
+++ clang/lib/CodeGen/CMakeLists.txt
@@ -91,6 +91,7 @@
 
   DEPENDS
   intrinsics_gen
+  ClangDriverOptions
 
   LINK_LIBS
   clangAST
Index: clang/lib/Analysis/plugins/SampleAnalyzer/CMakeLists.txt
===================================================================
--- clang/lib/Analysis/plugins/SampleAnalyzer/CMakeLists.txt
+++ clang/lib/Analysis/plugins/SampleAnalyzer/CMakeLists.txt
@@ -3,7 +3,16 @@
   )
 
 set(LLVM_EXPORTED_SYMBOL_FILE ${CMAKE_CURRENT_SOURCE_DIR}/SampleAnalyzerPlugin.exports)
-add_llvm_library(SampleAnalyzerPlugin MODULE BUILDTREE_ONLY MainCallChecker.cpp)
+add_llvm_library(
+  SampleAnalyzerPlugin
+
+  MODULE
+  BUILDTREE_ONLY
+
+  MainCallChecker.cpp
+
+  DEPENDS
+  ClangDriverOptions)
 
 clang_target_link_libraries(SampleAnalyzerPlugin PRIVATE
   clangAnalysis
Index: clang/lib/Analysis/plugins/CheckerOptionHandling/CMakeLists.txt
===================================================================
--- clang/lib/Analysis/plugins/CheckerOptionHandling/CMakeLists.txt
+++ clang/lib/Analysis/plugins/CheckerOptionHandling/CMakeLists.txt
@@ -3,7 +3,16 @@
   )
 
 set(LLVM_EXPORTED_SYMBOL_FILE ${CMAKE_CURRENT_SOURCE_DIR}/CheckerOptionHandlingAnalyzerPlugin.exports)
-add_llvm_library(CheckerOptionHandlingAnalyzerPlugin MODULE BUILDTREE_ONLY CheckerOptionHandling.cpp)
+add_llvm_library(
+  CheckerOptionHandlingAnalyzerPlugin
+
+  MODULE
+  BUILDTREE_ONLY
+
+  CheckerOptionHandling.cpp
+
+  DEPENDS
+  ClangDriverOptions)
 
 clang_target_link_libraries(CheckerOptionHandlingAnalyzerPlugin PRIVATE
   clangAnalysis
Index: clang/lib/Analysis/plugins/CheckerDependencyHandling/CMakeLists.txt
===================================================================
--- clang/lib/Analysis/plugins/CheckerDependencyHandling/CMakeLists.txt
+++ clang/lib/Analysis/plugins/CheckerDependencyHandling/CMakeLists.txt
@@ -3,7 +3,16 @@
   )
 
 set(LLVM_EXPORTED_SYMBOL_FILE ${CMAKE_CURRENT_SOURCE_DIR}/CheckerDependencyHandlingAnalyzerPlugin.exports)
-add_llvm_library(CheckerDependencyHandlingAnalyzerPlugin MODULE BUILDTREE_ONLY CheckerDependencyHandling.cpp)
+add_llvm_library(
+  CheckerDependencyHandlingAnalyzerPlugin
+
+  MODULE
+  BUILDTREE_ONLY
+
+  CheckerDependencyHandling.cpp
+
+  DEPENDS
+  ClangDriverOptions)
 
 clang_target_link_libraries(CheckerDependencyHandlingAnalyzerPlugin PRIVATE
   clangAnalysis
Index: clang/lib/ARCMigrate/CMakeLists.txt
===================================================================
--- clang/lib/ARCMigrate/CMakeLists.txt
+++ clang/lib/ARCMigrate/CMakeLists.txt
@@ -44,4 +44,5 @@
 
   DEPENDS
   omp_gen
+  ClangDriverOptions
   )
Index: clang/include/clang/Driver/CMakeLists.txt
===================================================================
--- clang/include/clang/Driver/CMakeLists.txt
+++ clang/include/clang/Driver/CMakeLists.txt
@@ -1,3 +1,3 @@
 set(LLVM_TARGET_DEFINITIONS Options.td)
-tablegen(LLVM Options.inc -gen-opt-parser-defs)
+tablegen(LLVM Options.inc -gen-opt-parser-defs -dependency-guard=ClangDriverOptions)
 add_public_tablegen_target(ClangDriverOptions)
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
  • [PATCH] D150325: WIP: Prototyp... Jon Roelofs via Phabricator via cfe-commits

Reply via email to