build: Cater for M2-Planet.

* configure: Drop MES_SEED, support M2-Planet.
* kaem.run: Also build bin/mes.
* build-aux/bootstrap.sh.in: Run kaem bootstrap.
* build-aux/build.sh.in: Run kaem bootstrap.  Build bin/mes.  Update
scripts and users.
* build-aux/install.sh.in: Install all built bin/mes-* flavours.
This commit is contained in:
Jan (janneke) Nieuwenhuizen 2019-11-03 22:15:11 +01:00
parent 892f8f8655
commit 4bf946e27a
No known key found for this signature in database
GPG Key ID: F3C1A0D9C1D65273
8 changed files with 59 additions and 19 deletions

View File

@ -35,6 +35,11 @@ MES_PREFIX=${MES_PREFIX-$PWD}
. ${srcdest}build-aux/configure-lib.sh . ${srcdest}build-aux/configure-lib.sh
. ${srcdest}build-aux/cflags.sh . ${srcdest}build-aux/cflags.sh
if test -n "@M2_PLANET@"; then
echo " KAEM kaem.run"
kaem --strict --verbose
fi
CPPFLAGS="-D HAVE_CONFIG_H=1 -I include" CPPFLAGS="-D HAVE_CONFIG_H=1 -I include"
libdir=$PWD/lib libdir=$PWD/lib
export libdir export libdir

View File

@ -97,11 +97,27 @@ fi
-I ${srcdest}include -I ${srcdest}include
-I ${srcdest}include/$mes_kernel/$mes_cpu -I ${srcdest}include/$mes_kernel/$mes_cpu
" "
if test $compiler = gcc; then if test "$compiler" != bootstrap; then
${SHELL} ${srcdest}build-aux/build-mes.sh ${SHELL} ${srcdest}build-aux/build-mes.sh
fi fi
) )
if test -n "$M2_PLANET"; then
(
. ${srcdest}build-aux/trace.sh
if [ -z "$V" -o "$V" = 0 ]; then
__verbose=
else
__verbose=--verbose
fi
trace "KAEM scaffold/main.kaem" kaem --strict $__verbose -f scaffold/main.kaem
trace "KAEM scaffold/hello.kaem" kaem --strict $__verbose -f scaffold/hello.kaem
trace "KAEM scaffold/argv.kaem" kaem --strict $__verbose -f scaffold/argv.kaem
trace "KAEM scaffold/read.kaem" kaem --strict $__verbose -f scaffold/read.kaem
trace "KAEM kaem.run" kaem --strict $__verbose
)
fi
( (
mkdir -p mescc-lib mkdir -p mescc-lib
cp config.sh mescc-lib cp config.sh mescc-lib

View File

@ -35,8 +35,10 @@ GUIX="@GUIX@"
HELP2MAN="@HELP2MAN@" HELP2MAN="@HELP2MAN@"
HEX2="@HEX2@" HEX2="@HEX2@"
LDFLAGS=${LDFLAGS-"@LDFLAGS@"} LDFLAGS=${LDFLAGS-"@LDFLAGS@"}
KAEM="@KAEM@"
MAKEINFO="@MAKEINFO@" MAKEINFO="@MAKEINFO@"
M1="@M1@" M1="@M1@"
M2_PLANET="@M2_PLANET@"
MES_FOR_BUILD="@MES_FOR_BUILD@" MES_FOR_BUILD="@MES_FOR_BUILD@"
NYACC="@NYACC@" NYACC="@NYACC@"
PACKAGE="@PACKAGE@" PACKAGE="@PACKAGE@"

View File

@ -47,6 +47,9 @@ cp $_v bin/mes ${DESTDIR}${bindir}/mes
if test -f bin/mes-gcc; then if test -f bin/mes-gcc; then
cp $_v bin/mes-gcc ${DESTDIR}${bindir}/mes-gcc cp $_v bin/mes-gcc ${DESTDIR}${bindir}/mes-gcc
fi fi
if test -f bin/mes-m2; then
cp $_v bin/mes-m2 ${DESTDIR}${bindir}/mes-m2
fi
if test -f bin/mes-mescc; then if test -f bin/mes-mescc; then
cp $_v bin/mes-mescc ${DESTDIR}${bindir}/mes-mescc cp $_v bin/mes-mescc ${DESTDIR}${bindir}/mes-mescc
fi fi

14
configure vendored
View File

@ -453,7 +453,9 @@ Some influential environment variables:
(deps (fold (lambda (program results) (deps (fold (lambda (program results)
(cons (check-program-version program) results)) (cons (check-program-version program) results))
'() '()
(list (make-dep "hex2") (list (make-dep "kaem" #:version '(0 6) #:optional? #t)
(make-dep "M2-Planet" #:version '(0 1 3) #:optional? #t)
(make-dep "hex2")
(make-dep "M1") (make-dep "M1")
(make-dep "blood-elf") (make-dep "blood-elf")
(make-dep "diff" #:optional? #t) (make-dep "diff" #:optional? #t)
@ -513,7 +515,7 @@ Some influential environment variables:
")) "))
deps) deps)
deps)) deps))
(mesc? (file-name "cc is MES C" deps)) (mescc? (file-name "cc is Mes C" deps))
(deps (if cc (deps (if cc
(cons (check-compile-c cc (make-dep "cc is Tiny C" #:data "#if !defined (__TINYC__) (cons (check-compile-c cc (make-dep "cc is Tiny C" #:data "#if !defined (__TINYC__)
#error no tinycc #error no tinycc
@ -542,7 +544,7 @@ Some influential environment variables:
(cut member <> '("pc" "portbld" "unknown"))) (cut member <> '("pc" "portbld" "unknown")))
(cdr host-type-list)))) (cdr host-type-list))))
(mes-kernel (if (string-prefix? "freebsd" mes-kernel) "freebsd" mes-kernel)) (mes-kernel (if (string-prefix? "freebsd" mes-kernel) "freebsd" mes-kernel))
(mes-compiler (cond (gcc? "gcc") (tcc? "gcc") (else "mescc"))) (mes-compiler (cond (gcc? "gcc") (tcc? "gcc") (mescc? "mescc") (else "bootstrap")))
(mes-system (string-join (list mes-cpu mes-kernel "mes") "-")) (mes-system (string-join (list mes-cpu mes-kernel "mes") "-"))
(bash (or (and (file-exists? "/bin/bash") "/bin/bash") (bash (or (and (file-exists? "/bin/bash") "/bin/bash")
(file-name "bash" deps) (file-name "bash" deps)
@ -636,6 +638,8 @@ See \"Porting GNU Mes\" in the manual, or try --with-courage\n" mes-system)
("@GUILE_LOAD_PATH@" . ,(string-join guile-load-path ":")) ("@GUILE_LOAD_PATH@" . ,(string-join guile-load-path ":"))
("@GUIX@" . ,(or (file-name "guix" deps) "")) ("@GUIX@" . ,(or (file-name "guix" deps) ""))
("@HELP2MAN@" . ,(or (file-name "help2man" deps) "")) ("@HELP2MAN@" . ,(or (file-name "help2man" deps) ""))
("@KAEM@" . ,(or (file-name "kaem" deps) ""))
("@M2_PLANET@" . ,(or (file-name "M2-Planet" deps) ""))
("@MAKEINFO@" . ,(or (file-name "makeinfo" deps) "")) ("@MAKEINFO@" . ,(or (file-name "makeinfo" deps) ""))
("@MES_FOR_BUILD@" . ,(or (file-name "mes" deps) ("@MES_FOR_BUILD@" . ,(or (file-name "mes" deps)
guile)) guile))
@ -656,8 +660,8 @@ See \"Porting GNU Mes\" in the manual, or try --with-courage\n" mes-system)
(cons (string-append "@" (variable-name o) "@") (or (format #f "~a" (dependency-file-name o)) ""))) (cons (string-append "@" (variable-name o) "@") (or (format #f "~a" (dependency-file-name o)) "")))
deps)))) deps))))
(unless cc (unless (or cc m2-planet)
(format (current-error-port) "must supply a C compiler") (format (current-error-port) "must supply C compiler or M2-Planet\n")
(exit 2)) (exit 2))
(for-each (lambda (o) (for-each (lambda (o)
(let* ((src (string-append srcdest o)) (let* ((src (string-append srcdest o))

View File

@ -77,6 +77,8 @@ GUILE=${GUILE-$(command -v guile)} || true
HEX2=${HEX2-$(command -v hex2)} HEX2=${HEX2-$(command -v hex2)}
LDPFLAGS=${LDFLAGS-} LDPFLAGS=${LDFLAGS-}
M1=${M1-$(command -v M1)} M1=${M1-$(command -v M1)}
M2_PLANET=${M1-$(command -v M2-Planet)}
KAEM=${KAEM-$(command -v kaem)}
MES_FOR_BUILD=${MES_FOR_BUILD-$(command -v mes || command -v guile || echo mes)} MES_FOR_BUILD=${MES_FOR_BUILD-$(command -v mes || command -v guile || echo mes)}
GIT=${GIT-$(command -v git)} || true GIT=${GIT-$(command -v git)} || true
PERL=${PERL-$(command -v perl)} || true PERL=${PERL-$(command -v perl)} || true
@ -167,6 +169,8 @@ subst () {
-e s,"@HEX2FLAGS@,$HEX2FLAGS,"\ -e s,"@HEX2FLAGS@,$HEX2FLAGS,"\
-e s,"@M1@,$M1,"\ -e s,"@M1@,$M1,"\
-e s,"@M1FLAGS@,$M1FLAGS,"\ -e s,"@M1FLAGS@,$M1FLAGS,"\
-e s,"@M2_PLANET@,$M2_PLANET,"\
-e s,"@KAEM@,$KAEM,"\
-e s,"@MES_FOR_BUILD@,$MES_FOR_BUILD,"\ -e s,"@MES_FOR_BUILD@,$MES_FOR_BUILD,"\
-e s,"@numbered_arch@,$numbered_arch,"\ -e s,"@numbered_arch@,$numbered_arch,"\
-e s,"@SHELL@,$SHELL,"\ -e s,"@SHELL@,$SHELL,"\

View File

@ -19,6 +19,8 @@
# Usage: # Usage:
# kaem --verbose --strict # kaem --verbose --strict
mkdir -p m2
M2-Planet \ M2-Planet \
--debug \ --debug \
--architecture x86 \ --architecture x86 \
@ -108,9 +110,9 @@ M2-Planet \
-f src/struct.c \ -f src/struct.c \
-f src/symbol.c \ -f src/symbol.c \
-f src/vector.c \ -f src/vector.c \
-o bin/mes.M1 -o m2/mes.M1
blood-elf -f bin/mes.M1 -o bin/mes.blood-elf-M1 blood-elf -f m2/mes.M1 -o m2/mes.blood-elf-M1
M1 \ M1 \
--LittleEndian \ --LittleEndian \
@ -118,18 +120,20 @@ M1 \
-f lib/m2/x86/x86_defs.M1 \ -f lib/m2/x86/x86_defs.M1 \
-f lib/x86-mes/x86.M1 \ -f lib/x86-mes/x86.M1 \
-f lib/linux/x86-mes-m2/crt1.M1 \ -f lib/linux/x86-mes-m2/crt1.M1 \
-f bin/mes.M1 \ -f m2/mes.M1 \
-f bin/mes.blood-elf-M1 \ -f m2/mes.blood-elf-M1 \
-o bin/mes.hex2 -o m2/mes.hex2
mkdir -p bin
hex2 \ hex2 \
--LittleEndian \ --LittleEndian \
--architecture x86 \ --architecture x86 \
--BaseAddress 0x1000000 \ --BaseAddress 0x1000000 \
--exec_enable \ --exec_enable \
-f lib/linux/x86-mes/elf32-header.hex2 \ -f lib/linux/x86-mes/elf32-header.hex2 \
-f bin/mes.hex2 \ -f m2/mes.hex2 \
-o bin/mes-m2 -o bin/mes-m2
echo Running mes-m2 echo Running mes-m2
./bin/mes-m2 -c "(display 'Hello,M2-mes!) (newline)" ./bin/mes-m2 -c "(display 'Hello,M2-mes!) (newline)"
cp bin/mes-m2 bin/mes

View File

@ -179,6 +179,7 @@ gc-m2: bin/gc-m2
bin/mes-gcc: simple.make $(GCC_SOURCES) $(MES_SOURCES) $(INCLUDES) | bin bin/mes-gcc: simple.make $(GCC_SOURCES) $(MES_SOURCES) $(INCLUDES) | bin
$(CC) $(CFLAGS) $(GCC_SOURCES) $(MES_SOURCES) -o $@ $(CC) $(CFLAGS) $(GCC_SOURCES) $(MES_SOURCES) -o $@
cp -f $@ bin/mes
bin/gc-gcc: simple.make $(GCC_SOURCES) $(TEST_GC_SOURCES) $(INCLUDES) | bin bin/gc-gcc: simple.make $(GCC_SOURCES) $(TEST_GC_SOURCES) $(INCLUDES) | bin
$(CC) $(CFLAGS) -D GC_TEST=1 $(GCC_SOURCES) $(TEST_GC_SOURCES) -o $@ $(CC) $(CFLAGS) -D GC_TEST=1 $(GCC_SOURCES) $(TEST_GC_SOURCES) -o $@
@ -196,33 +197,34 @@ M2_PLANET_SOURCES = \
$(M2_PLANET_INCLUDES:%.h=%.h) \ $(M2_PLANET_INCLUDES:%.h=%.h) \
$(M2_SOURCES) $(M2_SOURCES)
bin/mes-m2.M1: simple.make $(M2_PLANET_SOURCES) $(MES_SOURCES) $(M2_PLANET_INCLUDES) | bin m2/mes-m2.M1: simple.make $(M2_PLANET_SOURCES) $(MES_SOURCES) $(M2_PLANET_INCLUDES) | bin
$(M2_PLANET) $(M2_PLANET_FLAGS) $(M2_PLANET_SOURCES:%=-f %) $(MES_SOURCES:%.c=-f %.c) -o $@ || rm -f $@ $(M2_PLANET) $(M2_PLANET_FLAGS) $(M2_PLANET_SOURCES:%=-f %) $(MES_SOURCES:%.c=-f %.c) -o $@ || rm -f $@
bin/mes-m2.blood-elf.M1: bin/mes-m2.M1 m2/mes-m2.blood-elf.M1: m2/mes-m2.M1
# blood-elf --32 -f $< -o $@ # blood-elf --32 -f $< -o $@
blood-elf -f $< -o $@ blood-elf -f $< -o $@
bin/mes-m2.hex2: bin/mes-m2.blood-elf.M1 m2/mes-m2.hex2: m2/mes-m2.blood-elf.M1
M1 \ M1 \
--LittleEndian \ --LittleEndian \
--architecture $(M2_PLANET_ARCH) \ --architecture $(M2_PLANET_ARCH) \
-f lib/m2/x86/x86_defs.M1 \ -f lib/m2/x86/x86_defs.M1 \
-f lib/x86-mes/x86.M1 \ -f lib/x86-mes/x86.M1 \
-f lib/linux/x86-mes-m2/crt1.M1 \ -f lib/linux/x86-mes-m2/crt1.M1 \
-f bin/mes-m2.M1 \ -f m2/mes-m2.M1 \
-f bin/mes-m2.blood-elf.M1 \ -f m2/mes-m2.blood-elf.M1 \
-o $@ -o $@
bin/mes-m2: bin/mes-m2.hex2 bin/mes-m2: m2/mes-m2.hex2
hex2 \ hex2 \
--LittleEndian \ --LittleEndian \
--architecture $(M2_PLANET_ARCH) \ --architecture $(M2_PLANET_ARCH) \
--BaseAddress 0x1000000 \ --BaseAddress 0x1000000 \
--exec_enable \ --exec_enable \
-f lib/x86-mes/elf32-header.hex2 \ -f lib/x86-mes/elf32-header.hex2 \
-f bin/mes-m2.hex2 \ -f m2/mes-m2.hex2 \
-o $@ -o $@
cp -f $@ bin/mes
# Clean up after ourselves # Clean up after ourselves
.PHONY: clean .PHONY: clean