mes: Add unfold.
[mes.git] / build.sh
index e7ff09e4f55bca28ef28c75da0b2f0a36cdc8ab4..2e2525eaf386948517680134bc60c13abb05218b 100755 (executable)
--- a/build.sh
+++ b/build.sh
 # 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
+# dash does not export foo=${foo-bar} for some values
+export CC CC32 GUILE MESCC MES_SEED
+export MES_ARENA MES_DEBUG
+export PREFIX DATADIR MODULEDIR
+export CPPFLAGS CFLAGS C32FLAGS MESCCFLAGS
 
-HEX2=${HEX2-hex2}
-M1=${M1-M1}
-BLOOD_ELF=${BLOOD_ELF-blood-elf}
+CC=${CC-$(command -v gcc)}
+CC32=${CC32-$(command -v i686-unknown-linux-gnu-gcc)}
+MESCC=${MESCC-$(command -v mescc)}
 MES_SEED=${MES_SEED-../mes-seed}
+GUILE=${GUILE-$(command -v guile)}
+MES_ARENA=${MES_ARENA-300000000}
+MES_DEBUG=${MES_DEBUG-2}
 
-$M1 --LittleEndian --Architecture=1\
-    -f stage0/x86.M1\
-    -f $MES_SEED/crt1.M1\
-    -o crt1.hex2
-$M1 --LittleEndian --Architecture=1\
-    -f stage0/x86.M1\
-    -f $MES_SEED/libc-mes.M1\
-    -o libc-mes.hex2
-$M1 --LittleEndian --Architecture=1\
-    -f stage0/x86.M1\
-    -f $MES_SEED/mes.M1\
-    -o mes.hex2
-$BLOOD_ELF\
-    -f stage0/x86.M1\
-    -f $MES_SEED/mes.M1\
-    -f $MES_SEED/libc-mes.M1\
-    -o mes-blood-elf-footer.M1
-$M1 --LittleEndian --Architecture=1\
-    -f mes-blood-elf-footer.M1\
-    -o mes-blood-elf-footer.hex2
-$HEX2 --LittleEndian --Architecture=1 --BaseAddress=0x1000000\
-      -f stage0/elf32-header.hex2\
-      -f crt1.hex2\
-      -f libc-mes.hex2\
-      -f mes.hex2\
-      -f mes-blood-elf-footer.hex2\
-      --exec_enable\
-      -o src/mes
+PREFIX=${PREFIX-/usr/local}
+DATADIR=${DATADIR-$PREFIX/share/mes}
+MODULEDIR=${MODULEDIR-$DATADIR/module}
+set -e
 
-$M1 --LittleEndian --Architecture=1 -f\
-    stage0/x86.M1\
-    -f $MES_SEED/libc+tcc-mes.M1\
-    -o libc+tcc-mes.hex2
+CPPFLAGS=${CPPFLAGS-"
+-D VERSION=\"$VERSION\"
+-D MODULEDIR=\"$MODULEDIR\"
+-D PREFIX=\"$PREFIX\"
+-I src
+-I lib
+-I include
+"}
+CFLAGS=${CFLAGS-"
+--std=gnu99
+-O0
+-g
+"}
+C32FLAGS=${C32FLAGS-"
+--std=gnu99
+-O0
+-fno-stack-protector
+-g
+-m32
+-nostdinc
+-nostdlib
+"}
+MESCCLAGS=${MESCCFLAGS-"
+"}
+M1FLAGS=${M1FLAGS-"
+--LittleEndian
+--Architecture=1
+"}
+HEX2FLAGS=${HEX2FLAGS-"
+--LittleEndian
+--Architecture=1
+--BaseAddress=0x1000000
+"}
 
-cp crt1.hex2 lib
-cp libc-mes.hex2 lib
-cp libc+tcc-mes.hex2 lib
+if [ -n "$GUILE" ]; then
+    sh build-aux/build-guile.sh
+fi
 
-# TODO: after building from seed, build from src/mes.c
-# build-aux/mes-snarf.scm --mes src/gc.c
-# build-aux/mes-snarf.scm --mes src/lib.c
-# build-aux/mes-snarf.scm --mes src/math.c
-# build-aux/mes-snarf.scm --mes src/mes.c
-# build-aux/mes-snarf.scm --mes src/posix.c
-# build-aux/mes-snarf.scm --mes src/reader.c
-# build-aux/mes-snarf.scm --mes src/vector.c
+if [ -n "$CC" ]; then
+    sh build-aux/build-cc.sh
+    cp src/mes.gcc-out src/mes
+fi
+
+if [ -n "$CC32" ]; then
+    sh build-aux/build-mlibc.sh
+    cp src/mes.mlibc-out src/mes
+fi
+
+sh build-aux/build-mes.sh