#! /bin/sh set -u set -e INPATH="$1" INBASEPATH="${INPATH%.*}" # mangle such that no two names conflict (a/b/c and a/b.c conflicting would be no fun) #OUTNAME="$(echo "$INBASEPATH" | sed 's/\./../g' | sed 's/\//._/g')" OUTNAME="src._kernel._main" echo -n "[*] Building '$INPATH' to 'tmp/$OUTNAME'... " gcc -T linker.ld -m32 -Wl,--build-id=none -nostartfiles -nostdlib -ffreestanding $INPATH -o "tmp/$OUTNAME".o echo " OK!" echo -n "[+] Stripping unnecessary sections... " objcopy -R .note.gnu.build-id -R .comment -O binary "tmp/$OUTNAME".o "bin/$OUTNAME".bin echo " OK!" rm "tmp/$OUTNAME".o