[PATCH] [CMake] Introduce LLVM_DEAD_STRIP instead of LLVM_NO_DEAD_STRIP

Nico Weber thakis at chromium.org
Tue Mar 4 13:26:32 PST 2014


Do you want to change llvm/Makefile.rules too? (I picked the current name
to be consistent with the Makefile. I agree not having a double negative is
nice, but having the same name in cmake and make is nicer, imho.)


On Tue, Mar 4, 2014 at 7:48 AM, NAKAMURA Takumi <geek4civic at gmail.com>wrote:

> Hi chandlerc,
>
> I think "LLVM_NO_DEAD_STRIP" would confuse like a double negative.
> I propose "LLVM_DEAD_STRIP", ON if available. Each executable can turn it
> OFF.
>
> http://llvm-reviews.chandlerc.com/D2941
>
> Files:
>   clang/tools/driver/CMakeLists.txt
>   llvm/cmake/modules/AddLLVM.cmake
>   llvm/cmake/modules/HandleLLVMOptions.cmake
>   llvm/tools/bugpoint/CMakeLists.txt
>   llvm/tools/llc/CMakeLists.txt
>   llvm/tools/opt/CMakeLists.txt
>   llvm/unittests/ExecutionEngine/JIT/CMakeLists.txt
>
> Index: clang/tools/driver/CMakeLists.txt
> ===================================================================
> --- clang/tools/driver/CMakeLists.txt
> +++ clang/tools/driver/CMakeLists.txt
> @@ -17,7 +17,7 @@
>    )
>
>  # Support plugins.
> -set(LLVM_NO_DEAD_STRIP 1)
> +set(LLVM_DEAD_STRIP OFF)
>
>  add_clang_executable(clang
>    driver.cpp
> Index: llvm/cmake/modules/AddLLVM.cmake
> ===================================================================
> --- llvm/cmake/modules/AddLLVM.cmake
> +++ llvm/cmake/modules/AddLLVM.cmake
> @@ -134,17 +134,19 @@
>  endfunction(add_llvm_symbol_exports)
>
>  function(add_dead_strip target_name)
> -  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)
> -      # Object files are compiled with -ffunction-data-sections.
> -      set_property(TARGET ${target_name} APPEND_STRING PROPERTY
> -                   LINK_FLAGS " -Wl,--gc-sections")
> -    endif()
> +  if(NOT LLVM_DEAD_STRIP)
> +    return()
>    endif()
> -endfunction(add_dead_strip)
> +
> +  if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
> +    set_property(TARGET ${target_name} APPEND_STRING PROPERTY
> +      LINK_FLAGS " -Wl,-dead_strip")
> +  elseif(NOT WIN32)
> +    # Object files are compiled with -ffunction-data-sections.
> +    set_property(TARGET ${target_name} APPEND_STRING PROPERTY
> +      LINK_FLAGS " -Wl,--gc-sections")
> +  endif()
> +endfunction()
>
>  # Set each output directory according to ${CMAKE_CONFIGURATION_TYPES}.
>  # Note: Don't set variables CMAKE_*_OUTPUT_DIRECTORY any more,
> Index: llvm/cmake/modules/HandleLLVMOptions.cmake
> ===================================================================
> --- llvm/cmake/modules/HandleLLVMOptions.cmake
> +++ llvm/cmake/modules/HandleLLVMOptions.cmake
> @@ -353,8 +353,9 @@
>  # 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_NO_DEAD_STRIP is set.
> +# flags instead if LLVM_DEAD_STRIP is not set.
>  if(NOT CYGWIN AND NOT WIN32)
> +  set(LLVM_DEAD_STRIP ON)
>    if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
>      check_c_compiler_flag("-Werror -fno-function-sections"
> C_SUPPORTS_FNO_FUNCTION_SECTIONS)
>      if (C_SUPPORTS_FNO_FUNCTION_SECTIONS)
> Index: llvm/tools/bugpoint/CMakeLists.txt
> ===================================================================
> --- llvm/tools/bugpoint/CMakeLists.txt
> +++ llvm/tools/bugpoint/CMakeLists.txt
> @@ -18,7 +18,7 @@
>    )
>
>  # Support plugins.
> -set(LLVM_NO_DEAD_STRIP 1)
> +set(LLVM_DEAD_STRIP OFF)
>
>  add_llvm_tool(bugpoint
>    BugDriver.cpp
> Index: llvm/tools/llc/CMakeLists.txt
> ===================================================================
> --- llvm/tools/llc/CMakeLists.txt
> +++ llvm/tools/llc/CMakeLists.txt
> @@ -12,7 +12,7 @@
>    )
>
>  # Support plugins.
> -set(LLVM_NO_DEAD_STRIP 1)
> +set(LLVM_DEAD_STRIP OFF)
>
>  add_llvm_tool(llc
>    llc.cpp
> Index: llvm/tools/opt/CMakeLists.txt
> ===================================================================
> --- llvm/tools/opt/CMakeLists.txt
> +++ llvm/tools/opt/CMakeLists.txt
> @@ -19,7 +19,7 @@
>    )
>
>  # Support plugins.
> -set(LLVM_NO_DEAD_STRIP 1)
> +set(LLVM_DEAD_STRIP OFF)
>
>  add_llvm_tool(opt
>    AnalysisWrappers.cpp
> Index: llvm/unittests/ExecutionEngine/JIT/CMakeLists.txt
> ===================================================================
> --- llvm/unittests/ExecutionEngine/JIT/CMakeLists.txt
> +++ llvm/unittests/ExecutionEngine/JIT/CMakeLists.txt
> @@ -52,7 +52,7 @@
>  endif()
>
>  # The JIT tests need to dlopen things.
> -set(LLVM_NO_DEAD_STRIP 1)
> +set(LLVM_DEAD_STRIP OFF)
>
>  add_llvm_unittest(JITTests
>    ${JITTestsSources}
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20140304/609f6526/attachment.html>


More information about the cfe-commits mailing list