diff --git a/build-cross-compiler.sh b/build-cross-compiler.sh new file mode 100755 index 0000000..3b3f9a3 --- /dev/null +++ b/build-cross-compiler.sh @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +if which i686-elf-gcc && which i686-elf-as; then + echo "Cross Compiler Already Built" + echo "Exiting" + exit +fi + +mkdir opt +cd opt + +CCFLAGS="-j 8" +PREFIX="$PWD" +TARGET="i686-elf" + +# binutils +curl -o binutils.tar.xz https://sourceware.org/pub/binutils/snapshots/binutils-2.40.90.tar.xz +tar -xf binutils.tar.xz +cd binutils-2.40.90 +mkdir build-binutils +cd build-binutils +../configure --target=$TARGET --prefix=$PREFIX --with-sysroot --disable-nls --disable-werror +make $CCFLAGS +make $CCFLAGS install + +# gcc +curl -o gcc.tar.xz https://mirrorservice.org/sites/sourceware.org/pub/gcc/snapshots/LATEST-12/gcc-12-20240322.tar.xz +tar -xf gcc.tar.xz +cd gcc-12-20240322 +mkdir build-gcc +cd build-gcc +../configure --target=$TARGET --prefix=$PREFIX --disable-nls --enable-languages=c,c++ --without-headers +make $CCFLAGS all-gcc +make $CCFLAGS all-target-libgcc +make $CCFLAGS install-gcc +make $CCFLAGS install-target-libgcc + +echo "All done :)" + + diff --git a/shell.nix b/shell.nix index 6ad5826..abdf49d 100644 --- a/shell.nix +++ b/shell.nix @@ -25,6 +25,7 @@ pkgs.mkShell rec { export PATH=$PATH:''${CARGO_HOME:-~/.cargo}/bin export PATH=$PATH:''${RUSTUP_HOME:-~/.rustup}/toolchains/nightly-x86_64-unknown-linux-gnu/bin/ export PATH="$PATH:$PWD/opt/bin" + ./build-cross-compiler.sh ''; # Add glibc, clang, glib, and other headers to bindgen search path BINDGEN_EXTRA_CLANG_ARGS =