diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2015-06-21 13:59:01 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2015-06-21 13:59:01 +0000 |
commit | 3a0822f094b578157263e04114075ad7df81db41 (patch) | |
tree | bc48361fe2cd1ca5f93ac01b38b183774468fc79 /tools/llvm-ar | |
parent | 85d8b2bbe386bcfe669575d05b61482d7be07e5d (diff) |
Diffstat (limited to 'tools/llvm-ar')
-rw-r--r-- | tools/llvm-ar/CMakeLists.txt | 10 | ||||
-rw-r--r-- | tools/llvm-ar/Makefile | 5 | ||||
-rw-r--r-- | tools/llvm-ar/install_symlink.cmake | 6 | ||||
-rw-r--r-- | tools/llvm-ar/llvm-ar.cpp | 17 |
4 files changed, 31 insertions, 7 deletions
diff --git a/tools/llvm-ar/CMakeLists.txt b/tools/llvm-ar/CMakeLists.txt index 3782c87e4d38..05ffe36fa7fe 100644 --- a/tools/llvm-ar/CMakeLists.txt +++ b/tools/llvm-ar/CMakeLists.txt @@ -1,6 +1,7 @@ set(LLVM_LINK_COMPONENTS ${LLVM_TARGETS_TO_BUILD} Core + LibDriver Object Support ) @@ -26,4 +27,13 @@ add_custom_command(OUTPUT ${llvm_ranlib} add_custom_target(llvm-ranlib ALL DEPENDS ${llvm_ranlib}) set_target_properties(llvm-ranlib PROPERTIES FOLDER Tools) +set(llvm_lib "${LLVM_RUNTIME_OUTPUT_INTDIR}/llvm-lib${CMAKE_EXECUTABLE_SUFFIX}") + +add_custom_command(OUTPUT ${llvm_lib} + COMMAND ${CMAKE_COMMAND} -E ${LLVM_LINK_OR_COPY} "${llvm_ar_binary}" "${llvm_lib}" + DEPENDS llvm-ar) + +add_custom_target(llvm-lib ALL DEPENDS ${llvm_lib}) +set_target_properties(llvm-lib PROPERTIES FOLDER Tools) + install(SCRIPT install_symlink.cmake -DCMAKE_INSTALL_PREFIX=\"${CMAKE_INSTALL_PREFIX}\") diff --git a/tools/llvm-ar/Makefile b/tools/llvm-ar/Makefile index e10d6ac6ab62..824bb9473000 100644 --- a/tools/llvm-ar/Makefile +++ b/tools/llvm-ar/Makefile @@ -10,9 +10,12 @@ LEVEL := ../.. TOOLNAME := llvm-ar TOOLALIAS = llvm-ranlib -LINK_COMPONENTS := all-targets bitreader support object +LINK_COMPONENTS := all-targets bitreader libdriver support object # This tool has no plugins, optimize startup time. TOOL_NO_EXPORTS := 1 include $(LEVEL)/Makefile.common + +all-local:: + $(Verb) $(AliasTool) $(notdir $(ToolBuildPath)) $(ToolDir)/llvm-lib$(EXEEXT) diff --git a/tools/llvm-ar/install_symlink.cmake b/tools/llvm-ar/install_symlink.cmake index e313897b8b3a..d48431b128de 100644 --- a/tools/llvm-ar/install_symlink.cmake +++ b/tools/llvm-ar/install_symlink.cmake @@ -23,3 +23,9 @@ message("Creating llvm-ranlib") execute_process( COMMAND "${CMAKE_COMMAND}" -E ${LINK_OR_COPY} "llvm-ar${EXECUTABLE_SUFFIX}" "llvm-ranlib${EXECUTABLE_SUFFIX}" WORKING_DIRECTORY "${bindir}") + +message("Creating llvm-lib") + +execute_process( + COMMAND "${CMAKE_COMMAND}" -E ${LINK_OR_COPY} "llvm-ar${EXECUTABLE_SUFFIX}" "llvm-lib${EXECUTABLE_SUFFIX}" + WORKING_DIRECTORY "${bindir}") diff --git a/tools/llvm-ar/llvm-ar.cpp b/tools/llvm-ar/llvm-ar.cpp index 1f55e8a4968b..6782b9c126ab 100644 --- a/tools/llvm-ar/llvm-ar.cpp +++ b/tools/llvm-ar/llvm-ar.cpp @@ -15,6 +15,7 @@ #include "llvm/ADT/StringSwitch.h" #include "llvm/IR/LLVMContext.h" #include "llvm/IR/Module.h" +#include "llvm/LibDriver/LibDriver.h" #include "llvm/Object/Archive.h" #include "llvm/Object/ArchiveWriter.h" #include "llvm/Object/ObjectFile.h" @@ -716,6 +717,15 @@ int main(int argc, char **argv) { PrettyStackTraceProgram X(argc, argv); llvm_shutdown_obj Y; // Call llvm_shutdown() on exit. + llvm::InitializeAllTargetInfos(); + llvm::InitializeAllTargetMCs(); + llvm::InitializeAllAsmParsers(); + + StringRef Stem = sys::path::stem(ToolName); + if (Stem.find("ranlib") == StringRef::npos && + Stem.find("lib") != StringRef::npos) + return libDriverMain(argc, const_cast<const char **>(argv)); + // Have the command line options parsed and handle things // like --help and --version. cl::ParseCommandLineOptions(argc, argv, @@ -723,14 +733,9 @@ int main(int argc, char **argv) { " This program archives bitcode files into single libraries\n" ); - llvm::InitializeAllTargetInfos(); - llvm::InitializeAllTargetMCs(); - llvm::InitializeAllAsmParsers(); - - StringRef Stem = sys::path::stem(ToolName); if (Stem.find("ar") != StringRef::npos) return ar_main(); if (Stem.find("ranlib") != StringRef::npos) return ranlib_main(); - fail("Not ranlib or ar!"); + fail("Not ranlib, ar or lib!"); } |