diff --git a/cross-compile.sh b/cross-compile.sh
new file mode 100644
index 0000000000000000000000000000000000000000..a2d35bf523716c24a0d387338ec28e74006fc3e5
--- /dev/null
+++ b/cross-compile.sh
@@ -0,0 +1,53 @@
+# Configure the C toolchain
+# It's tempting to use ${system} instead of linux-x86_64 here but Android NDK
+# only includes pre-built tools for linux-x86_64 so there's no point.
+prebuilt="$ANDROIDNDK/toolchains/llvm/prebuilt/linux-x86_64"
+
+sysroot_include_dir="${prebuilt}/sysroot/usr/include"
+arch_include_dir="${prebuilt}/sysroot/usr/include/aarch64-linux-android"
+# python_includes="${prebuilt}/python3/include"
+arch_libs_dir="${prebuilt}/sysroot/usr/lib/aarch64-linux-android/${ANDROID_PLATFORM_VERSION}"
+
+export PATH="${prebuilt}/bin/:${PATH}"
+# We just put it on PATH
+export CC="aarch64-linux-android${ANDROID_PLATFORM_VERSION}-clang"
+export ARCH="arm64-v8a"
+
+# export AS="aarch64-linux-android-as"
+
+# https://discourse.llvm.org/t/clang-failed-to-invoke-lld-correctly/62427 says
+# to use this longer -target identifier, not just "aarch64".  It says
+# "aarch64" is an unknown target and clang falls back to doing something dumb
+# with gcc.  We can profile a triple instead of a quad and clang will
+# automatically fill in unknown for the missing field ("vendor").
+export CFLAGS="-target aarch64-linux-android -nostdlib -fPIC -march=armv8a -fomit-frame-pointer -DANDROID -I${sysroot_include_dir} -I${arch_include_dir}" #  -I${python_includes}
+export CXXFLAGS="$CFLAGS"
+
+export LDFLAGS="-L${arch_libs_dir}"
+
+# Must have ld.lld on $PATH for this -fuse-ld to work
+export LDSHARED="$CC -fuse-ld=lld -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions"
+
+export LDLIBS="-lm"
+
+# Need these???  None have been run so far.
+AR="exit 1;"
+RANLIB="exit 2;"
+STRIP="exit 3;"
+READELF="exit 4;"
+OBJCOPY="exit 5;"
+
+# Configure Python/distutils I think
+export HOSTARCH=$ARCH
+
+
+python3.10 -m build
+
+# Some commands like this do the same-ish build as python -m build
+#
+# export LDSHARED=/nix/store/n7mv52lj2alq2gkys0skwwgs6c7s1cyl-androidsdk/libexec/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android31-clang
+# /nix/store/n7mv52lj2alq2gkys0skwwgs6c7s1cyl-androidsdk/libexec/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android31-clang -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -target aarch64 -fPIC -march=armv8a -fomit-frame-pointer -DANDROID -I/nix/store/n7mv52lj2alq2gkys0skwwgs6c7s1cyl-androidsdk/libexec/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include -I/nix/store/n7mv52lj2alq2gkys0skwwgs6c7s1cyl-androidsdk/libexec/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/aarch64-linux-android -fPIC -Izfec/ -I/tmp/nix-shell.8SWxlo/build-env-a4lrm0_7/include -I/nix/store/dlhmz1f440qvxdxcbpnx3xqwdz4m1c7x-python3-3.10.4/include/python3.10 -c zfec/fec.c -o build/temp.linux-x86_64-cpython-310/zfec/fec.o -std=c99
+# /nix/store/n7mv52lj2alq2gkys0skwwgs6c7s1cyl-androidsdk/libexec/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android31-clang -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -target aarch64 -fPIC -march=armv8a -fomit-frame-pointer -DANDROID -I/nix/store/n7mv52lj2alq2gkys0skwwgs6c7s1cyl-androidsdk/libexec/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include -I/nix/store/n7mv52lj2alq2gkys0skwwgs6c7s1cyl-androidsdk/libexec/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/aarch64-linux-android -fPIC -Izfec/ -I/tmp/nix-shell.8SWxlo/build-env-a4lrm0_7/include -I/nix/store/dlhmz1f440qvxdxcbpnx3xqwdz4m1c7x-python3-3.10.4/include/python3.10 -c zfec/_fecmodule.c -o build/temp.linux-x86_64-cpython-310/zfec/_fecmodule.o -std=c99
+# PATH=$PATH:$(dirname $(find $ANDROIDNDK/ -name ld.lld)) /nix/store/n7mv52lj2alq2gkys0skwwgs6c7s1cyl-androidsdk/libexec/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android31-clang -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -L/nix/store/n7mv52lj2alq2gkys0skwwgs6c7s1cyl-androidsdk/libexec/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/31 -target aarch64 -fPIC -march=armv8a -fomit-frame-pointer -DANDROID -I/nix/store/n7mv52lj2alq2gkys0skwwgs6c7s1cyl-androidsdk/libexec/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include -I/nix/store/n7mv52lj2alq2gkys0skwwgs6c7s1cyl-androidsdk/libexec/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/aarch64-linux-android build/temp.linux-x86_64-cpython-310/zfec/_fecmodule.o build/temp.linux-x86_64-cpython-310/zfec/fec.o -L$PY38LIB -o _fec.cpython-310-x86_64-linux-gnu.so -fuse-ld=lld
+
+# https://discourse.llvm.org/t/clang-sparc-generated-o-file-incompatible-with-elf64-x86-64/55238 says the target ld and as must be on $PATH