bootstrap: Add bootstrap build scripts.
* build.sh: New file. * check-mescc.sh: New file. * check.sh: New file. * install.sh: New File.
This commit is contained in:
parent
c8613299a8
commit
7ab279bf7b
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -31,6 +31,7 @@
|
||||||
/.tarball-version
|
/.tarball-version
|
||||||
/ChangeLog
|
/ChangeLog
|
||||||
/a.out
|
/a.out
|
||||||
|
*.mes-out
|
||||||
|
|
||||||
#keep this: bootstrap
|
#keep this: bootstrap
|
||||||
#/mes.mes
|
#/mes.mes
|
||||||
|
|
35
build.sh
Executable file
35
build.sh
Executable file
|
@ -0,0 +1,35 @@
|
||||||
|
#! /bin/sh
|
||||||
|
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
HEX2=${HEX2-hex2}
|
||||||
|
M1=${M1-M1}
|
||||||
|
MES_SEED=${MES_SEED-../mes-seed}
|
||||||
|
|
||||||
|
$M1 --LittleEndian --Architecture=1\
|
||||||
|
-f stage0/x86.M1\
|
||||||
|
-f $MES_SEED/crt1.M1\
|
||||||
|
> crt1.hex2
|
||||||
|
$M1 --LittleEndian --Architecture=1\
|
||||||
|
-f stage0/x86.M1\
|
||||||
|
-f $MES_SEED/libc-mes.M1\
|
||||||
|
> libc-mes.hex2
|
||||||
|
$M1 --LittleEndian --Architecture=1\
|
||||||
|
-f stage0/x86.M1\
|
||||||
|
-f $MES_SEED/mes.M1\
|
||||||
|
> mes.hex2
|
||||||
|
$HEX2 --LittleEndian --Architecture=1 --BaseAddress=0x1000000\
|
||||||
|
-f stage0/elf32-header.hex2\
|
||||||
|
-f crt1.hex2\
|
||||||
|
-f libc-mes.hex2\
|
||||||
|
-f mes.hex2\
|
||||||
|
-f stage0/elf32-footer-single-main.hex2\
|
||||||
|
> mes
|
||||||
|
chmod +x mes
|
||||||
|
|
||||||
|
#TODO: after building from seed, build from src/mes.c
|
||||||
|
|
||||||
|
$M1 --LittleEndian --Architecture=1 -f\
|
||||||
|
stage0/x86.M1\
|
||||||
|
-f $MES_SEED/libc-mes+tcc.M1\
|
||||||
|
> libc-mes+tcc.hex2
|
104
check-mescc.sh
Executable file
104
check-mescc.sh
Executable file
|
@ -0,0 +1,104 @@
|
||||||
|
#! /bin/sh
|
||||||
|
|
||||||
|
GUILE=${GUILE-guile}
|
||||||
|
MES=${MES-./mes}
|
||||||
|
M1=${M1-M1}
|
||||||
|
HEX2=${HEX2-hex2}
|
||||||
|
MESCC=${MESCC-guile/mescc.scm}
|
||||||
|
MES_PREFIX=${MES_PREFIX-.}
|
||||||
|
|
||||||
|
tests="
|
||||||
|
t
|
||||||
|
00-exit-0
|
||||||
|
01-return-0
|
||||||
|
02-return-1
|
||||||
|
03-call
|
||||||
|
04-call-0
|
||||||
|
05-call-1
|
||||||
|
06-call-!1
|
||||||
|
10-if-0
|
||||||
|
11-if-1
|
||||||
|
12-if-==
|
||||||
|
13-if-!=
|
||||||
|
14-if-goto
|
||||||
|
15-if-!f
|
||||||
|
16-if-t
|
||||||
|
20-while
|
||||||
|
21-char[]
|
||||||
|
22-while-char[]
|
||||||
|
23-pointer
|
||||||
|
30-strlen
|
||||||
|
31-eputs
|
||||||
|
32-compare
|
||||||
|
33-and-or
|
||||||
|
34-pre-post
|
||||||
|
35-compare-char
|
||||||
|
36-compare-arithmetic
|
||||||
|
37-compare-assign
|
||||||
|
38-compare-call
|
||||||
|
40-if-else
|
||||||
|
41-?
|
||||||
|
42-goto-label
|
||||||
|
43-for-do-while
|
||||||
|
44-switch
|
||||||
|
45-void-call
|
||||||
|
50-assert
|
||||||
|
51-strcmp
|
||||||
|
52-itoa
|
||||||
|
53-strcpy
|
||||||
|
54-argv
|
||||||
|
60-math
|
||||||
|
61-array
|
||||||
|
63-struct-cell
|
||||||
|
64-make-cell
|
||||||
|
65-read
|
||||||
|
70-printf
|
||||||
|
71-struct-array
|
||||||
|
72-typedef-struct-def
|
||||||
|
73-union
|
||||||
|
74-multi-line-string
|
||||||
|
75-struct-union
|
||||||
|
76-pointer-arithmetic
|
||||||
|
77-pointer-assign
|
||||||
|
78-union-struct
|
||||||
|
79-int-array
|
||||||
|
7a-struct-char-array
|
||||||
|
7b-struct-int-array
|
||||||
|
7c-dynarray
|
||||||
|
7d-cast-char
|
||||||
|
7e-struct-array-access
|
||||||
|
7f-struct-pointer-arithmetic
|
||||||
|
7g-struct-byte-word-field
|
||||||
|
7h-struct-assign
|
||||||
|
7i-struct-struct
|
||||||
|
7j-strtoull
|
||||||
|
7k-for-each-elem
|
||||||
|
7l-struct-any-size-array
|
||||||
|
7m-struct-char-array-assign
|
||||||
|
7n-struct-struct-array
|
||||||
|
"
|
||||||
|
|
||||||
|
if [ ! -x ./i686-unknown-linux-gnu-tcc ]; then
|
||||||
|
tests=$(echo "$tests" | grep -Ev "02-return-1|05-call-1")
|
||||||
|
fi
|
||||||
|
|
||||||
|
set +e
|
||||||
|
fail=0
|
||||||
|
total=0
|
||||||
|
for t in $tests; do
|
||||||
|
sh test.sh "$t" &> scaffold/tests/$t.log
|
||||||
|
r=$?
|
||||||
|
total=$((total+1))
|
||||||
|
if [ $r = 0 ]; then
|
||||||
|
echo $t: [OK]
|
||||||
|
else
|
||||||
|
echo $t: [FAIL]
|
||||||
|
fail=$((fail+1))
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [ $fail != 0 ]; then
|
||||||
|
echo FAILED: $fail/$total
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
echo PASS: $total
|
||||||
|
fi
|
58
check.sh
Executable file
58
check.sh
Executable file
|
@ -0,0 +1,58 @@
|
||||||
|
#! /bin/sh
|
||||||
|
|
||||||
|
export GUILE=${GUILE-guile}
|
||||||
|
export MES=${MES-./mes}
|
||||||
|
|
||||||
|
tests="
|
||||||
|
tests/read.test
|
||||||
|
tests/base.test
|
||||||
|
tests/closure.test
|
||||||
|
tests/quasiquote.test
|
||||||
|
tests/let.test
|
||||||
|
tests/scm.test
|
||||||
|
tests/display.test
|
||||||
|
tests/cwv.test
|
||||||
|
tests/math.test
|
||||||
|
tests/vector.test
|
||||||
|
tests/srfi-1.test
|
||||||
|
tests/srfi-13.test
|
||||||
|
tests/srfi-14.test
|
||||||
|
tests/optargs.test
|
||||||
|
tests/fluids.test
|
||||||
|
tests/catch.test
|
||||||
|
tests/psyntax.test
|
||||||
|
tests/pmatch.test
|
||||||
|
tests/let-syntax.test
|
||||||
|
tests/guile.test
|
||||||
|
tests/record.test
|
||||||
|
"
|
||||||
|
|
||||||
|
slow="
|
||||||
|
tests/match.test
|
||||||
|
tests/peg.test
|
||||||
|
"
|
||||||
|
|
||||||
|
tests=$(for t in $tests; do echo $t-guile; echo $t; done)
|
||||||
|
|
||||||
|
set +e
|
||||||
|
fail=0
|
||||||
|
total=0
|
||||||
|
for t in $tests; do
|
||||||
|
sh "$t" &> $t.log
|
||||||
|
r=$?
|
||||||
|
total=$((total+1))
|
||||||
|
if [ $r = 0 ]; then
|
||||||
|
echo $t: [OK]
|
||||||
|
else
|
||||||
|
echo $t: [FAIL]
|
||||||
|
fail=$((fail+1))
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [ $fail != 0 ]; then
|
||||||
|
echo FAILED: $fail/$total
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
echo PASS: $total
|
||||||
|
fi
|
||||||
|
|
||||||
|
sh check-mescc.sh
|
27
install.sh
Executable file
27
install.sh
Executable file
|
@ -0,0 +1,27 @@
|
||||||
|
#! /bin/sh
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
PREFIX=${PREFIX-usr}
|
||||||
|
MES_PREFIX=${MES_PREFIX-$PREFIX/share/mes}
|
||||||
|
MES_SEED=${MES_SEED-../mes-seed}
|
||||||
|
TINYCC_SEED=${TINYCC_SEED-../tinycc-seed}
|
||||||
|
|
||||||
|
mkdir -p $PREFIX/bin
|
||||||
|
cp mes $PREFIX/bin/mes
|
||||||
|
|
||||||
|
mkdir -p $PREFIX/lib
|
||||||
|
mkdir -p $MES_PREFIX/lib
|
||||||
|
cp $MES_SEED/crt1.M1 $MES_PREFIX/lib/crt1.M1
|
||||||
|
cp $MES_SEED/libc-mes.M1 $MES_PREFIX/lib/libc-mes.M1
|
||||||
|
cp $MES_SEED/libc-mes+tcc.M1 $MES_PREFIX/lib/libc-mes+tcc.M1
|
||||||
|
|
||||||
|
cp crt1.hex2 $MES_PREFIX/lib/crt1.hex2
|
||||||
|
cp libc-mes.hex2 $MES_PREFIX/lib/libc-mes.hex2
|
||||||
|
cp libc-mes+tcc.hex2 $MES_PREFIX/lib/libc-mes+tcc.hex2
|
||||||
|
|
||||||
|
cp scripts/mescc.mes $PREFIX/bin/mescc.mes
|
||||||
|
cp guile/mescc.scm $PREFIX/bin/mescc.scm
|
||||||
|
|
||||||
|
mkdir -p $MES_PREFIX
|
||||||
|
tar -cf- doc guile include lib module scaffold stage0 | tar -xf- -C $MES_PREFIX
|
47
test.sh
Executable file
47
test.sh
Executable file
|
@ -0,0 +1,47 @@
|
||||||
|
#! /bin/sh
|
||||||
|
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
t=${1-t}
|
||||||
|
rm -f "$t".i686-unknown-linux-gnu-out
|
||||||
|
rm -f "$t".mes-out
|
||||||
|
|
||||||
|
M1=${M1-M1}
|
||||||
|
HEX2=${HEX2-hex2}
|
||||||
|
MESCC=${MESCC-sh guile/mescc.scm}
|
||||||
|
|
||||||
|
$MESCC -E -o scaffold/tests/$t.E scaffold/tests/$t.c
|
||||||
|
$MESCC -c -o scaffold/tests/$t.M1 scaffold/tests/$t.E
|
||||||
|
$M1 --LittleEndian --Architecture=1\
|
||||||
|
-f stage0/x86.M1\
|
||||||
|
-f scaffold/tests/$t.M1\
|
||||||
|
> scaffold/tests/$t.hex2
|
||||||
|
|
||||||
|
$MESCC -E -o lib/crt1.E lib/crt1.c
|
||||||
|
$MESCC -c -o lib/crt1.M1 lib/crt1.E
|
||||||
|
$M1 --LittleEndian --Architecture=1 \
|
||||||
|
-f stage0/x86.M1\
|
||||||
|
-f lib/crt1.M1\
|
||||||
|
> lib/crt1.hex2
|
||||||
|
$MESCC -E -o lib/libc-mes.E lib/libc-mes.c
|
||||||
|
$MESCC -c -o lib/libc-mes.M1 lib/libc-mes.E
|
||||||
|
$M1 --LittleEndian --Architecture=1\
|
||||||
|
-f stage0/x86.M1\
|
||||||
|
-f lib/libc-mes.M1\
|
||||||
|
> lib/libc-mes.hex2
|
||||||
|
|
||||||
|
$HEX2 --LittleEndian --Architecture=1 --BaseAddress=0x1000000\
|
||||||
|
-f stage0/elf32-header.hex2\
|
||||||
|
-f lib/crt1.hex2\
|
||||||
|
-f lib/libc-mes.hex2\
|
||||||
|
-f scaffold/tests/$t.hex2\
|
||||||
|
-f stage0/elf32-footer-single-main.hex2\
|
||||||
|
> scaffold/tests/$t.mes-out
|
||||||
|
chmod +x scaffold/tests/$t.mes-out
|
||||||
|
|
||||||
|
r=0
|
||||||
|
set +e
|
||||||
|
scaffold/tests/$t.mes-out
|
||||||
|
m=$?
|
||||||
|
|
||||||
|
[ $m = $r ]
|
|
@ -27,10 +27,15 @@ exit $?
|
||||||
;;; along with Mes. If not, see <http://www.gnu.org/licenses/>.
|
;;; along with Mes. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
(cond-expand
|
(cond-expand
|
||||||
(guile-2
|
(guile-2.2
|
||||||
(define sc-expand identity)
|
(define sc-expand identity)
|
||||||
(define syntax-object->datum syntax->datum)
|
(define syntax-object->datum syntax->datum)
|
||||||
(define datum->syntax-object datum->syntax))
|
(define datum->syntax-object datum->syntax))
|
||||||
|
(guile-2
|
||||||
|
(define sc-expand identity)
|
||||||
|
(define syntax-object->datum syntax->datum)
|
||||||
|
(define datum->syntax-object datum->syntax)
|
||||||
|
(define-macro (with-ellipsis . stuff) #t))
|
||||||
(guile
|
(guile
|
||||||
(use-modules (ice-9 syncase))
|
(use-modules (ice-9 syncase))
|
||||||
(define sc-expand identity))
|
(define sc-expand identity))
|
||||||
|
@ -206,4 +211,6 @@ exit $?
|
||||||
'(a 1 2 3)
|
'(a 1 2 3)
|
||||||
(quote-a 1 2 3)))
|
(quote-a 1 2 3)))
|
||||||
|
|
||||||
(result 'report)
|
(result 'report (if (and guile?
|
||||||
|
(equal? (effective-version) "2.0")) 1
|
||||||
|
0))
|
||||||
|
|
Loading…
Reference in a new issue