From 8e5f1116d471224eb11fc5544eb9fe00d1373557 Mon Sep 17 00:00:00 2001 From: "Marcus D. Hanwell" Date: Sat, 16 Mar 2024 17:18:50 -0400 Subject: [PATCH 1/2] apacheGH-40602: Move mold linker flags to variables Move the mold linker flags to the CMake CMAKE_*_LINKER_FLAGS variables. --- cpp/cmake_modules/SetupCxxFlags.cmake | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/cpp/cmake_modules/SetupCxxFlags.cmake b/cpp/cmake_modules/SetupCxxFlags.cmake index 5ef27dd5fd02a..1f63b6a53daa5 100644 --- a/cpp/cmake_modules/SetupCxxFlags.cmake +++ b/cpp/cmake_modules/SetupCxxFlags.cmake @@ -629,23 +629,27 @@ if(NOT WIN32 AND NOT APPLE) if(ARROW_USE_MOLD) find_program(LD_MOLD ld.mold) if(LD_MOLD) + unset(MOLD_LINKER_FLAGS) if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "12.1.0") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fuse-ld=mold") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fuse-ld=mold") + set(MOLD_LINKER_FLAGS "-fuse-ld=mold") message(STATUS "Using optional mold linker") else() message(STATUS "Need GCC 12.1.0 or later to use mold linker: ${CMAKE_CXX_COMPILER_VERSION}" ) endif() elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --ld-path=${LD_MOLD}") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --ld-path=${LD_MOLD}") + set(MOLD_LINKER_FLAGS "--ld-path=${LD_MOLD}") message(STATUS "Using optional mold linker") else() message(STATUS "Using the default linker because compiler doesn't support mold: ${CMAKE_CXX_COMPILER_ID}" ) endif() + if(MOLD_LINKER_FLAGS) + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${MOLD_LINKER_FLAGS}") + set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${MOLD_LINKER_FLAGS}") + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${MOLD_LINKER_FLAGS}") + endif() else() message(STATUS "Using the default linker because mold isn't found") endif() From bbc36f0ac04542151c5d0cbfbe1463771fdf4d52 Mon Sep 17 00:00:00 2001 From: "Marcus D. Hanwell" Date: Mon, 18 Mar 2024 09:27:46 -0400 Subject: [PATCH 2/2] Update cpp/cmake_modules/SetupCxxFlags.cmake Co-authored-by: Sutou Kouhei --- cpp/cmake_modules/SetupCxxFlags.cmake | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cpp/cmake_modules/SetupCxxFlags.cmake b/cpp/cmake_modules/SetupCxxFlags.cmake index 1f63b6a53daa5..90decb4224ec6 100644 --- a/cpp/cmake_modules/SetupCxxFlags.cmake +++ b/cpp/cmake_modules/SetupCxxFlags.cmake @@ -646,9 +646,9 @@ if(NOT WIN32 AND NOT APPLE) ) endif() if(MOLD_LINKER_FLAGS) - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${MOLD_LINKER_FLAGS}") - set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${MOLD_LINKER_FLAGS}") - set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${MOLD_LINKER_FLAGS}") + string(APPEND CMAKE_EXE_LINKER_FLAGS " ${MOLD_LINKER_FLAGS}") + string(APPEND CMAKE_MODULE_LINKER_FLAGS " ${MOLD_LINKER_FLAGS}") + string(APPEND CMAKE_SHARED_LINKER_FLAGS " ${MOLD_LINKER_FLAGS}") endif() else() message(STATUS "Using the default linker because mold isn't found")