From 3d01fc7de86c75926e4e5ac7cc49f0116018893d Mon Sep 17 00:00:00 2001 From: Oscar Fuentes Date: Mon, 22 Sep 2008 01:08:49 +0000 Subject: Initial support for the CMake build system. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56419 91177308-0d34-0410-b5e6-96231b3b80d8 --- tools/CMakeLists.txt | 32 +++++++++++ tools/bugpoint/CMakeLists.txt | 16 ++++++ tools/llc/CMakeLists.txt | 5 ++ tools/lli/CMakeLists.txt | 5 ++ tools/llvm-ar/CMakeLists.txt | 8 +++ tools/llvm-as/CMakeLists.txt | 6 +++ tools/llvm-bcanalyzer/CMakeLists.txt | 6 +++ tools/llvm-config/CMakeLists.txt | 102 +++++++++++++++++++++++++++++++++++ tools/llvm-db/CMakeLists.txt | 8 +++ tools/llvm-dis/CMakeLists.txt | 6 +++ tools/llvm-extract/CMakeLists.txt | 5 ++ tools/llvm-ld/CMakeLists.txt | 7 +++ tools/llvm-link/CMakeLists.txt | 5 ++ tools/llvm-nm/CMakeLists.txt | 5 ++ tools/llvm-prof/CMakeLists.txt | 6 +++ tools/llvm-ranlib/CMakeLists.txt | 6 +++ tools/llvm-stub/CMakeLists.txt | 3 ++ tools/llvmc2/CMakeLists.txt | 32 +++++++++++ tools/opt/CMakeLists.txt | 9 ++++ 19 files changed, 272 insertions(+) create mode 100644 tools/CMakeLists.txt create mode 100644 tools/bugpoint/CMakeLists.txt create mode 100644 tools/llc/CMakeLists.txt create mode 100644 tools/lli/CMakeLists.txt create mode 100644 tools/llvm-ar/CMakeLists.txt create mode 100644 tools/llvm-as/CMakeLists.txt create mode 100644 tools/llvm-bcanalyzer/CMakeLists.txt create mode 100644 tools/llvm-config/CMakeLists.txt create mode 100644 tools/llvm-db/CMakeLists.txt create mode 100644 tools/llvm-dis/CMakeLists.txt create mode 100644 tools/llvm-extract/CMakeLists.txt create mode 100644 tools/llvm-ld/CMakeLists.txt create mode 100644 tools/llvm-link/CMakeLists.txt create mode 100644 tools/llvm-nm/CMakeLists.txt create mode 100644 tools/llvm-prof/CMakeLists.txt create mode 100644 tools/llvm-ranlib/CMakeLists.txt create mode 100644 tools/llvm-stub/CMakeLists.txt create mode 100644 tools/llvmc2/CMakeLists.txt create mode 100644 tools/opt/CMakeLists.txt (limited to 'tools') diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt new file mode 100644 index 0000000000..8909cbd266 --- /dev/null +++ b/tools/CMakeLists.txt @@ -0,0 +1,32 @@ +# NOTE: The tools are organized into five groups of four consisting of one +# large and three small executables. This is done to minimize memory load +# in parallel builds. Please retain this ordering. + +if( NOT MSVC ) + add_subdirectory(llvm-config) +endif( NOT MSVC ) + +add_subdirectory(opt) +add_subdirectory(llvm-as) +add_subdirectory(llvm-dis) + +add_subdirectory(llc) +add_subdirectory(llvm-ranlib) +add_subdirectory(llvm-ar) +add_subdirectory(llvm-nm) + +add_subdirectory(llvm-ld) +add_subdirectory(llvm-prof) +add_subdirectory(llvm-link) +add_subdirectory(lli) + +# gccas and gccld are deprecated: +# add_subdirectory(gccas) +# add_subdirectory(gccld) +add_subdirectory(llvm-extract) +add_subdirectory(llvm-db) + +add_subdirectory(bugpoint) +add_subdirectory(llvm-bcanalyzer) +add_subdirectory(llvm-stub) +add_subdirectory(llvmc2) diff --git a/tools/bugpoint/CMakeLists.txt b/tools/bugpoint/CMakeLists.txt new file mode 100644 index 0000000000..90f24bac58 --- /dev/null +++ b/tools/bugpoint/CMakeLists.txt @@ -0,0 +1,16 @@ +set(LLVM_LINK_COMPONENTS asmparser instrumentation scalaropts ipo + linker bitreader bitwriter) +set(LLVM_REQUIRES_EH 1) + +add_llvm_tool(bugpoint + BugDriver.cpp + CrashDebugger.cpp + ExecutionDriver.cpp + ExtractFunction.cpp + FindBugs.cpp + Miscompilation.cpp + OptimizerDriver.cpp + TestPasses.cpp + ToolRunner.cpp + bugpoint.cpp + ) diff --git a/tools/llc/CMakeLists.txt b/tools/llc/CMakeLists.txt new file mode 100644 index 0000000000..43f30be208 --- /dev/null +++ b/tools/llc/CMakeLists.txt @@ -0,0 +1,5 @@ +set(LLVM_LINK_COMPONENTS ${LLVM_TARGETS_TO_BUILD} bitreader asmprinter) + +add_llvm_tool(llc + llc.cpp + ) diff --git a/tools/lli/CMakeLists.txt b/tools/lli/CMakeLists.txt new file mode 100644 index 0000000000..ce70d46e4a --- /dev/null +++ b/tools/lli/CMakeLists.txt @@ -0,0 +1,5 @@ +set(LLVM_LINK_COMPONENTS jit interpreter nativecodegen bitreader selectiondag) + +add_llvm_tool(lli + lli.cpp + ) diff --git a/tools/llvm-ar/CMakeLists.txt b/tools/llvm-ar/CMakeLists.txt new file mode 100644 index 0000000000..c8b0b725d8 --- /dev/null +++ b/tools/llvm-ar/CMakeLists.txt @@ -0,0 +1,8 @@ +set(LLVM_LINK_COMPONENTS archive) +set(LLVM_REQUIRES_EH 1) + +add_llvm_tool(llvm-ar + llvm-ar.cpp + ) + +# TODO: Support check-local. diff --git a/tools/llvm-as/CMakeLists.txt b/tools/llvm-as/CMakeLists.txt new file mode 100644 index 0000000000..eef4a13e29 --- /dev/null +++ b/tools/llvm-as/CMakeLists.txt @@ -0,0 +1,6 @@ +set(LLVM_LINK_COMPONENTS asmparser bitwriter) +set(LLVM_REQUIRES_EH 1) + +add_llvm_tool(llvm-as + llvm-as.cpp + ) diff --git a/tools/llvm-bcanalyzer/CMakeLists.txt b/tools/llvm-bcanalyzer/CMakeLists.txt new file mode 100644 index 0000000000..732bc3296f --- /dev/null +++ b/tools/llvm-bcanalyzer/CMakeLists.txt @@ -0,0 +1,6 @@ +set(LLVM_LINK_COMPONENTS bitreader) +set(LLVM_REQUIRES_EH 1) + +add_llvm_tool(llvm-bcanalyzer + llvm-bcanalyzer.cpp + ) diff --git a/tools/llvm-config/CMakeLists.txt b/tools/llvm-config/CMakeLists.txt new file mode 100644 index 0000000000..2d6898c2db --- /dev/null +++ b/tools/llvm-config/CMakeLists.txt @@ -0,0 +1,102 @@ +include(TestBigEndian) + +if( NOT PERL_FOUND ) + message(FATAL_ERROR "Perl required but not found!") +endif( NOT PERL_FOUND ) + +set(PERL ${PERL_EXECUTABLE}) +set(VERSION PACKAGE_VERSION) +set(PREFIX ${LLVM_BINARY_DIR}) # TODO: Root for `make install'. +execute_process(COMMAND date + OUTPUT_VARIABLE LLVM_CONFIGTIME + OUTPUT_STRIP_TRAILING_WHITESPACE) +set(abs_top_srcdir ${LLVM_MAIN_SRC_DIR}) +set(abs_top_builddir ${LLVM_BINARY_DIR}) +# LLVM_ON_UNIX and LLVM_ON_WIN32 already set. +# those are set to blank by `autoconf' on MinGW, so it seems they are not required: +#set(LLVMGCCDIR "") +#set(LLVMGCC "") +#set(LLVMGXX "") +#set(LLVMGCC_VERSION "") +#set(LLVMGCC_MAJVERS "") +test_big_endian(IS_BIG_ENDIAN) +if( IS_BIG_ENDIAN ) + set(ENDIAN "big") +else( IS_BIG_ENDIAN ) + set(ENDIAN "little") +endif( IS_BIG_ENDIAN ) +set(SHLIBEXT ${LTDL_SHLIB_EXT}) +#EXEEXT already set. +set(OS "${CMAKE_SYSTEM}") +set(ARCH "X86") # TODO: This gives "i686" in Linux: "${CMAKE_SYSTEM_PROCESSOR}") +# TODO: avoid using autoconf: +set(config_guess ${LLVM_MAIN_SRC_DIR}/autoconf/config.guess) +execute_process(COMMAND sh ${config_guess} + RESULT_VARIABLE TT_RV + OUTPUT_VARIABLE LLVM_TARGET_TRIPLET + OUTPUT_STRIP_TRAILING_WHITESPACE) +message(STATUS "Target triplet: ${LLVM_TARGET_TRIPLET}") +if( NOT TT_RV EQUAL 0 ) + message(FATAL_ERROR "Failed to execute ${config_guess}") +endif( NOT TT_RV EQUAL 0 ) +set(target ${LLVM_TARGET_TRIPLET}) +set(TARGETS_TO_BUILD "X86") # TODO +set(TARGET_HAS_JIT "1") # TODO + +# Avoids replacement at config-time: +set(LLVM_CPPFLAGS "@LLVM_CPPFLAGS@") +set(LLVM_CFLAGS "@LLVM_CFLAGS@") +set(LLVM_CXXFLAGS "@LLVM_CXXFLAGS@") +set(LLVM_LDFLAGS "@LLVM_LDFLAGS@") +set(LIBS "@LIBS@") +set(LLVM_BUILDMODE "@LLVM_BUILDMODE@") + +configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/llvm-config.in.in + ${CMAKE_CURRENT_BINARY_DIR}/llvm-config.in + @ONLY +) + +set(LIBDEPS ${CMAKE_CURRENT_BINARY_DIR}/LibDeps.txt) +set(LIBDEPS_TMP ${CMAKE_CURRENT_BINARY_DIR}/LibDeps.txt.tmp) +set(FINAL_LIBDEPS ${CMAKE_CURRENT_BINARY_DIR}/FinalLibDeps.txt) +set(LLVM_CONFIG ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/llvm-config) +set(LLVM_CONFIG_IN ${CMAKE_CURRENT_BINARY_DIR}/llvm-config.in) + +# set(LIBDEPS LibDeps.txt) +# set(LIBDEPS_TMP LibDeps.txt.tmp) +# set(FINAL_LIBDEPS FinalLibDeps.txt) + +add_custom_command(OUTPUT ${LIBDEPS_TMP} + COMMAND ${PERL_EXECUTABLE} ${LLVM_MAIN_SRC_DIR}/utils/GenLibDeps.pl -flat ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY} > ${LIBDEPS_TMP} + DEPENDS ${llvm_libs} + COMMENT "Regenerating ${LIBDEPS_TMP}") + +add_custom_command(OUTPUT ${LIBDEPS} + COMMAND cmp -s ${LIBDEPS_TMP} ${LIBDEPS} || \( cp ${LIBDEPS_TMP} ${LIBDEPS} && echo "Updated ${LIBDEPS} because dependencies changed" \) + DEPENDS ${LIBDEPS_TMP}) + +add_custom_command(OUTPUT ${FINAL_LIBDEPS} + COMMAND ${PERL_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/find-cycles.pl < ${LIBDEPS} > ${FINAL_LIBDEPS} || rm -f ${FINAL_LIBDEPS} + DEPENDS ${LIBDEPS} + COMMENT "Checking for cyclic dependencies between LLVM libraries.") + +add_custom_command(OUTPUT ${LLVM_CONFIG} + COMMAND echo 's,@LLVM_CPPFLAGS@,${CMAKE_CPP_FLAGS},' > temp.sed + COMMAND echo 's,@LLVM_CFLAGS@,${CMAKE_C_FLAGS},' >> temp.sed + COMMAND echo 's,@LLVM_CXXFLAGS@,${CMAKE_CXX_FLAGS},' >> temp.sed + # TODO: Use general flags for linking, not just for shared libs: + COMMAND echo 's,@LLVM_LDFLAGS@,${CMAKE_SHARED_LINKER_FLAGS},' >> temp.sed + COMMAND echo 's,@LIBS@,,' >> temp.sed # TODO: System libs + COMMAND echo 's,@LLVM_BUILDMODE@,${CMAKE_BUILD_TYPE},' >> temp.sed + COMMAND sed -f temp.sed < ${LLVM_CONFIG_IN} > ${LLVM_CONFIG} + COMMAND rm temp.sed + COMMAND cat ${FINAL_LIBDEPS} >> ${LLVM_CONFIG} + COMMAND chmod +x ${LLVM_CONFIG} + COMMAND cd ${LLVM_BINARY_DIR} && ${CMAKE_COMMAND} -U HAVE_LLVM_CONFIG ${LLVM_MAIN_SRC_DIR} + DEPENDS ${FINAL_LIBDEPS} ${LLVM_CONFIG_IN} + COMMENT "Building llvm-config script." + ) + +add_custom_target(llvm-config.target ALL + DEPENDS ${LLVM_CONFIG}) \ No newline at end of file diff --git a/tools/llvm-db/CMakeLists.txt b/tools/llvm-db/CMakeLists.txt new file mode 100644 index 0000000000..af64908171 --- /dev/null +++ b/tools/llvm-db/CMakeLists.txt @@ -0,0 +1,8 @@ +set(LLVM_LINK_COMPONENTS debugger) +set(LLVM_REQUIRES_EH 1) + +add_llvm_tool(llvm-db + CLIDebugger.cpp + Commands.cpp + llvm-db.cpp + ) diff --git a/tools/llvm-dis/CMakeLists.txt b/tools/llvm-dis/CMakeLists.txt new file mode 100644 index 0000000000..d62a6b5ec8 --- /dev/null +++ b/tools/llvm-dis/CMakeLists.txt @@ -0,0 +1,6 @@ +set(LLVM_LINK_COMPONENTS bitreader) +set(LLVM_REQUIRES_EH 1) + +add_llvm_tool(llvm-dis + llvm-dis.cpp + ) diff --git a/tools/llvm-extract/CMakeLists.txt b/tools/llvm-extract/CMakeLists.txt new file mode 100644 index 0000000000..88e9343ffa --- /dev/null +++ b/tools/llvm-extract/CMakeLists.txt @@ -0,0 +1,5 @@ +set(LLVM_LINK_COMPONENTS ipo bitreader bitwriter) + +add_llvm_tool(llvm-extract + llvm-extract.cpp + ) diff --git a/tools/llvm-ld/CMakeLists.txt b/tools/llvm-ld/CMakeLists.txt new file mode 100644 index 0000000000..51f0dc1304 --- /dev/null +++ b/tools/llvm-ld/CMakeLists.txt @@ -0,0 +1,7 @@ +set(LLVM_LINK_COMPONENTS ipo scalaropts linker archive bitwriter) +set(LLVM_REQUIRES_EH 1) + +add_llvm_tool(llvm-ld + Optimize.cpp + llvm-ld.cpp + ) diff --git a/tools/llvm-link/CMakeLists.txt b/tools/llvm-link/CMakeLists.txt new file mode 100644 index 0000000000..69a435e530 --- /dev/null +++ b/tools/llvm-link/CMakeLists.txt @@ -0,0 +1,5 @@ +set(LLVM_LINK_COMPONENTS linker bitreader bitwriter) + +add_llvm_tool(llvm-link + llvm-link.cpp + ) diff --git a/tools/llvm-nm/CMakeLists.txt b/tools/llvm-nm/CMakeLists.txt new file mode 100644 index 0000000000..45cf1b67f9 --- /dev/null +++ b/tools/llvm-nm/CMakeLists.txt @@ -0,0 +1,5 @@ +set(LLVM_LINK_COMPONENTS archive bitreader) + +add_llvm_tool(llvm-nm + llvm-nm.cpp + ) diff --git a/tools/llvm-prof/CMakeLists.txt b/tools/llvm-prof/CMakeLists.txt new file mode 100644 index 0000000000..9a5115085d --- /dev/null +++ b/tools/llvm-prof/CMakeLists.txt @@ -0,0 +1,6 @@ +set(LLVM_LINK_COMPONENTS bitreader analysis) +set(LLVM_REQUIRES_EH 1) + +add_llvm_tool(llvm-prof + llvm-prof.cpp + ) diff --git a/tools/llvm-ranlib/CMakeLists.txt b/tools/llvm-ranlib/CMakeLists.txt new file mode 100644 index 0000000000..3116d2e4ff --- /dev/null +++ b/tools/llvm-ranlib/CMakeLists.txt @@ -0,0 +1,6 @@ +set(LLVM_LINK_COMPONENTS archive) +set(LLVM_REQUIRES_EH 1) + +add_llvm_tool(llvm-ranlib + llvm-ranlib.cpp + ) diff --git a/tools/llvm-stub/CMakeLists.txt b/tools/llvm-stub/CMakeLists.txt new file mode 100644 index 0000000000..a98dc9ed49 --- /dev/null +++ b/tools/llvm-stub/CMakeLists.txt @@ -0,0 +1,3 @@ +add_llvm_tool(llvm-stub + llvm-stub.c + ) diff --git a/tools/llvmc2/CMakeLists.txt b/tools/llvmc2/CMakeLists.txt new file mode 100644 index 0000000000..6f4872b2d0 --- /dev/null +++ b/tools/llvmc2/CMakeLists.txt @@ -0,0 +1,32 @@ +set(LLVM_LINK_COMPONENTS support system) +set(LLVM_REQUIRES_EH 1) + +macro(tgen ofn) + add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${ofn} + COMMAND tblgen ${ARGN} -I ${CMAKE_CURRENT_SOURCE_DIR} -I ${CMAKE_SOURCE_DIR}/lib/Target -I ${llvm_include_path} ${CMAKE_CURRENT_SOURCE_DIR}/Graph.td -o ${ofn} + DEPENDS + tblgen + ${CMAKE_CURRENT_SOURCE_DIR}/Common.td + ${CMAKE_CURRENT_SOURCE_DIR}/Graph.td + ${CMAKE_CURRENT_SOURCE_DIR}/Tools.td + COMMENT "Building ${ofn}..." + ) +endmacro(tgen ofn) + +tgen(AutoGenerated.inc -gen-llvmc) + +add_custom_target(AutoGenerated_ct echo Tablegenning + DEPENDS + ${CMAKE_CURRENT_BINARY_DIR}/AutoGenerated.inc + ) + +include_directories( ${CMAKE_CURRENT_BINARY_DIR} ) + +add_llvm_tool(llvmc2 + Action.cpp + AutoGenerated.cpp + CompilationGraph.cpp + llvmc.cpp + ) + +add_dependencies(llvmc2 AutoGenerated_ct) diff --git a/tools/opt/CMakeLists.txt b/tools/opt/CMakeLists.txt new file mode 100644 index 0000000000..efcca80ddf --- /dev/null +++ b/tools/opt/CMakeLists.txt @@ -0,0 +1,9 @@ +set(LLVM_REQUIRES_EH 1) +set(LLVM_LINK_COMPONENTS bitreader bitwriter instrumentation scalaropts ipo) + +add_llvm_tool(opt + AnalysisWrappers.cpp + GraphPrinters.cpp + PrintSCC.cpp + opt.cpp + ) -- cgit v1.2.3