Commit: 18c5d4ccb39d6301892b02d6ffc3cdac85462900
Author: Campbell Barton
Date:   Sat Jan 15 16:12:13 2022 +1100
Branches: master
https://developer.blender.org/rB18c5d4ccb39d6301892b02d6ffc3cdac85462900

CMake: use LINKER flags instead of CFLAGS for setting the linker

Set the linker using CMAKE_*_LINKER_FLAGS instead of {C/CXX}FLAGS.

There is no advantage in using the CFLAGS to set the linker, it has the
downside of triggering a full rebuild when changing the linker.

Tested building Blender and the bpy.so Python module.

Ref D13833

Reviewed by: sergey, brecht

===================================================================

M       build_files/cmake/platform/platform_unix.cmake

===================================================================

diff --git a/build_files/cmake/platform/platform_unix.cmake 
b/build_files/cmake/platform/platform_unix.cmake
index 4ba3f81fe93..c7637dbee7e 100644
--- a/build_files/cmake/platform/platform_unix.cmake
+++ b/build_files/cmake/platform/platform_unix.cmake
@@ -671,8 +671,9 @@ if(CMAKE_COMPILER_IS_GNUCC)
       COMMAND ${CMAKE_C_COMPILER} -fuse-ld=gold -Wl,--version
       ERROR_QUIET OUTPUT_VARIABLE LD_VERSION)
     if("${LD_VERSION}" MATCHES "GNU gold")
-      string(APPEND CMAKE_C_FLAGS " -fuse-ld=gold")
-      string(APPEND CMAKE_CXX_FLAGS " -fuse-ld=gold")
+      string(APPEND CMAKE_EXE_LINKER_FLAGS " -fuse-ld=gold")
+      string(APPEND CMAKE_SHARED_LINKER_FLAGS " -fuse-ld=gold")
+      string(APPEND CMAKE_MODULE_LINKER_FLAGS " -fuse-ld=gold")
     else()
       message(STATUS "GNU gold linker isn't available, using the default 
system linker.")
     endif()
@@ -684,8 +685,9 @@ if(CMAKE_COMPILER_IS_GNUCC)
       COMMAND ${CMAKE_C_COMPILER} -fuse-ld=lld -Wl,--version
       ERROR_QUIET OUTPUT_VARIABLE LD_VERSION)
     if("${LD_VERSION}" MATCHES "LLD")
-      string(APPEND CMAKE_C_FLAGS " -fuse-ld=lld")
-      string(APPEND CMAKE_CXX_FLAGS " -fuse-ld=lld")
+      string(APPEND CMAKE_EXE_LINKER_FLAGS " -fuse-ld=lld")
+      string(APPEND CMAKE_SHARED_LINKER_FLAGS " -fuse-ld=lld")
+      string(APPEND CMAKE_MODULE_LINKER_FLAGS " -fuse-ld=lld")
     else()
       message(STATUS "LLD linker isn't available, using the default system 
linker.")
     endif()
@@ -738,8 +740,9 @@ if(CMAKE_COMPILER_IS_GNUCC)
 
     if(WITH_LINKER_MOLD)
       # GCC will search for `ld` in this directory first.
-      string(APPEND CMAKE_CXX_FLAGS " -B \"${MOLD_BIN_DIR}\"")
-      string(APPEND CMAKE_C_FLAGS " -B \"${MOLD_BIN_DIR}\"")
+      string(APPEND CMAKE_EXE_LINKER_FLAGS " -B \"${MOLD_BIN_DIR}\"")
+      string(APPEND CMAKE_SHARED_LINKER_FLAGS " -B \"${MOLD_BIN_DIR}\"")
+      string(APPEND CMAKE_MODULE_LINKER_FLAGS " -B \"${MOLD_BIN_DIR}\"")
     endif()
     unset(MOLD_BIN)
     unset(MOLD_BIN_DIR)
@@ -758,8 +761,12 @@ elseif(CMAKE_C_COMPILER_ID MATCHES "Clang")
     else()
       if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 12.0)
         string(APPEND CMAKE_EXE_LINKER_FLAGS " --ld-path=\"${MOLD_BIN}\"")
+        string(APPEND CMAKE_SHARED_LINKER_FLAGS " --ld-path=\"${MOLD_BIN}\"")
+        string(APPEND CMAKE_MODULE_LINKER_FLAGS " --ld-path=\"${MOLD_BIN}\"")
       else()
         string(APPEND CMAKE_EXE_LINKER_FLAGS " -fuse-ld=\"${MOLD_BIN}\"")
+        string(APPEND CMAKE_SHARED_LINKER_FLAGS " -fuse-ld=\"${MOLD_BIN}\"")
+        string(APPEND CMAKE_MODULE_LINKER_FLAGS " -fuse-ld=\"${MOLD_BIN}\"")
       endif()
     endif()
   endif()

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to