diff --git a/.github/actions/cmake/action.yml b/.github/actions/cmake/action.yml index c201d444..b40df6a2 100644 --- a/.github/actions/cmake/action.yml +++ b/.github/actions/cmake/action.yml @@ -33,10 +33,6 @@ inputs: description: Whether to enable compiler trace reports required: true default: "false" - use_mold: - description: Whether to use mold linker - required: true - default: "false" package: description: Whether to generate Debian package required: true @@ -59,7 +55,6 @@ runs: COVERAGE: "${{ inputs.code_coverage == 'true' && 'ON' || 'OFF' }}" STATIC: "${{ inputs.static == 'true' && 'ON' || 'OFF' }}" TIME_TRACE: "${{ inputs.time_trace == 'true' && 'ON' || 'OFF' }}" - USE_MOLD: "${{ inputs.use_mold == 'true' && 'ON' || 'OFF' }}" PACKAGE: "${{ inputs.package == 'true' && 'ON' || 'OFF' }}" run: | cmake \ @@ -74,5 +69,4 @@ runs: -Dcoverage="${COVERAGE}" \ -Dstatic="${STATIC}" \ -Dtime_trace="${TIME_TRACE}" \ - -Duse_mold="${USE_MOLD}" \ -Dpackage="${PACKAGE}" diff --git a/.github/workflows/build_impl.yml b/.github/workflows/build_impl.yml index e1c264f2..001ccb56 100644 --- a/.github/workflows/build_impl.yml +++ b/.github/workflows/build_impl.yml @@ -121,7 +121,6 @@ jobs: code_coverage: ${{ inputs.code_coverage }} static: ${{ inputs.static }} time_trace: ${{ inputs.analyze_build_time }} - use_mold: ${{ runner.os != 'macOS' }} package: ${{ inputs.package }} - name: Build Clio diff --git a/CMakeLists.txt b/CMakeLists.txt index 16d6e63a..2b02fcec 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,7 +16,6 @@ option(lint "Run clang-tidy checks during compilation" FALSE) option(static "Statically linked Clio" FALSE) option(snapshot "Build snapshot tool" FALSE) option(time_trace "Build using -ftime-trace to create compiler trace reports" FALSE) -option(use_mold "Use mold linker" FALSE) # ========================================================================== # set(san "" CACHE STRING "Add sanitizer instrumentation") diff --git a/cmake/Linker.cmake b/cmake/Linker.cmake index 5ac0a844..325e5078 100644 --- a/cmake/Linker.cmake +++ b/cmake/Linker.cmake @@ -1,8 +1,11 @@ -if (use_mold) - if (CMAKE_SYSTEM_NAME STREQUAL "Linux") - message(STATUS "Using Mold linker") - set(CMAKE_LINKER_TYPE MOLD) - else () - message(FATAL_ERROR "Mold linker is only supported on Linux.") - endif () +if (DEFINED CMAKE_LINKER_TYPE) + message(STATUS "Custom linker is already set: ${CMAKE_LINKER_TYPE}") + return() +endif () + +find_program(MOLD_PATH mold) + +if (MOLD_PATH AND CMAKE_SYSTEM_NAME STREQUAL "Linux") + message(STATUS "Using Mold linker: ${MOLD_PATH}") + set(CMAKE_LINKER_TYPE MOLD) endif ()