diff --git a/cmake/ClangTidy.cmake b/cmake/ClangTidy.cmake index 0abca6b4ea5..57df9756bf6 100644 --- a/cmake/ClangTidy.cmake +++ b/cmake/ClangTidy.cmake @@ -1,3 +1,8 @@ +# Copyright (c) 2020 vesoft inc. All rights reserved. +# +# This source code is licensed under Apache 2.0 License. +# + if (ENABLE_CLANG_TIDY) if (${CMAKE_VERSION} VERSION_LESS "3.6.0") message(FATAL_ERROR "clang-tidy requires CMake version at least 3.6.") diff --git a/cmake/FindMoldLinker.cmake b/cmake/FindMoldLinker.cmake new file mode 100644 index 00000000000..fe63cfd462c --- /dev/null +++ b/cmake/FindMoldLinker.cmake @@ -0,0 +1,18 @@ +# Copyright (c) 2023 vesoft inc. All rights reserved. +# +# This source code is licensed under Apache 2.0 License. +# + +find_program (MOLD NAMES "mold") +if (NOT MOLD) + message(FATAL_ERROR "Could not find the mold linker") +endif() + +if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 12.1.0) + get_filename_component(MOLD_PATH ${MOLD} DIRECTORY) + nebula_add_exe_linker_flag(-B${MOLD_PATH}/../libexec/mold) + nebula_add_shared_linker_flag(-B${MOLD_PATH}/../libexec/mold) +else() + nebula_add_exe_linker_flag(-fuse-ld=mold) + nebula_add_shared_linker_flag(-fuse-ld=mold) +endif() diff --git a/cmake/nebula/LinkerConfig.cmake b/cmake/nebula/LinkerConfig.cmake index 2c9b462667c..434555b671d 100644 --- a/cmake/nebula/LinkerConfig.cmake +++ b/cmake/nebula/LinkerConfig.cmake @@ -1,7 +1,7 @@ set(NEBULA_USE_LINKER "bfd" CACHE STRING "Linker to be used") -set(USER_LINKER_OPTION_VALUES "lld" "gold" "bfd") +set(USER_LINKER_OPTION_VALUES "lld" "gold" "bfd" "mold") set_property(CACHE NEBULA_USE_LINKER PROPERTY STRINGS ${USER_LINKER_OPTION_VALUES}) list( FIND @@ -17,8 +17,13 @@ endif() print_config(NEBULA_USE_LINKER) -nebula_add_exe_linker_flag(-fuse-ld=${NEBULA_USE_LINKER}) -nebula_add_shared_linker_flag(-fuse-ld=${NEBULA_USE_LINKER}) +if (${NEBULA_USE_LINKER} STREQUAL "mold") + include(FindMoldLinker) +else() + nebula_add_exe_linker_flag(-fuse-ld=${NEBULA_USE_LINKER}) + nebula_add_shared_linker_flag(-fuse-ld=${NEBULA_USE_LINKER}) +endif() + nebula_add_exe_linker_flag(-static-libstdc++) nebula_add_exe_linker_flag(-static-libgcc) nebula_add_exe_linker_flag(-no-pie)