From c03743e9b0c15279ac2b14d1ace6e892fdf4fb1d Mon Sep 17 00:00:00 2001 From: David Mak Date: Thu, 13 Jun 2024 15:13:44 +0800 Subject: [PATCH] meta: Use mold as linker --- .cargo/config.toml | 2 ++ flake.nix | 15 ++++++++++----- 2 files changed, 12 insertions(+), 5 deletions(-) create mode 100644 .cargo/config.toml diff --git a/.cargo/config.toml b/.cargo/config.toml new file mode 100644 index 00000000..7af97f1e --- /dev/null +++ b/.cargo/config.toml @@ -0,0 +1,2 @@ +[target.x86_64-unknown-linux-gnu] +rustflags = ["-C", "link-arg=-fuse-ld=mold"] diff --git a/flake.nix b/flake.nix index 4febca24..1b01faf7 100644 --- a/flake.nix +++ b/flake.nix @@ -24,9 +24,9 @@ lockFile = ./Cargo.lock; }; passthru.cargoLock = cargoLock; - nativeBuildInputs = [ pkgs.python3 pkgs.llvmPackages_14.clang llvm-tools-irrt pkgs.llvmPackages_14.llvm.out llvm-nac3 ]; - buildInputs = [ pkgs.python3 llvm-nac3 ]; - checkInputs = [ (pkgs.python3.withPackages(ps: [ ps.numpy ps.scipy ])) ]; + nativeBuildInputs = [ pkgs.python3 pkgs.mold-wrapped pkgs.llvmPackages_14.clang llvm-tools-irrt pkgs.llvmPackages_14.llvm.out llvm-nac3 ]; + buildInputs = [ pkgs.python3 pkgs.mold-wrapped llvm-nac3 ]; + checkInputs = [ (pkgs.python3.withPackages(ps: [ ps.numpy ps.scipy ])) pkgs.mold-wrapped ]; checkPhase = '' echo "Checking nac3standalone demos..." @@ -49,6 +49,7 @@ mkdir -p $standalone/bin cp target/x86_64-unknown-linux-gnu/release/nac3standalone $standalone/bin ''; + stdenv = [ pkgs.stdenvAdapters.useMoldLinker pkgs.stdenv ]; } ); python3-mimalloc = pkgs.python3 // rec { @@ -67,7 +68,7 @@ src = self; inherit (nac3artiq) cargoLock; nativeBuildInputs = [ pkgs.python3 packages.x86_64-linux.llvm-tools-irrt llvm-nac3-instrumented ]; - buildInputs = [ pkgs.python3 llvm-nac3-instrumented ]; + buildInputs = [ pkgs.python3 pkgs.mold-wrapped llvm-nac3-instrumented ]; cargoBuildFlags = [ "--package" "nac3artiq" "--features" "init-llvm-profile" ]; doCheck = false; configurePhase = @@ -80,6 +81,7 @@ mkdir -p $TARGET_DIR cp target/x86_64-unknown-linux-gnu/release/libnac3artiq.so $TARGET_DIR/nac3artiq.so ''; + stdenv = [ pkgs.stdenvAdapters.useMoldLinker pkgs.stdenv ]; } ); nac3artiq-profile = pkgs.stdenvNoCC.mkDerivation { @@ -129,7 +131,7 @@ src = self; inherit (nac3artiq) cargoLock; nativeBuildInputs = [ pkgs.python3 packages.x86_64-linux.llvm-tools-irrt llvm-nac3-pgo ]; - buildInputs = [ pkgs.python3 llvm-nac3-pgo ]; + buildInputs = [ pkgs.python3 pkgs.mold-wrapped llvm-nac3-pgo ]; cargoBuildFlags = [ "--package" "nac3artiq" ]; cargoTestFlags = [ "--package" "nac3ast" "--package" "nac3parser" "--package" "nac3core" "--package" "nac3artiq" ]; installPhase = @@ -138,6 +140,7 @@ mkdir -p $TARGET_DIR cp target/x86_64-unknown-linux-gnu/release/libnac3artiq.so $TARGET_DIR/nac3artiq.so ''; + stdenv = [ pkgs.stdenvAdapters.useMoldLinker pkgs.stdenv ]; } ); }; @@ -153,6 +156,7 @@ packages.x86_64-linux.llvm-tools-irrt cargo rustc + mold-wrapped # runtime dependencies lld_14 # for running kernels on the host (packages.x86_64-linux.python3-mimalloc.withPackages(ps: [ ps.numpy ps.scipy ])) @@ -162,6 +166,7 @@ pre-commit rustfmt ]; + stdenv = [ pkgs.stdenvAdapters.useMoldLinker pkgs.stdenv ]; }; devShells.x86_64-linux.msys2 = pkgs.mkShell { name = "nac3-dev-shell-msys2";