summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt82
-rwxr-xr-xcmake/modules/AddLLVM.cmake4
-rw-r--r--cmake/modules/CMakeLists.txt3
-rwxr-xr-xcmake/modules/LLVMConfig.cmake1
-rw-r--r--lib/Analysis/CMakeLists.txt2
-rw-r--r--lib/Bitcode/CMakeLists.txt2
-rw-r--r--lib/CMakeLists.txt14
-rw-r--r--lib/CodeGen/CMakeLists.txt3
-rw-r--r--lib/ExecutionEngine/CMakeLists.txt4
-rw-r--r--lib/MC/CMakeLists.txt3
-rw-r--r--lib/Target/CMakeLists.txt50
-rw-r--r--lib/Transforms/CMakeLists.txt6
-rw-r--r--tools/llvm-config/CMakeLists.txt3
13 files changed, 95 insertions, 82 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 32c958658e9..0a5d5f39d85 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -195,11 +195,9 @@ if( MINGW )
llvm_replace_compiler_option(CMAKE_CXX_FLAGS_RELEASE "-O3" "-O2")
endif()
+# Put this before tblgen. Else we have a circular dependence.
add_subdirectory(lib/Support)
-# Everything else depends on Support:
-set(LLVM_COMMON_DEPENDS ${LLVM_COMMON_DEPENDS} ${LLVM_LIBS} )
-
set(LLVM_TABLEGEN "tblgen" CACHE
STRING "Native TableGen executable. Saves building one when cross-compiling.")
# Effective tblgen executable to be used:
@@ -214,25 +212,7 @@ endif( CMAKE_CROSSCOMPILING )
add_subdirectory(include/llvm)
-add_subdirectory(lib/VMCore)
-add_subdirectory(lib/CodeGen)
-add_subdirectory(lib/CodeGen/SelectionDAG)
-add_subdirectory(lib/CodeGen/AsmPrinter)
-add_subdirectory(lib/Bitcode/Reader)
-add_subdirectory(lib/Bitcode/Writer)
-add_subdirectory(lib/Transforms/Utils)
-add_subdirectory(lib/Transforms/Instrumentation)
-add_subdirectory(lib/Transforms/InstCombine)
-add_subdirectory(lib/Transforms/Scalar)
-add_subdirectory(lib/Transforms/IPO)
-add_subdirectory(lib/Transforms/Hello)
-add_subdirectory(lib/Linker)
-add_subdirectory(lib/Analysis)
-add_subdirectory(lib/Analysis/IPA)
-add_subdirectory(lib/MC)
-add_subdirectory(lib/MC/MCParser)
-add_subdirectory(lib/MC/MCDisassembler)
-add_subdirectory(lib/Object)
+add_subdirectory(lib)
add_subdirectory(utils/FileCheck)
add_subdirectory(utils/FileUpdate)
@@ -240,64 +220,6 @@ add_subdirectory(utils/count)
add_subdirectory(utils/not)
add_subdirectory(utils/llvm-lit)
-set(LLVM_ENUM_ASM_PRINTERS "")
-set(LLVM_ENUM_ASM_PARSERS "")
-set(LLVM_ENUM_DISASSEMBLERS "")
-foreach(t ${LLVM_TARGETS_TO_BUILD})
- message(STATUS "Targeting ${t}")
- add_subdirectory(lib/Target/${t})
- add_subdirectory(lib/Target/${t}/TargetInfo)
- set( td ${LLVM_MAIN_SRC_DIR}/lib/Target/${t} )
- file(GLOB asmp_file "${td}/*AsmPrinter.cpp")
- if( asmp_file )
- set(LLVM_ENUM_ASM_PRINTERS
- "${LLVM_ENUM_ASM_PRINTERS}LLVM_ASM_PRINTER(${t})\n")
- endif()
- if( EXISTS ${td}/InstPrinter/CMakeLists.txt )
- add_subdirectory(lib/Target/${t}/InstPrinter)
- endif()
- if( EXISTS ${td}/AsmParser/CMakeLists.txt )
- add_subdirectory(lib/Target/${t}/AsmParser)
- set(LLVM_ENUM_ASM_PARSERS
- "${LLVM_ENUM_ASM_PARSERS}LLVM_ASM_PARSER(${t})\n")
- endif()
- if( EXISTS ${td}/Disassembler/CMakeLists.txt )
- add_subdirectory(lib/Target/${t}/Disassembler)
- set(LLVM_ENUM_DISASSEMBLERS
- "${LLVM_ENUM_DISASSEMBLERS}LLVM_DISASSEMBLER(${t})\n")
- endif()
- if( EXISTS ${td}/Utils/CMakeLists.txt )
- add_subdirectory(${td}/Utils)
- endif()
- set(CURRENT_LLVM_TARGET)
-endforeach(t)
-
-# Produce llvm/Config/AsmPrinters.def
-configure_file(
- ${LLVM_MAIN_INCLUDE_DIR}/llvm/Config/AsmPrinters.def.in
- ${LLVM_BINARY_DIR}/include/llvm/Config/AsmPrinters.def
- )
-
-# Produce llvm/Config/AsmParsers.def
-configure_file(
- ${LLVM_MAIN_INCLUDE_DIR}/llvm/Config/AsmParsers.def.in
- ${LLVM_BINARY_DIR}/include/llvm/Config/AsmParsers.def
- )
-
-# Produce llvm/Config/Disassemblers.def
-configure_file(
- ${LLVM_MAIN_INCLUDE_DIR}/llvm/Config/Disassemblers.def.in
- ${LLVM_BINARY_DIR}/include/llvm/Config/Disassemblers.def
- )
-
-add_subdirectory(lib/ExecutionEngine)
-add_subdirectory(lib/ExecutionEngine/Interpreter)
-add_subdirectory(lib/ExecutionEngine/JIT)
-add_subdirectory(lib/ExecutionEngine/MCJIT)
-add_subdirectory(lib/Target)
-add_subdirectory(lib/AsmParser)
-add_subdirectory(lib/Archive)
-
add_subdirectory(projects)
option(LLVM_BUILD_TOOLS
diff --git a/cmake/modules/AddLLVM.cmake b/cmake/modules/AddLLVM.cmake
index fdf1df0c67d..9d275a00a24 100755
--- a/cmake/modules/AddLLVM.cmake
+++ b/cmake/modules/AddLLVM.cmake
@@ -4,8 +4,8 @@ include(LLVMConfig)
macro(add_llvm_library name)
llvm_process_sources( ALL_FILES ${ARGN} )
add_library( ${name} ${ALL_FILES} )
- set( llvm_libs ${llvm_libs} ${name} PARENT_SCOPE)
- set( llvm_lib_targets ${llvm_lib_targets} ${name} PARENT_SCOPE )
+ set_property( GLOBAL APPEND PROPERTY LLVM_LIBS ${name} )
+ set_property( GLOBAL APPEND PROPERTY LLVM_LIB_TARGETS ${name} )
if( LLVM_COMMON_DEPENDS )
add_dependencies( ${name} ${LLVM_COMMON_DEPENDS} )
endif( LLVM_COMMON_DEPENDS )
diff --git a/cmake/modules/CMakeLists.txt b/cmake/modules/CMakeLists.txt
index 9365743b79f..9a5566effb0 100644
--- a/cmake/modules/CMakeLists.txt
+++ b/cmake/modules/CMakeLists.txt
@@ -1,5 +1,8 @@
set(llvm_cmake_builddir "${LLVM_BINARY_DIR}/share/llvm/cmake")
+get_property(llvm_libs GLOBAL PROPERTY LLVM_LIBS)
+get_property(llvm_lib_targets GLOBAL PROPERTY LLVM_LIB_TARGETS)
+
configure_file(
LLVM.cmake
${llvm_cmake_builddir}/LLVM.cmake
diff --git a/cmake/modules/LLVMConfig.cmake b/cmake/modules/LLVMConfig.cmake
index 7a4a271b1c6..349544edc33 100755
--- a/cmake/modules/LLVMConfig.cmake
+++ b/cmake/modules/LLVMConfig.cmake
@@ -59,6 +59,7 @@ endfunction(llvm_map_components_to_libraries)
function(explicit_map_components_to_libraries out_libs)
set( link_components ${ARGN} )
+ get_property(llvm_libs GLOBAL PROPERTY LLVM_LIBS)
string(TOUPPER "${llvm_libs}" capitalized_libs)
# Translate symbolic component names to real libraries:
foreach(c ${link_components})
diff --git a/lib/Analysis/CMakeLists.txt b/lib/Analysis/CMakeLists.txt
index 1f43b4481d1..1a738fae837 100644
--- a/lib/Analysis/CMakeLists.txt
+++ b/lib/Analysis/CMakeLists.txt
@@ -56,3 +56,5 @@ add_llvm_library(LLVMAnalysis
TypeBasedAliasAnalysis.cpp
ValueTracking.cpp
)
+
+add_subdirectory(IPA)
diff --git a/lib/Bitcode/CMakeLists.txt b/lib/Bitcode/CMakeLists.txt
new file mode 100644
index 00000000000..ff7e290cad1
--- /dev/null
+++ b/lib/Bitcode/CMakeLists.txt
@@ -0,0 +1,2 @@
+add_subdirectory(Reader)
+add_subdirectory(Writer)
diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
new file mode 100644
index 00000000000..e2838c373a3
--- /dev/null
+++ b/lib/CMakeLists.txt
@@ -0,0 +1,14 @@
+# `Support' library is added on the top-level CMakeLists.txt
+
+add_subdirectory(VMCore)
+add_subdirectory(CodeGen)
+add_subdirectory(Bitcode)
+add_subdirectory(Transforms)
+add_subdirectory(Linker)
+add_subdirectory(Analysis)
+add_subdirectory(MC)
+add_subdirectory(Object)
+add_subdirectory(ExecutionEngine)
+add_subdirectory(Target)
+add_subdirectory(AsmParser)
+add_subdirectory(Archive)
diff --git a/lib/CodeGen/CMakeLists.txt b/lib/CodeGen/CMakeLists.txt
index 9f48f332049..d7d0e1b3812 100644
--- a/lib/CodeGen/CMakeLists.txt
+++ b/lib/CodeGen/CMakeLists.txt
@@ -94,3 +94,6 @@ add_llvm_library(LLVMCodeGen
VirtRegMap.cpp
VirtRegRewriter.cpp
)
+
+add_subdirectory(SelectionDAG)
+add_subdirectory(AsmPrinter)
diff --git a/lib/ExecutionEngine/CMakeLists.txt b/lib/ExecutionEngine/CMakeLists.txt
index 0e118ccd904..b5632d2bc5c 100644
--- a/lib/ExecutionEngine/CMakeLists.txt
+++ b/lib/ExecutionEngine/CMakeLists.txt
@@ -2,3 +2,7 @@ add_llvm_library(LLVMExecutionEngine
ExecutionEngine.cpp
ExecutionEngineBindings.cpp
)
+
+add_subdirectory(Interpreter)
+add_subdirectory(JIT)
+add_subdirectory(MCJIT)
diff --git a/lib/MC/CMakeLists.txt b/lib/MC/CMakeLists.txt
index c17e1505b09..f1811a1716f 100644
--- a/lib/MC/CMakeLists.txt
+++ b/lib/MC/CMakeLists.txt
@@ -34,3 +34,6 @@ add_llvm_library(LLVMMC
WinCOFFObjectWriter.cpp
TargetAsmBackend.cpp
)
+
+add_subdirectory(MCParser)
+add_subdirectory(MCDisassembler)
diff --git a/lib/Target/CMakeLists.txt b/lib/Target/CMakeLists.txt
index f7a98664a36..fe9a1264955 100644
--- a/lib/Target/CMakeLists.txt
+++ b/lib/Target/CMakeLists.txt
@@ -15,3 +15,53 @@ add_llvm_library(LLVMTarget
TargetRegisterInfo.cpp
TargetSubtarget.cpp
)
+
+set(LLVM_ENUM_ASM_PRINTERS "")
+set(LLVM_ENUM_ASM_PARSERS "")
+set(LLVM_ENUM_DISASSEMBLERS "")
+foreach(t ${LLVM_TARGETS_TO_BUILD})
+ message(STATUS "Targeting ${t}")
+ add_subdirectory(${t})
+ add_subdirectory(${t}/TargetInfo)
+ set( td ${LLVM_MAIN_SRC_DIR}/lib/Target/${t} )
+ file(GLOB asmp_file "${td}/*AsmPrinter.cpp")
+ if( asmp_file )
+ set(LLVM_ENUM_ASM_PRINTERS
+ "${LLVM_ENUM_ASM_PRINTERS}LLVM_ASM_PRINTER(${t})\n")
+ endif()
+ if( EXISTS ${td}/InstPrinter/CMakeLists.txt )
+ add_subdirectory(${t}/InstPrinter)
+ endif()
+ if( EXISTS ${td}/AsmParser/CMakeLists.txt )
+ add_subdirectory(${t}/AsmParser)
+ set(LLVM_ENUM_ASM_PARSERS
+ "${LLVM_ENUM_ASM_PARSERS}LLVM_ASM_PARSER(${t})\n")
+ endif()
+ if( EXISTS ${td}/Disassembler/CMakeLists.txt )
+ add_subdirectory(${t}/Disassembler)
+ set(LLVM_ENUM_DISASSEMBLERS
+ "${LLVM_ENUM_DISASSEMBLERS}LLVM_DISASSEMBLER(${t})\n")
+ endif()
+ if( EXISTS ${td}/Utils/CMakeLists.txt )
+ add_subdirectory(${td}/Utils)
+ endif()
+ set(CURRENT_LLVM_TARGET)
+endforeach(t)
+
+# Produce llvm/Config/AsmPrinters.def
+configure_file(
+ ${LLVM_MAIN_INCLUDE_DIR}/llvm/Config/AsmPrinters.def.in
+ ${LLVM_BINARY_DIR}/include/llvm/Config/AsmPrinters.def
+ )
+
+# Produce llvm/Config/AsmParsers.def
+configure_file(
+ ${LLVM_MAIN_INCLUDE_DIR}/llvm/Config/AsmParsers.def.in
+ ${LLVM_BINARY_DIR}/include/llvm/Config/AsmParsers.def
+ )
+
+# Produce llvm/Config/Disassemblers.def
+configure_file(
+ ${LLVM_MAIN_INCLUDE_DIR}/llvm/Config/Disassemblers.def.in
+ ${LLVM_BINARY_DIR}/include/llvm/Config/Disassemblers.def
+ )
diff --git a/lib/Transforms/CMakeLists.txt b/lib/Transforms/CMakeLists.txt
new file mode 100644
index 00000000000..10e0cc6b569
--- /dev/null
+++ b/lib/Transforms/CMakeLists.txt
@@ -0,0 +1,6 @@
+add_subdirectory(Utils)
+add_subdirectory(Instrumentation)
+add_subdirectory(InstCombine)
+add_subdirectory(Scalar)
+add_subdirectory(IPO)
+add_subdirectory(Hello)
diff --git a/tools/llvm-config/CMakeLists.txt b/tools/llvm-config/CMakeLists.txt
index b9a833f7bbd..d33ff0dad84 100644
--- a/tools/llvm-config/CMakeLists.txt
+++ b/tools/llvm-config/CMakeLists.txt
@@ -70,6 +70,8 @@ if( NOT NM_PATH )
message(FATAL_ERROR "`nm' not found")
endif()
+get_property(llvm_libs GLOBAL PROPERTY LLVM_LIBS)
+
add_custom_command(OUTPUT ${LIBDEPS_TMP}
COMMAND ${PERL_EXECUTABLE} ${LLVM_MAIN_SRC_DIR}/utils/GenLibDeps.pl -flat ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}/${CMAKE_CFG_INTDIR} ${NM_PATH} > ${LIBDEPS_TMP}
DEPENDS ${llvm_libs}
@@ -122,6 +124,7 @@ add_custom_command(OUTPUT ${LLVM_CONFIG}
add_custom_target(llvm-config.target ALL
DEPENDS ${LLVM_CONFIG})
+get_property(llvm_lib_targets GLOBAL PROPERTY LLVM_LIB_TARGETS)
add_dependencies(llvm-config.target ${llvm_lib_targets})
# Make sure that llvm-config builds before the llvm tools, so we have