diff --git a/nix/pkgs/main/cross-compilation-env.nix b/nix/pkgs/main/cross-compilation-env.nix index 70d0e51c..75b5862f 100644 --- a/nix/pkgs/main/cross-compilation-env.nix +++ b/nix/pkgs/main/cross-compilation-env.nix @@ -16,6 +16,9 @@ lib.optionalAttrs stdenv.hostPlatform.isStatic { ++ lib.optionals stdenv.targetPlatform.isx86_64 [ "-C" "target-cpu=x86-64-v2" ] + ++ lib.optionals + stdenv.targetPlatform.isAarch64 + [ "-C" "target-cpu=cortex-a55" ] # cortex-a55 == ARMv8.2-a # This disables PIE for static builds, which isn't great in terms # of security. Unfortunately, my hand is forced because nixpkgs' # `libstdc++.a` is built without `-fPIE`, which precludes us from diff --git a/nix/pkgs/main/default.nix b/nix/pkgs/main/default.nix index 6e3e82d7..629957c8 100644 --- a/nix/pkgs/main/default.nix +++ b/nix/pkgs/main/default.nix @@ -87,6 +87,12 @@ buildDepsOnlyEnv = "-DHAVE_SSE=1" "-DHAVE_SSE42=1" ] + else if stdenv.targetPlatform.isAarch64 + then lib.subtractLists [ "-DPORTABLE=1" ] old.cmakeFlags + ++ lib.optionals stdenv.targetPlatform.isAarch64 [ + # cortex-a55 == ARMv8.2-a + "-DPORTABLE=armv8.2-a" + ] else old.cmakeFlags; }); in @@ -116,7 +122,9 @@ buildPackageEnv = { + lib.optionalString (enableLiburing && stdenv.hostPlatform.isStatic) " -L${lib.getLib liburing}/lib -luring" + lib.optionalString stdenv.targetPlatform.isx86_64 - " -Ctarget-cpu=x86-64-v2"; + " -Ctarget-cpu=x86-64-v2" + + lib.optionalString stdenv.targetPlatform.isAarch64 + " -Ctarget-cpu=cortex-a55"; # cortex-a55 == ARMv8.2-a };