[pkg-d-commits] [ldc] 03/74: CMake: fix LTO build: prevent applying LTO flags when building the runtime libraries.

Matthias Klumpp mak at moszumanska.debian.org
Thu Jul 13 20:54:09 UTC 2017


This is an automated email from the git hooks/post-receive script.

mak pushed a commit to annotated tag v1.3.0-beta2
in repository ldc.

commit 704d95c54c3832bba03b95e0334dbd4e7f0f4a37
Author: Johan Engelen <jbc.engelen at gmail.com>
Date:   Sat Apr 29 15:23:12 2017 +0200

    CMake: fix LTO build: prevent applying LTO flags when building the runtime libraries.
    
    Resolves issue #2082
---
 cmake/Modules/ExtractDMDSystemLinker.cmake   |  4 ++--
 cmake/Modules/HandleLTOPGOBuildOptions.cmake | 15 +++------------
 2 files changed, 5 insertions(+), 14 deletions(-)

diff --git a/cmake/Modules/ExtractDMDSystemLinker.cmake b/cmake/Modules/ExtractDMDSystemLinker.cmake
index 544669b..b2f6638 100644
--- a/cmake/Modules/ExtractDMDSystemLinker.cmake
+++ b/cmake/Modules/ExtractDMDSystemLinker.cmake
@@ -25,9 +25,9 @@ file(WRITE ${source_file} "void main() {}")
 set(result_code)
 set(stdout)
 if(UNIX)
-    separate_arguments(cmdflags UNIX_COMMAND "${D_COMPILER_FLAGS}")
+    separate_arguments(cmdflags UNIX_COMMAND "${D_COMPILER_FLAGS} ${DDMD_DFLAGS} ${DDMD_LFLAGS}")
 else()
-    separate_arguments(cmdflags WINDOWS_COMMAND "${D_COMPILER_FLAGS}")
+    separate_arguments(cmdflags WINDOWS_COMMAND "${D_COMPILER_FLAGS} ${DDMD_DFLAGS} ${DDMD_LFLAGS}")
 endif()
 execute_process(
     COMMAND ${D_COMPILER} ${cmdflags} -v ${source_file}
diff --git a/cmake/Modules/HandleLTOPGOBuildOptions.cmake b/cmake/Modules/HandleLTOPGOBuildOptions.cmake
index fc48b78..8efc8b7 100644
--- a/cmake/Modules/HandleLTOPGOBuildOptions.cmake
+++ b/cmake/Modules/HandleLTOPGOBuildOptions.cmake
@@ -19,7 +19,8 @@ if(__LTO_FLAG)
     message(STATUS "Building LDC using LTO: ${__LTO_FLAG}")
     check_cxx_compiler_flag(${__LTO_FLAG} CXX_COMPILER_ACCEPTS_FLTO_${uppercase_LDC_BUILD_WITH_LTO})
     if (CXX_COMPILER_ACCEPTS_FLTO_${uppercase_LDC_BUILD_WITH_LTO})
-        append(${__LTO_FLAG} CMAKE_CXX_FLAGS CMAKE_C_FLAGS CMAKE_EXE_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS)
+        append(${__LTO_FLAG} LDC_CXXFLAGS)
+        list(APPEND LLVM_LDFLAGS ${__LTO_FLAG})
     endif()
 
     check_d_source_compiles("void main(){}" D_COMPILER_ACCEPTS_FLTO_${uppercase_LDC_BUILD_WITH_LTO} FLAGS ${__LTO_FLAG})
@@ -30,17 +31,7 @@ if(__LTO_FLAG)
     if(uppercase_LDC_BUILD_WITH_LTO STREQUAL "THIN")
         # On darwin, enable the lto cache.
         if(APPLE)
-            append("-Wl,-cache_path_lto,${PROJECT_BINARY_DIR}/lto.cache" CMAKE_EXE_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS)
-        endif()
-    endif()
-    if(uppercase_LDC_BUILD_WITH_LTO MATCHES "^(THIN|FULL)$")
-        if (APPLE)
-            # Explicitly use the LTO library that shipped with the host LDC, assuming it is newer than the system-installed lib.
-            get_filename_component(HOST_LDC_BINDIR ${D_COMPILER} DIRECTORY)
-            if(EXISTS ${HOST_LDC_BINDIR}/../lib/libLTO-ldc.dylib)
-                message(STATUS "Using ${HOST_LDC_BINDIR}/../lib/libLTO-ldc.dylib for LTO")
-                append("-Wl,-lto_library,${HOST_LDC_BINDIR}/../lib/libLTO-ldc.dylib" CMAKE_EXE_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS)
-            endif()
+            list(APPEND LLVM_LDFLAGS "-Wl,-cache_path_lto,${PROJECT_BINARY_DIR}/lto.cache")
         endif()
     endif()
 endif()

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-d/ldc.git



More information about the pkg-d-commits mailing list