Only build lldb-tblgen if it's not a current target
authorNathan Lanza <nathan@lanza.io>
Thu, 18 Jul 2019 01:26:53 +0000 (01:26 +0000)
committerNathan Lanza <nathan@lanza.io>
Thu, 18 Jul 2019 01:26:53 +0000 (01:26 +0000)
Summary:
When doing standalone builds, you could potentially be building against
an llvm which also built lldb. If this were the case, you'd be
attempting to build this target twice.

Reviewers: xiaobai

Subscribers: mgorny

Differential Revision: https://reviews.llvm.org/D64847

llvm-svn: 366394

lldb/utils/TableGen/CMakeLists.txt

index 76e8191..45a5d36 100644 (file)
@@ -1,8 +1,14 @@
-set(LLVM_LINK_COMPONENTS Support)
-
-add_tablegen(lldb-tblgen LLDB
-  LLDBOptionDefEmitter.cpp
-  LLDBTableGen.cpp
-  )
-set_target_properties(lldb-tblgen PROPERTIES FOLDER "LLDB tablegenning")
+# tablegen targets get exported via llvm for LLVMConfig.cmake. So standalone
+# builds of lldb can potentially import this via LLVMConfig and also attempt to
+# build it in tree. So only build it if it doesn't exist.
+if (TARGET lldb-tblgen)
+  set(LLDB_TABLEGEN_EXE $<TARGET_FILE:lldb-tblgen> CACHE STRING "")
+else()
+  set(LLVM_LINK_COMPONENTS Support)
 
+  add_tablegen(lldb-tblgen LLDB
+    LLDBOptionDefEmitter.cpp
+    LLDBTableGen.cpp
+    )
+  set_target_properties(lldb-tblgen PROPERTIES FOLDER "LLDB tablegenning")
+endif()