From f9ab04b63aee614ddfd3b50a4c6a0eac2094a2fe Mon Sep 17 00:00:00 2001 From: Arnaud Vrac Date: Tue, 19 Sep 2023 12:42:19 +0200 Subject: Add mold linker build Allows building the #mold linker, which can then be used in the cross-toolchain by passing the -fuse-ld=mold to the gcc flags. It is much faster than ld or gold. This requires a C++20 compiler and cmake. Initially implemented by Arnaud, and HC added configure check for cmake. Outstanding task to validate compiler is C++20 compatible. Signed-off-by: Arnaud Vrac Signed-off-by: Hans-Christian Noren Egtvedt --- scripts/build/linker/100-mold.sh | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 scripts/build/linker/100-mold.sh (limited to 'scripts/build/linker') diff --git a/scripts/build/linker/100-mold.sh b/scripts/build/linker/100-mold.sh new file mode 100644 index 00000000..710ca969 --- /dev/null +++ b/scripts/build/linker/100-mold.sh @@ -0,0 +1,38 @@ +# Build script for the mold linker + +do_linker_mold_get() { + CT_Fetch MOLD +} + +do_linker_mold_extract() { + CT_ExtractPatch MOLD +} + +do_linker_mold_build() { + local target_dir="${CT_PREFIX_DIR}/${CT_TARGET}" + + CT_DoStep INFO "Installing mold for host" + CT_mkdir_pushd "${CT_BUILD_DIR}/build-mold" + + CT_DoLog EXTRA "Configuring mold for host" + CT_DoExecLog CFG \ + CFLAGS="${CT_CFLAGS_FOR_HOST}" \ + LDFLAGS="${CT_LDFLAGS_FOR_HOST}" \ + cmake "${CT_SRC_DIR}/mold" \ + -DBUILD_TESTING=OFF \ + -DMOLD_MOSTLY_STATIC=ON \ + -DCMAKE_BUILD_TYPE=Release + + CT_DoLog EXTRA "Building mold for host" + CT_DoExecLog ALL make ${CT_JOBSFLAGS} + + CT_DoLog EXTRA "Installing mold for host" + mkdir -p "${target_dir}/bin" + cp mold "${target_dir}/bin" + ln -s mold "${target_dir}/bin/ld.mold" + mkdir -p "${target_dir}/lib/mold" + cp mold-wrapper.so "${target_dir}/lib/mold" + + CT_Popd + CT_EndStep +} -- cgit v1.2.3