freebsd: Add support for aarch64

Add a new `aarch64-freebsd` double and example system,
then fix include and libc to work.
This is enough to build packages like `hello`,
either static or dynamic.

This is useful for testing nix FreeBSD on a Raspberry Pi.
This commit is contained in:
Artemis Tosini 2024-11-22 03:51:40 +00:00
parent 8d5c3efd80
commit 2b02a18ef7
No known key found for this signature in database
GPG Key ID: EE5227935FE3FF18
5 changed files with 13 additions and 2 deletions

View File

@ -13,7 +13,7 @@ let
"x86_64-darwin" "i686-darwin" "aarch64-darwin" "armv7a-darwin"
# FreeBSD
"i686-freebsd" "x86_64-freebsd"
"i686-freebsd" "x86_64-freebsd" "aarch64-freebsd"
# Genode
"aarch64-genode" "i686-genode" "x86_64-genode"

View File

@ -334,6 +334,11 @@ rec {
# BSDs
aarch64-freebsd = {
config = "aarch64-unknown-freebsd";
useLLVM = true;
};
x86_64-freebsd = {
config = "x86_64-unknown-freebsd";
useLLVM = true;

View File

@ -52,7 +52,7 @@ lib.runTests (
testcygwin = mseteq cygwin [ "i686-cygwin" "x86_64-cygwin" ];
testdarwin = mseteq darwin [ "x86_64-darwin" "i686-darwin" "aarch64-darwin" "armv7a-darwin" ];
testfreebsd = mseteq freebsd [ "i686-freebsd" "x86_64-freebsd" ];
testfreebsd = mseteq freebsd [ "aarch64-freebsd" "i686-freebsd" "x86_64-freebsd" ];
testgenode = mseteq genode [ "aarch64-genode" "i686-genode" "x86_64-genode" ];
testredox = mseteq redox [ "x86_64-redox" ];
testgnu = mseteq gnu (linux /* ++ kfreebsd ++ ... */);

View File

@ -1,4 +1,5 @@
{
stdenv,
lib,
mkDerivation,
buildPackages,
@ -14,6 +15,8 @@ mkDerivation {
"contrib/libc-vis"
"etc/mtree/BSD.include.dist"
"sys"
# Used for aarch64-freebsd
"lib/msun/arm"
];
extraNativeBuildInputs = [

View File

@ -106,6 +106,9 @@ mkDerivation {
"include/paths.h"
"lib/libdl"
# Used for aarch64-freebsd
"contrib/arm-optimized-routines"
];
postPatch = ''