From: Sebastian Pop Date: Fri, 14 Mar 2014 04:04:14 +0000 (+0000) Subject: static link polly into tools X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=beaa95d97f319dc9b93b89850ab2ed9790182166;p=oota-llvm.git static link polly into tools git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@203886 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 49d1296950a..237701818ff 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -503,6 +503,8 @@ endif() add_subdirectory(projects) option(WITH_POLLY "Build LLVM with Polly" ON) +option(LINK_POLLY_INTO_TOOLS "Static link Polly into tools" OFF) + if(WITH_POLLY) if(NOT EXISTS ${LLVM_MAIN_SRC_DIR}/tools/polly/CMakeLists.txt) set(WITH_POLLY OFF) diff --git a/include/llvm/Config/config.h.cmake b/include/llvm/Config/config.h.cmake index 4a15197895b..ea1e75a76a0 100644 --- a/include/llvm/Config/config.h.cmake +++ b/include/llvm/Config/config.h.cmake @@ -498,6 +498,9 @@ /* Linker version detected at compile time. */ #undef HOST_LINK_VERSION +/* Define if we link Polly to the tools */ +#cmakedefine LINK_POLLY_INTO_TOOLS + /* Installation directory for binary executables */ #cmakedefine LLVM_BINDIR "${LLVM_BINDIR}" diff --git a/include/llvm/Config/llvm-config.h.cmake b/include/llvm/Config/llvm-config.h.cmake index 2b828a1ffb0..65116cb469c 100644 --- a/include/llvm/Config/llvm-config.h.cmake +++ b/include/llvm/Config/llvm-config.h.cmake @@ -121,4 +121,7 @@ /* Minor version of the LLVM API */ #cmakedefine LLVM_VERSION_MINOR ${LLVM_VERSION_MINOR} +/* Define if we link Polly to the tools */ +#cmakedefine LINK_POLLY_INTO_TOOLS + #endif diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt index c3ebe18b8a5..13b7f5af85a 100644 --- a/tools/CMakeLists.txt +++ b/tools/CMakeLists.txt @@ -1,5 +1,13 @@ add_llvm_tool_subdirectory(llvm-config) +# Build polly before the tools: the tools link against polly when +# LINK_POLLY_INTO_TOOLS is set. +if(WITH_POLLY) + add_llvm_external_project(polly) +else(WITH_POLLY) + list(APPEND LLVM_IMPLICIT_PROJECT_IGNORE "${LLVM_MAIN_SRC_DIR}/tools/polly") +endif(WITH_POLLY) + add_llvm_tool_subdirectory(opt) add_llvm_tool_subdirectory(llvm-as) add_llvm_tool_subdirectory(llvm-dis) @@ -67,12 +75,6 @@ if( NOT LLVM_INCLUDE_TOOLS STREQUAL "bootstrap-only" ) add_llvm_external_project(lld) add_llvm_external_project(lldb) - if(WITH_POLLY) - add_llvm_external_project(polly) - else(WITH_POLLY) - list(APPEND LLVM_IMPLICIT_PROJECT_IGNORE "${LLVM_MAIN_SRC_DIR}/tools/polly") - endif(WITH_POLLY) - # Automatically add remaining sub-directories containing a 'CMakeLists.txt' # file as external projects. add_llvm_implicit_external_projects() diff --git a/tools/bugpoint/CMakeLists.txt b/tools/bugpoint/CMakeLists.txt index b537a5d237d..d71e097918c 100644 --- a/tools/bugpoint/CMakeLists.txt +++ b/tools/bugpoint/CMakeLists.txt @@ -32,3 +32,12 @@ add_llvm_tool(bugpoint bugpoint.cpp ) set_target_properties(bugpoint PROPERTIES ENABLE_EXPORTS 1) + +if(WITH_POLLY AND LINK_POLLY_INTO_TOOLS) + target_link_libraries(bugpoint Polly) + if(POLLY_LINK_LIBS) + foreach(lib ${POLLY_LINK_LIBS}) + target_link_libraries(bugpoint ${lib}) + endforeach(lib) + endif(POLLY_LINK_LIBS) +endif(WITH_POLLY AND LINK_POLLY_INTO_TOOLS) diff --git a/tools/bugpoint/bugpoint.cpp b/tools/bugpoint/bugpoint.cpp index b79434080dd..5c03b41abbe 100644 --- a/tools/bugpoint/bugpoint.cpp +++ b/tools/bugpoint/bugpoint.cpp @@ -109,6 +109,12 @@ namespace { }; } +#ifdef LINK_POLLY_INTO_TOOLS +namespace polly { +void initializePollyPasses(llvm::PassRegistry &Registry); +} +#endif + int main(int argc, char **argv) { #ifndef DEBUG_BUGPOINT llvm::sys::PrintStackTraceOnErrorSignal(); @@ -130,6 +136,10 @@ int main(int argc, char **argv) { initializeInstrumentation(Registry); initializeTarget(Registry); +#ifdef LINK_POLLY_INTO_TOOLS + polly::initializePollyPasses(Registry); +#endif + cl::ParseCommandLineOptions(argc, argv, "LLVM automatic testcase reducer. See\nhttp://" "llvm.org/cmds/bugpoint.html" diff --git a/tools/opt/CMakeLists.txt b/tools/opt/CMakeLists.txt index 1f76ab55511..1d3f08db7d2 100644 --- a/tools/opt/CMakeLists.txt +++ b/tools/opt/CMakeLists.txt @@ -32,3 +32,12 @@ add_llvm_tool(opt opt.cpp ) set_target_properties(opt PROPERTIES ENABLE_EXPORTS 1) + +if(WITH_POLLY AND LINK_POLLY_INTO_TOOLS) + target_link_libraries(opt Polly) + if(POLLY_LINK_LIBS) + foreach(lib ${POLLY_LINK_LIBS}) + target_link_libraries(opt ${lib}) + endforeach(lib) + endif(POLLY_LINK_LIBS) +endif(WITH_POLLY AND LINK_POLLY_INTO_TOOLS) diff --git a/tools/opt/opt.cpp b/tools/opt/opt.cpp index 4dd9544fc32..5a198816e67 100644 --- a/tools/opt/opt.cpp +++ b/tools/opt/opt.cpp @@ -304,6 +304,12 @@ static TargetMachine* GetTargetMachine(Triple TheTriple) { GetCodeGenOptLevel()); } +#ifdef LINK_POLLY_INTO_TOOLS +namespace polly { +void initializePollyPasses(llvm::PassRegistry &Registry); +} +#endif + //===----------------------------------------------------------------------===// // main for opt // @@ -338,6 +344,10 @@ int main(int argc, char **argv) { // supported. For now, just add CodeGenPrepare. initializeCodeGenPreparePass(Registry); +#ifdef LINK_POLLY_INTO_TOOLS + polly::initializePollyPasses(Registry); +#endif + cl::ParseCommandLineOptions(argc, argv, "llvm .bc -> .bc modular optimizer and analysis printer\n");