Port r198087 and r198089 (strip dead code by default) from make to cmake.
authorNico Weber <nicolasweber@gmx.de>
Mon, 30 Dec 2013 03:36:05 +0000 (03:36 +0000)
committerNico Weber <nicolasweber@gmx.de>
Mon, 30 Dec 2013 03:36:05 +0000 (03:36 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198198 91177308-0d34-0410-b5e6-96231b3b80d8

cmake/modules/AddLLVM.cmake
tools/bugpoint/CMakeLists.txt
tools/llc/CMakeLists.txt
tools/opt/CMakeLists.txt
unittests/ExecutionEngine/JIT/CMakeLists.txt

index 3d0c53d1eb2b454172d788de18ff271ad3d877c0..6840cfca81fad270080e5baa68daa4cd1d725e5b 100644 (file)
@@ -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} )
index 7e7ad0e94cf000d27e85ecb14439c18feb5c1393..14f5a3b004b450a02dd4823668fc4304827bc29c 100644 (file)
@@ -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
index 9a3d411a283d8cc66b34df4a995a982a3e70ec21..393d64c0ef086e29b964337f2c26aeb59f5f1abe 100644 (file)
@@ -11,6 +11,9 @@ set(LLVM_LINK_COMPONENTS
   Target
   )
 
+# Support plugins.
+set(LLVM_NO_DEAD_STRIP 1)
+
 add_llvm_tool(llc
   llc.cpp
   )
index 816edeae2dc965cd95336f3fe5395390dc1efdd6..f96f9b35ef56a1906959947b2d09726686baa64c 100644 (file)
@@ -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
index d5e0b2eea84240896c4f8a5b167bec5a272877c7..72c1df7463d394da5643ec0e5de2f6b1db723aa4 100644 (file)
@@ -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}
   )