// "[o.o]"



You would think that cross compiling NetBSD and FreeBSD from a Mac would be difficult. Because of reasons, right...
But no, its fairly easy.
First grab your package manager, pkgsrc for mac

my ~/.zshrc
PKG_CONFIG=/opt/pkg/bin/pkg-config
PKG_CONFIG_PATH=/opt/pkg/lib/pkgconfig
CFLAGS="-I/opt/pkg/include -I/opt/pkg/include/ncurses/ -I/opt/pkg/include/ncursesw/ -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include -I/opt/pkg/include/c++/v1"
CPPFLAGS="-I/opt/pkg/include -I/opt/pkg/include/ncurses/ -I/opt/pkg/include/ncursesw/ -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include -I/opt/pkg/include/c++/v1"
CPLUS_INCLUDE_PATH="/opt/pkg/include /opt/pkg/include/ncurses/ /opt/pkg/include/ncursesw/ /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include"
LDFLAGS="-L/opt/pkg/lib -Wl,-rpath,/opt/pkg/lib -L/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib"
GDBM_LIBS=/opt/pkg/lib
OPENSSL_LIBS=/opt/pkg/libressl/lib/libssl.dylib
OPENSSL_CFLAGS=/opt/pkg/libressl/include/openssl/ssl.h
CURSES_LIBS="/opt/pkg/lib/libncursesw.6.dylib /opt/pkg/lib/libncurses.6.dylib"
CURSES_CFLAGS="/opt/pkg/include/ncurses/ncurses.h /opt/pkg/include/ncursesw/curses.h"
LIBLZMA_LIBS=/opt/pkg/lib/liblzma.5.dylib
LIBLZMA_CFLAGS=/opt/pkg/include/lzma.h
PROMPT='%B%F{176}%n@%m%f%b {%2~} '
alias gcc="/opt/pkg/gcc14/bin/gcc"
CC="gcc"
CXX="g++"

NetBSD
Read more here
but the basic steps are:
(Replace doas with sudo if you have not installed doas)
git clone https://github.com/netbsd/src ~/dev/netbsd-src && cd ~/dev/netbsd-src
doas pkgin install cross-aarch64-none-elf-binutils cross-arm-none-eabi-binutils cross-binutils
./build.sh -U -O ./netobj -j12 -m evbarm -a aarch64 tools
./build.sh -U -u -O ./netobj -j12 -m evbarm -a aarch64 tools
./build.sh -U -u -j12 -O ./netobj -m evbarm -a aarch64 kernel=GENERIC64
./build.sh -U -u -j12 -O ./netobj -m evbarm -a aarch64 build
Done

FreeBSD
Following BuildOnNonFreeBSD
git clone https://codeberg.org/freebsd/freebsd-src ~/dev/freebsd-src && cd ~/dev/freebsd-src
doas pkgin install libcxx libcxxabi cross-binutils cross-arm-none-eabi-gdb cross-arm-none-eabi-binutils cross-aarch64-none-elf-binutils
MAKEOBJDIRPREFIX=./freeobj tools/build/make.py -j 12 TARGET=arm64 TARGET_ARCH=aarch64 buildworld --cross-bindir=/opt/pkg/bin --clean WITHOUT_LIB32=yes
MAKEOBJDIRPREFIX=./freeobj tools/build/make.py -j 12 TARGET=arm64 TARGET_ARCH=aarch64 buildkernel --cross-bindir=/opt/pkg/bin --clean WITHOUT_LIB32=yes
Done
This could be interesting if you want to contribute on either of the two BSD's while on your mac.
Have not been able to cross compile OpenBSD yet, not given it much of a shot either.


Next time we will put Snort in jail