guix: Add nyacc-for-mes.
[mes.git] / build-aux / build-mes.sh
index e7cc853bc75e620db025273c0d976ee419f3431e..1bfac16ecd772be439097284c13973199a8bb8df 100755 (executable)
 # You should have received a copy of the GNU General Public License
 # along with Mes.  If not, see <http://www.gnu.org/licenses/>.
 
 # You should have received a copy of the GNU General Public License
 # along with Mes.  If not, see <http://www.gnu.org/licenses/>.
 
-set -ex
+set -x
 
 
-export HEX2=${HEX2-hex2}
-export M1=${M1-M1}
-export BLOOD_ELF=${BLOOD_ELF-blood-elf}
-export MES_SEED=${MES_SEED-../mes-seed}
-export MESCC=${MESCC-$(type -p mescc)}
+export BLOOD_ELF GUILE HEX2 M1 MES MESCC
+export M1FLAGS HEX2FLAGS PREPROCESS
+export MES_SEED MES_ARENA
+
+HEX2=${HEX2-hex2}
+M1=${M1-M1}
+BLOOD_ELF=${BLOOD_ELF-blood-elf}
+MES_SEED=${MES_SEED-../mes-seed}
+MESCC=${MESCC-$(command -v mescc)}
 [ -z "$MESCC" ] && MESCC=scripts/mescc
 [ -z "$MESCC" ] && MESCC=scripts/mescc
-export MES=${MES-$(type -p mes)}
+MES=${MES-$(command -v mes)}
 [ -z "$MES" ] && MES=src/mes
 
 [ -z "$MES" ] && MES=src/mes
 
+set -e
+
+M1FLAGS=${M1FLAGS-"
+--LittleEndian
+--Architecture=1
+"}
+HEX2FLAGS=${HEX2FLAGS-"
+--LittleEndian
+--Architecture=1
+--BaseAddress=0x1000000
+"}
+
 if [ -d "$MES_SEED" ]; then
 if [ -d "$MES_SEED" ]; then
-    $M1 --LittleEndian --Architecture=1\
+    $M1\
+        $M1FLAGS\
         -f stage0/x86.M1\
         -f $MES_SEED/crt1.M1\
         -o lib/crt1.hex2
         -f stage0/x86.M1\
         -f $MES_SEED/crt1.M1\
         -o lib/crt1.hex2
-    $M1 --LittleEndian --Architecture=1\
+    $M1\
+        $M1FLAGS\
         -f stage0/x86.M1\
         -f $MES_SEED/libc-mes.M1\
         -o lib/libc-mes.hex2
         -f stage0/x86.M1\
         -f $MES_SEED/libc-mes.M1\
         -o lib/libc-mes.hex2
-    $M1 --LittleEndian --Architecture=1\
+    $M1\
+        --LittleEndian\
+        --Architecture=1\
         -f stage0/x86.M1\
         -f $MES_SEED/mes.M1\
         -o src/mes.hex2
         -f stage0/x86.M1\
         -f $MES_SEED/mes.M1\
         -o src/mes.hex2
@@ -47,29 +67,39 @@ if [ -d "$MES_SEED" ]; then
         -f $MES_SEED/mes.M1\
         -f $MES_SEED/libc-mes.M1\
         -o src/mes.blood-elf.M1
         -f $MES_SEED/mes.M1\
         -f $MES_SEED/libc-mes.M1\
         -o src/mes.blood-elf.M1
-    $M1 --LittleEndian --Architecture=1\
+    $M1\
+        --LittleEndian\
+        --Architecture=1\
         -f src/mes.blood-elf.M1\
         -o src/mes.blood-elf.hex2
         -f src/mes.blood-elf.M1\
         -o src/mes.blood-elf.hex2
-    $HEX2 --LittleEndian --Architecture=1 --BaseAddress=0x1000000\
-          -f stage0/elf32-header.hex2\
-          -f lib/crt1.hex2\
-          -f lib/libc-mes.hex2\
-          -f src/mes.hex2\
-          -f src/mes.blood-elf.hex2\
-          --exec_enable\
-          -o src/mes.seed-out
+    $HEX2\
+        $HEX2FLAGS\
+        -f stage0/elf32-header.hex2\
+        -f lib/crt1.hex2\
+        -f lib/libc-mes.hex2\
+        -f src/mes.hex2\
+        -f src/mes.blood-elf.hex2\
+        --exec_enable\
+        -o src/mes.seed-out
     cp src/mes.seed-out src/mes
 
     cp src/mes.seed-out src/mes
 
-    $M1 --LittleEndian --Architecture=1 -f\
-        stage0/x86.M1\
+    $M1\
+        $M1FLAGS\
+        -f stage0/x86.M1\
         -f $MES_SEED/libc+tcc-mes.M1\
         -o src/libc+tcc-mes.hex2
 fi
 
         -f $MES_SEED/libc+tcc-mes.M1\
         -o src/libc+tcc-mes.hex2
 fi
 
+PREPROCESS=1
+NOLINK=1 sh build-aux/cc-mes.sh lib/crt1
+NOLINK=1 sh build-aux/cc-mes.sh lib/mini-libc-mes
+NOLINK=1 sh build-aux/cc-mes.sh lib/libc-mes
+NOLINK=1 sh build-aux/cc-mes.sh lib/libc+tcc-mes
+
 [ -n "$SEED" ] && exit 0
 
 [ -n "$SEED" ] && exit 0
 
-export GUILE=src/mes
-export MES_ARENA=${MES_ARENA-30000000}
+GUILE=src/mes
+MES_ARENA=${MES_ARENA-30000000}
 sh build-aux/mes-snarf.scm --mes src/gc.c
 sh build-aux/mes-snarf.scm --mes src/lib.c
 sh build-aux/mes-snarf.scm --mes src/math.c
 sh build-aux/mes-snarf.scm --mes src/gc.c
 sh build-aux/mes-snarf.scm --mes src/lib.c
 sh build-aux/mes-snarf.scm --mes src/math.c
@@ -78,12 +108,6 @@ sh build-aux/mes-snarf.scm --mes src/posix.c
 sh build-aux/mes-snarf.scm --mes src/reader.c
 sh build-aux/mes-snarf.scm --mes src/vector.c
 
 sh build-aux/mes-snarf.scm --mes src/reader.c
 sh build-aux/mes-snarf.scm --mes src/vector.c
 
-export PREPROCESS=1
-NOLINK=1 sh build-aux/cc-mes.sh lib/crt1
-NOLINK=1 sh build-aux/cc-mes.sh lib/mini-libc-mes
-NOLINK=1 sh build-aux/cc-mes.sh lib/libc-mes
-NOLINK=1 sh build-aux/cc-mes.sh lib/libc+tcc-mes
-
 # sh build-aux/cc-mes.sh scaffold/main
 # sh build-aux/cc-mes.sh scaffold/hello
 # sh build-aux/cc-mes.sh scaffold/argv
 # sh build-aux/cc-mes.sh scaffold/main
 # sh build-aux/cc-mes.sh scaffold/hello
 # sh build-aux/cc-mes.sh scaffold/argv
@@ -93,5 +117,4 @@ NOLINK=1 sh build-aux/cc-mes.sh lib/libc+tcc-mes
 # sh build-aux/cc-mes.sh scaffold/mini-mes
 
 sh build-aux/cc-mes.sh src/mes
 # sh build-aux/cc-mes.sh scaffold/mini-mes
 
 sh build-aux/cc-mes.sh src/mes
-# FIXME: broken
-# cp src/mes.mes-out src/mes
+cp src/mes.mes-out src/mes