use_linker.cmake 1.2 KB

1234567891011121314151617181920212223242526272829303132
  1. # Copyright (c) 2022, Andrew Kaster <akaster@serenityos.org>
  2. # Copyright (c) 2023, Daniel Bertalan <dani@danielbertalan.dev>
  3. #
  4. # SPDX-License-Identifier: BSD-2-Clause
  5. #
  6. if (NOT APPLE AND NOT ANDROID AND NOT WIN32 AND NOT LAGOM_USE_LINKER)
  7. find_program(LLD_LINKER NAMES "ld.lld")
  8. if (LLD_LINKER)
  9. message(STATUS "Using LLD to link Lagom.")
  10. set(LAGOM_USE_LINKER "lld" CACHE STRING "" FORCE)
  11. else()
  12. find_program(MOLD_LINKER NAMES "ld.mold")
  13. if (MOLD_LINKER)
  14. message(STATUS "Using mold to link Lagom.")
  15. set(LAGOM_USE_LINKER "mold" CACHE STRING "" FORCE)
  16. endif()
  17. endif()
  18. endif()
  19. if (LAGOM_USE_LINKER)
  20. # FIXME: Move to only setting CMAKE_LINKER_TYPE once we drop support for CMake < 3.29
  21. if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.29)
  22. string(TOUPPER ${LAGOM_USE_LINKER} linker_type)
  23. set(CMAKE_LINKER_TYPE ${linker_type})
  24. else()
  25. set(LINKER_FLAG "-fuse-ld=${LAGOM_USE_LINKER}")
  26. set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${LINKER_FLAG}")
  27. set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${LINKER_FLAG}")
  28. set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${LINKER_FLAG}")
  29. endif()
  30. endif()