diff --git a/clang/tools/driver/CMakeLists.txt b/clang/tools/driver/CMakeLists.txt --- a/clang/tools/driver/CMakeLists.txt +++ b/clang/tools/driver/CMakeLists.txt @@ -19,10 +19,9 @@ option(CLANG_PLUGIN_SUPPORT "Build clang with plugin support" ON) -# Support plugins. This must be before add_clang_executable as it reads -# LLVM_SUPPORT_PLUGINS. +# Support plugins. if(CLANG_PLUGIN_SUPPORT) - set(LLVM_SUPPORT_PLUGINS 1) + set(support_plugins SUPPORT_PLUGINS) endif() if(NOT CLANG_BUILT_STANDALONE) @@ -37,6 +36,7 @@ DEPENDS ${tablegen_deps} + ${support_plugins} ) clang_target_link_libraries(clang diff --git a/llvm/cmake/modules/AddLLVM.cmake b/llvm/cmake/modules/AddLLVM.cmake --- a/llvm/cmake/modules/AddLLVM.cmake +++ b/llvm/cmake/modules/AddLLVM.cmake @@ -228,7 +228,7 @@ # to enable. See https://sourceware.org/bugzilla/show_bug.cgi?id=17704. endif() - if(NOT LLVM_SUPPORT_PLUGINS) + if(NOT LLVM_NO_DEAD_STRIP) if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") # ld64's implementation of -dead_strip breaks tools that use plugins. set_property(TARGET ${target_name} APPEND_STRING PROPERTY @@ -245,7 +245,7 @@ set_property(TARGET ${target_name} APPEND_STRING PROPERTY LINK_FLAGS " -Wl,--gc-sections") endif() - else() #LLVM_SUPPORT_PLUGINS + else() #LLVM_NO_DEAD_STRIP if(${CMAKE_SYSTEM_NAME} MATCHES "AIX") set_property(TARGET ${target_name} APPEND_STRING PROPERTY LINK_FLAGS " -Wl,-bnogc") @@ -732,7 +732,7 @@ macro(add_llvm_executable name) cmake_parse_arguments(ARG - "DISABLE_LLVM_LINK_LLVM_DYLIB;IGNORE_EXTERNALIZE_DEBUGINFO;NO_INSTALL_RPATH" + "DISABLE_LLVM_LINK_LLVM_DYLIB;IGNORE_EXTERNALIZE_DEBUGINFO;NO_INSTALL_RPATH;SUPPORT_PLUGINS" "ENTITLEMENTS;BUNDLE_PATH" "DEPENDS" ${ARGN}) @@ -782,6 +782,11 @@ if(NOT LLVM_ENABLE_OBJLIB) llvm_update_compile_flags(${name}) endif() + + if (ARG_SUPPORT_PLUGINS) + set(LLVM_NO_DEAD_STRIP On) + endif() + add_link_opts( ${name} ) # Do not add -Dname_EXPORTS to the command-line when building files in this diff --git a/llvm/cmake/modules/HandleLLVMOptions.cmake b/llvm/cmake/modules/HandleLLVMOptions.cmake --- a/llvm/cmake/modules/HandleLLVMOptions.cmake +++ b/llvm/cmake/modules/HandleLLVMOptions.cmake @@ -744,7 +744,7 @@ # Add flags for add_dead_strip(). # FIXME: With MSVS, consider compiling with /Gy and linking with /OPT:REF? # But MinSizeRel seems to add that automatically, so maybe disable these -# flags instead if LLVM_SUPPORT_PLUGINS is set. +# flags instead if LLVM_NO_DEAD_STRIP is set. if(NOT CYGWIN AND NOT WIN32) if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin" AND NOT uppercase_CMAKE_BUILD_TYPE STREQUAL "DEBUG") diff --git a/llvm/tools/bugpoint/CMakeLists.txt b/llvm/tools/bugpoint/CMakeLists.txt --- a/llvm/tools/bugpoint/CMakeLists.txt +++ b/llvm/tools/bugpoint/CMakeLists.txt @@ -21,9 +21,6 @@ Vectorize ) -# Support plugins. -set(LLVM_SUPPORT_PLUGINS 1) - add_llvm_tool(bugpoint BugDriver.cpp CrashDebugger.cpp @@ -37,6 +34,7 @@ DEPENDS intrinsics_gen + SUPPORT_PLUGINS ) export_executable_symbols(bugpoint) diff --git a/llvm/tools/llc/CMakeLists.txt b/llvm/tools/llc/CMakeLists.txt --- a/llvm/tools/llc/CMakeLists.txt +++ b/llvm/tools/llc/CMakeLists.txt @@ -19,13 +19,11 @@ Vectorize ) -# Support plugins. -set(LLVM_SUPPORT_PLUGINS 1) - add_llvm_tool(llc llc.cpp DEPENDS intrinsics_gen + SUPPORT_PLUGINS ) export_executable_symbols(llc) diff --git a/llvm/tools/opt/CMakeLists.txt b/llvm/tools/opt/CMakeLists.txt --- a/llvm/tools/opt/CMakeLists.txt +++ b/llvm/tools/opt/CMakeLists.txt @@ -24,9 +24,6 @@ Passes ) -# Support plugins. -set(LLVM_SUPPORT_PLUGINS 1) - add_llvm_tool(opt AnalysisWrappers.cpp BreakpointPrinter.cpp @@ -39,6 +36,7 @@ DEPENDS intrinsics_gen + SUPPORT_PLUGINS ) export_executable_symbols(opt)