--- /dev/null
+#!/bin/bash
+
+HERE="$(pwd)"
+
+includes() {
+ cd "${1%/*}"
+ for F in $(awk "-F'" '$1 ~ /include / {print $2}' "${1##*/}") ; do
+ F="${F//\\//}"
+ realpath --relative-to="$HERE" "$F"
+ done
+}
+
+prepare() {
+ echo $1
+ for F in $(includes $1) ; do
+ F="${F#fasm/}"
+ BF="build/${F#source/}"
+ [ -e "$BF" ] && continue
+ [ -e "$F" ] || F="fasm/${F/linux/Linux}"
+ [ -e "$F" ] || exit 1
+ mkdir -p "${BF%/*}"
+ cp "$F" "$BF"
+ prepare "$F"
+ done
+}
+
+SRC="source/linux/x64/fasmarm.asm"
+BLD="build/${SRC#source/}"
+BIN="$(basename "$SRC" .asm)"
+
+set -e
+if [ -d build ] ; then
+ read -p "Type y for removing the old build tree" X
+ if [ "$X" = y ] ; then
+ rm -r build
+ fi
+fi
+prepare "$SRC"
+cp "$SRC" "$BLD"
+fasm -m 50000 "$BLD" "$BIN"
+chmod a+x "$BIN"
+