teemperor created this revision.
teemperor added reviewers: sgraenitz, aprantl, JDevlieghere.
Herald added subscribers: lldb-commits, mgrang, kristof.beyls, javed.absar, 
mgorny.
Herald added a project: LLDB.

When building with modules we currently fail randomly to build LLDB's modules 
and get error messages like below:

  In file included from <module-includes>:1:                                    
                                                                                
                                
  In file included from llvm-project/llvm/include/llvm/IR/Argument.h:18:        
                                                                                
         
  llvm-project/llvm/include/llvm/IR/Attributes.h:74:14: fatal error: 
'llvm/IR/Attributes.inc' file not found                                         
                    
      #include "llvm/IR/Attributes.inc"                                         
                                                                                
                                
               ^~~~~~~~~~~~~~~~~~~~~~~~  
  ...
  In file included from 
llvm-project/lldb/source/Plugins/ABI/SysV-arm/ABISysV_arm.cpp:9:                
                                                                 
  llvm-project/lldb/source/Plugins/ABI/SysV-arm/ABISysV_arm.h:12:10: fatal 
error: could not build module 'lldb_Wrapper' 

The reason for this is that our source files can include Clang headers which in 
turn include files like Attributes.inc which
are generated by intrinsics_gen. However, it seems Clang can't express this 
dependency in its CMake code, so intrinsics_gen
is actually not guaranteed to be built before we start parsing LLDB source 
files and Clang headers. Clang worked around this
by letting all libraries depend on intrinsics_gen, which at least lets their 
builds pass.

As I haven't figured out how to solve these dependencies properly and I want to 
get the LLDB+Modules build green,
I suggest we copy Clang's hack until we figure out how to get Clang's 
dependencies right.


Repository:
  rLLDB LLDB

https://reviews.llvm.org/D66208

Files:
  lldb/CMakeLists.txt


Index: lldb/CMakeLists.txt
===================================================================
--- lldb/CMakeLists.txt
+++ lldb/CMakeLists.txt
@@ -40,6 +40,15 @@
   add_subdirectory(scripts)
 endif ()
 
+# We need the headers generated by instrinsics_gen before we can compile
+# any source file in LLDB as the imported Clang modules might include
+# some of these generated headers. This approach is copied from Clang's main
+# CMakeLists.txt, so it should kept in sync the code in Clang which was added
+# in llvm-svn 308844.
+if(LLVM_ENABLE_MODULES AND NOT LLDB_BUILT_STANDALONE)
+  list(APPEND LLVM_COMMON_DEPENDS intrinsics_gen)
+endif()
+
 if(CMAKE_CROSSCOMPILING AND LLDB_BUILT_STANDALONE)
   set(LLVM_USE_HOST_TOOLS ON)
   include(CrossCompile)


Index: lldb/CMakeLists.txt
===================================================================
--- lldb/CMakeLists.txt
+++ lldb/CMakeLists.txt
@@ -40,6 +40,15 @@
   add_subdirectory(scripts)
 endif ()
 
+# We need the headers generated by instrinsics_gen before we can compile
+# any source file in LLDB as the imported Clang modules might include
+# some of these generated headers. This approach is copied from Clang's main
+# CMakeLists.txt, so it should kept in sync the code in Clang which was added
+# in llvm-svn 308844.
+if(LLVM_ENABLE_MODULES AND NOT LLDB_BUILT_STANDALONE)
+  list(APPEND LLVM_COMMON_DEPENDS intrinsics_gen)
+endif()
+
 if(CMAKE_CROSSCOMPILING AND LLDB_BUILT_STANDALONE)
   set(LLVM_USE_HOST_TOOLS ON)
   include(CrossCompile)
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to