From: Oscar Fuentes Date: Fri, 14 Aug 2009 05:17:24 +0000 (+0000) Subject: CMake: Builds main LLVM Target library before its sublibraries. This X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=3d3ed3657268ab814a7f9ca952b32148d493c0be;p=oota-llvm.git CMake: Builds main LLVM Target library before its sublibraries. This way we ensure that tablegenned files exist before they are #include'd by the LLVM Target sublibraries. Required for parallel builds. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78996 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 068ef963aff..32dcae79f63 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -266,6 +266,7 @@ set(LLVM_ENUM_ASM_PRINTERS "") set(LLVM_ENUM_ASM_PARSERS "") foreach(t ${LLVM_TARGETS_TO_BUILD}) message(STATUS "Targeting ${t}") + set(CURRENT_LLVM_TARGET ${t}) add_subdirectory(lib/Target/${t}) add_subdirectory(lib/Target/${t}/TargetInfo) if( EXISTS ${LLVM_MAIN_SRC_DIR}/lib/Target/${t}/AsmPrinter/CMakeLists.txt ) @@ -278,6 +279,7 @@ foreach(t ${LLVM_TARGETS_TO_BUILD}) set(LLVM_ENUM_ASM_PARSERS "${LLVM_ENUM_ASM_PARSERS}LLVM_ASM_PARSER(${t})\n") endif( EXISTS ${LLVM_MAIN_SRC_DIR}/lib/Target/${t}/AsmParser/CMakeLists.txt ) + set(CURRENT_LLVM_TARGET) endforeach(t) # Produce llvm/Config/AsmPrinters.def diff --git a/cmake/modules/AddLLVM.cmake b/cmake/modules/AddLLVM.cmake index 0d263f83655..59716032604 100755 --- a/cmake/modules/AddLLVM.cmake +++ b/cmake/modules/AddLLVM.cmake @@ -12,6 +12,13 @@ macro(add_llvm_library name) install(TARGETS ${name} LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX} ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX}) + # The LLVM Target library shall be built before its sublibraries + # (asmprinter, etc) because those may use tablegenned files which + # generation is triggered by the main LLVM target library. Necessary + # for parallel builds: + if( CURRENT_LLVM_TARGET ) + add_dependencies(${name} LLVM${CURRENT_LLVM_TARGET}) + endif() endmacro(add_llvm_library name)