diff --git a/.cargo/config.toml b/.cargo/config.toml new file mode 100644 index 0000000..7af97f1 --- /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 07cea77..d37794a 100644 --- a/flake.nix +++ b/flake.nix @@ -41,9 +41,9 @@ lockFile = ./Cargo.lock; }; passthru.cargoLock = cargoLock; - nativeBuildInputs = [ pkgs.python3 (pkgs.wrapClangMulti 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.wrapClangMulti 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..." @@ -68,6 +68,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 { @@ -86,7 +87,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 = @@ -99,6 +100,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 { @@ -148,7 +150,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 = @@ -157,6 +159,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 ]; } ); }; @@ -172,6 +175,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 ])) @@ -186,6 +190,7 @@ export DEMO_LINALG_STUB=${packages.x86_64-linux.demo-linalg-stub}/lib/liblinalg.a export DEMO_LINALG_STUB32=${packages.x86_64-linux.demo-linalg-stub32}/lib/liblinalg.a ''; + stdenv = [ pkgs.stdenvAdapters.useMoldLinker pkgs.stdenv ]; }; devShells.x86_64-linux.msys2 = pkgs.mkShell { name = "nac3-dev-shell-msys2";