From 94d1e67cb555f544252a88235a33a2caa378ae63 Mon Sep 17 00:00:00 2001 From: Nico Weber Date: Mon, 30 Dec 2013 03:36:05 +0000 Subject: [PATCH] Port r198087 and r198089 (strip dead code by default) from make to cmake. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198198 91177308-0d34-0410-b5e6-96231b3b80d8 --- cmake/modules/AddLLVM.cmake | 22 ++++++++++++++++++++ tools/bugpoint/CMakeLists.txt | 3 +++ tools/llc/CMakeLists.txt | 3 +++ tools/opt/CMakeLists.txt | 3 +++ unittests/ExecutionEngine/JIT/CMakeLists.txt | 3 +++ 5 files changed, 34 insertions(+) diff --git a/cmake/modules/AddLLVM.cmake b/cmake/modules/AddLLVM.cmake index 3d0c53d1eb2..6840cfca81f 100644 --- a/cmake/modules/AddLLVM.cmake +++ b/cmake/modules/AddLLVM.cmake @@ -76,10 +76,30 @@ function(add_llvm_symbol_exports target_name export_file) add_dependencies(${target_name} ${target_name}_exports) endfunction(add_llvm_symbol_exports) +function(add_dead_strip target_name) + if(NOT CYGWIN AND NOT MINGW) + if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + SET(CMAKE_CXX_FLAGS + "${CMAKE_CXX_FLAGS} -ffunction-sections -fdata-sections" + PARENT_SCOPE) + endif() + endif() + if(NOT LLVM_NO_DEAD_STRIP) + if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + set_property(TARGET ${target_name} APPEND_STRING PROPERTY + LINK_FLAGS " -Wl,-dead_strip") + elseif(NOT WIN32) + set_property(TARGET ${target_name} APPEND_STRING PROPERTY + LINK_FLAGS " -Wl,--gc-sections") + endif() + endif() +endfunction(add_dead_strip) + macro(add_llvm_library name) llvm_process_sources( ALL_FILES ${ARGN} ) add_library( ${name} ${ALL_FILES} ) set_property( GLOBAL APPEND PROPERTY LLVM_LIBS ${name} ) + add_dead_strip( ${name} ) if( LLVM_COMMON_DEPENDS ) add_dependencies( ${name} ${LLVM_COMMON_DEPENDS} ) endif( LLVM_COMMON_DEPENDS ) @@ -137,6 +157,7 @@ ${name} ignored.") add_library( ${name} ${libkind} ${ALL_FILES} ) set_target_properties( ${name} PROPERTIES PREFIX "" ) + add_dead_strip( ${name} ) if (LLVM_EXPORTED_SYMBOL_FILE) add_llvm_symbol_exports( ${name} ${LLVM_EXPORTED_SYMBOL_FILE} ) @@ -173,6 +194,7 @@ macro(add_llvm_executable name) else() add_executable(${name} ${ALL_FILES}) endif() + add_dead_strip( ${name} ) if (LLVM_EXPORTED_SYMBOL_FILE) add_llvm_symbol_exports( ${name} ${LLVM_EXPORTED_SYMBOL_FILE} ) diff --git a/tools/bugpoint/CMakeLists.txt b/tools/bugpoint/CMakeLists.txt index 7e7ad0e94cf..14f5a3b004b 100644 --- a/tools/bugpoint/CMakeLists.txt +++ b/tools/bugpoint/CMakeLists.txt @@ -16,6 +16,9 @@ set(LLVM_LINK_COMPONENTS Vectorize ) +# Support plugins. +set(LLVM_NO_DEAD_STRIP 1) + add_llvm_tool(bugpoint BugDriver.cpp CrashDebugger.cpp diff --git a/tools/llc/CMakeLists.txt b/tools/llc/CMakeLists.txt index 9a3d411a283..393d64c0ef0 100644 --- a/tools/llc/CMakeLists.txt +++ b/tools/llc/CMakeLists.txt @@ -11,6 +11,9 @@ set(LLVM_LINK_COMPONENTS Target ) +# Support plugins. +set(LLVM_NO_DEAD_STRIP 1) + add_llvm_tool(llc llc.cpp ) diff --git a/tools/opt/CMakeLists.txt b/tools/opt/CMakeLists.txt index 816edeae2dc..f96f9b35ef5 100644 --- a/tools/opt/CMakeLists.txt +++ b/tools/opt/CMakeLists.txt @@ -17,6 +17,9 @@ set(LLVM_LINK_COMPONENTS Vectorize ) +# Support plugins. +set(LLVM_NO_DEAD_STRIP 1) + add_llvm_tool(opt AnalysisWrappers.cpp GraphPrinters.cpp diff --git a/unittests/ExecutionEngine/JIT/CMakeLists.txt b/unittests/ExecutionEngine/JIT/CMakeLists.txt index d5e0b2eea84..72c1df7463d 100644 --- a/unittests/ExecutionEngine/JIT/CMakeLists.txt +++ b/unittests/ExecutionEngine/JIT/CMakeLists.txt @@ -51,6 +51,9 @@ if(MSVC) list(APPEND JITTestsSources JITTests.def) endif() +# The JIT tests need to dlopen things. +set(LLVM_NO_DEAD_STRIP 1) + add_llvm_unittest(JITTests ${JITTestsSources} )