diff --git a/steps/mes-wip/files/config.h b/steps/mes-wip/files/config.h new file mode 100644 index 0000000..e79ee96 --- /dev/null +++ b/steps/mes-wip/files/config.h @@ -0,0 +1,7 @@ +// SPDX-FileCopyrightText: 2020 fosslinux +// SPDX-FileCopyrightText: 2021 Andrius Štikonas +// +// SPDX-License-Identifier: GPL-3.0-or-later + +#undef SYSTEM_LIBC +#define MES_VERSION "0.25" diff --git a/steps/mes-wip/mes-wip.amd64.checksums b/steps/mes-wip/mes-wip.amd64.checksums new file mode 100644 index 0000000..de3f031 --- /dev/null +++ b/steps/mes-wip/mes-wip.amd64.checksums @@ -0,0 +1,14 @@ +7e7603e98fb11854d73ebba34c9dd617fcce3c025aa8cbfd1471bf17944fa165 /usr/bin/mes +0034577d4550928e6b72c581c09603fae758a5a3fa3885417e264aba544880df /usr/bin/mes-m2 +20655e4ec935bdb63099eaf48e89b24010413a444cbcdc3f21a1cd12a5c62ddc /usr/bin/mescc.scm +c66de1ba72b8019eee113271638e4e30543aa7d34f45c9cc751346dba0d8817c /usr/lib/x86_64-mes/crt1.s +d0a80b94228deb99bda15244f0ed3736badd0632c78a3379195ba24a78f68a75 /usr/lib/x86_64-mes/crt1.o +d0f691ad803ed00530297456086e8b820cda4faec3e7dbde767b4558e71a1b47 /usr/lib/x86_64-mes/x86_64.M1 +684bfcde34f118026d875acf2dbe2e4a39dce96d5f938f534995b582ba1a4241 /usr/lib/x86_64-mes/libmescc.s +5283a6facbd677f6abed6865fa1aa25a40aab9c3370dff2eb1cf252a777f8e3a /usr/lib/x86_64-mes/libc+tcc.s +476614bf2eb421ffd5f4bda74c01ae600ac7b719ca3bf0464686db1a8934fb51 /usr/lib/x86_64-mes/libc.s +ad1f1e390f675db2a3545aecc63df798d49317cad2ae5eadb9382df960bbd9f3 /usr/lib/x86_64-mes/libmescc.a +8cd0172fe545417e73214765da606c8073a3b31dcaed69ff347fa0000706e302 /usr/lib/x86_64-mes/libc+tcc.a +2ed13bed31a6c5da89d4190dc017f392412a8f54d1a58c16f67b2bdcd4728c39 /usr/lib/x86_64-mes/libc.a +48c57492e80a99bf16eeba55e242b60b9e759992482b651d1b512f07ddd9a65a /usr/lib/linux/x86_64-mes/elf64-header.hex2 +94c796cb34a6e581491d0cf609e7fad01715c84a17b8b2017178a36568a80e48 /usr/lib/linux/x86_64-mes/elf64-footer-single-main.hex2 diff --git a/steps/mes-wip/mes-wip.amd64.checksums~ b/steps/mes-wip/mes-wip.amd64.checksums~ new file mode 100644 index 0000000..e18fe9c --- /dev/null +++ b/steps/mes-wip/mes-wip.amd64.checksums~ @@ -0,0 +1,14 @@ +8a110ae6bd939c215541816873a4c89de29133d64c0c8d0dd98ec0e220afeafb /usr/bin/mes +0034577d4550928e6b72c581c09603fae758a5a3fa3885417e264aba544880df /usr/bin/mes-m2 +20655e4ec935bdb63099eaf48e89b24010413a444cbcdc3f21a1cd12a5c62ddc /usr/bin/mescc.scm +c66de1ba72b8019eee113271638e4e30543aa7d34f45c9cc751346dba0d8817c /usr/lib/x86_64-mes/crt1.s +d0a80b94228deb99bda15244f0ed3736badd0632c78a3379195ba24a78f68a75 /usr/lib/x86_64-mes/crt1.o +d0f691ad803ed00530297456086e8b820cda4faec3e7dbde767b4558e71a1b47 /usr/lib/x86_64-mes/x86_64.M1 +684bfcde34f118026d875acf2dbe2e4a39dce96d5f938f534995b582ba1a4241 /usr/lib/x86_64-mes/libmescc.s +5283a6facbd677f6abed6865fa1aa25a40aab9c3370dff2eb1cf252a777f8e3a /usr/lib/x86_64-mes/libc+tcc.s +476614bf2eb421ffd5f4bda74c01ae600ac7b719ca3bf0464686db1a8934fb51 /usr/lib/x86_64-mes/libc.s +ad1f1e390f675db2a3545aecc63df798d49317cad2ae5eadb9382df960bbd9f3 /usr/lib/x86_64-mes/libmescc.a +8cd0172fe545417e73214765da606c8073a3b31dcaed69ff347fa0000706e302 /usr/lib/x86_64-mes/libc+tcc.a +2ed13bed31a6c5da89d4190dc017f392412a8f54d1a58c16f67b2bdcd4728c39 /usr/lib/x86_64-mes/libc.a +48c57492e80a99bf16eeba55e242b60b9e759992482b651d1b512f07ddd9a65a /usr/lib/linux/x86_64-mes/elf64-header.hex2 +94c796cb34a6e581491d0cf609e7fad01715c84a17b8b2017178a36568a80e48 /usr/lib/linux/x86_64-mes/elf64-footer-single-main.hex2 diff --git a/steps/mes-wip/mes-wip.riscv64.checksums b/steps/mes-wip/mes-wip.riscv64.checksums new file mode 100644 index 0000000..2bd7877 --- /dev/null +++ b/steps/mes-wip/mes-wip.riscv64.checksums @@ -0,0 +1,14 @@ +8b3356c019dbc28dd0f1e9aec9401aca7eb64fb5df6a8a5bf9e102424858dc1e /usr/bin/mes +8e02c4d6ed08085a19bfadf3d23b2994d3a2262a758ff4aa5820f3ff861ed3b8 /usr/bin/mes-m2 +11f33b019f78c90fcbd2385ebb037ee4e36984117799207497c3c83e8d537d1d /usr/bin/mescc.scm +50441b03b915bd51fb811749901a56b3c42186b45f7f466dbf23337eafad520c /usr/lib/riscv64-mes/crt1.s +a96a0a8f1b2dd1e5a7dad8264c92b5448be7d29aa7706d40d67be978d5ddc305 /usr/lib/riscv64-mes/crt1.o +1511e99da81caa02490078c7a880ac97d439b6fec99cf846dc2044468e2444b8 /usr/lib/riscv64-mes/riscv64.M1 +8f7e94270c7cbb076ff5fe3cdd0d6c891537e7945e5aa4bdbf167867471bfbc2 /usr/lib/riscv64-mes/libmescc.s +56ae642a1c91ea955cc2300e3ee403faa8ed33de0f9c467b2125dda1b49afbee /usr/lib/riscv64-mes/libc+tcc.s +f19bdc06f1a4fa963d8fe03dbad5511e949dd138ef630cc0cc5b13c543cb2b3c /usr/lib/riscv64-mes/libc.s +5027a055f6c564417bf5194a9b43a8a93ae59d9a26ce75a55895f253a6aab2c2 /usr/lib/riscv64-mes/libmescc.a +aafe19f6eabd95c6baaad1c1c144a6124bc0408f97241588206e84fb2c0a3649 /usr/lib/riscv64-mes/libc+tcc.a +e241802ad00361eeb1e9532743fedc805e0189e8f7ff13e3c1cd779c34cd823c /usr/lib/riscv64-mes/libc.a +22ad5f7b6e5ea07b275619956bddd913b061d6ad492a442e4b6b2f28898e50ae /usr/lib/linux/riscv64-mes/elf64-header.hex2 +94c796cb34a6e581491d0cf609e7fad01715c84a17b8b2017178a36568a80e48 /usr/lib/linux/riscv64-mes/elf64-footer-single-main.hex2 diff --git a/steps/mes-wip/mes-wip.x86.checksums b/steps/mes-wip/mes-wip.x86.checksums new file mode 100644 index 0000000..39cb366 --- /dev/null +++ b/steps/mes-wip/mes-wip.x86.checksums @@ -0,0 +1,14 @@ +07cbc35bf36383383baecd42a9407b9ed516a82d112ea6088edd63bb8a956951 /usr/bin/mes +84e2ff676f5429d48789edc74d84ee1908ee8933e89750995dba364ea7744e36 /usr/bin/mes-m2 +761fe4fbbee5bfd45506ea8dbd0aeecfe8855159bd794e07fca1988109510170 /usr/bin/mescc.scm +234c264965116a24583dd569050adc766d7cc2da83b1db38085210f26031b70c /usr/lib/x86-mes/crt1.s +494f184a87175abc485a898c250c3831b2b5dcf5aead46591e00b39d1c5529fc /usr/lib/x86-mes/crt1.o +8afe05c3e1e8848b6f3e8de751524de5f69818eb8524659827918e3fddde3e1e /usr/lib/x86-mes/x86.M1 +771988b1df0dfa04bf5f1ab72af18c32b1a8205a07f10e5235d79dac0a072b00 /usr/lib/x86-mes/libmescc.s +75068c267729eb59f6fa1e1c4fa69c9ea5c24c50e131c1867a17c52efaed459f /usr/lib/x86-mes/libc+tcc.s +40c22be10018eaf9425f6b1b45e6ad2e4e169f8df12c4f03f271c892fe3422cd /usr/lib/x86-mes/libc.s +52f697278ccdff5e457f27e10f465a91ab9858f0c6cee0683831cadb3109bbb7 /usr/lib/x86-mes/libmescc.a +b75fa0493e7ed0d1579fa1b04f288dd0058c70937eccd12c2dc82802e3f0c17f /usr/lib/x86-mes/libc+tcc.a +c9c684c17a32b7adc1546a6ebba11a56ac88e6af2101f45cc0e8cd320555d735 /usr/lib/x86-mes/libc.a +82cac4353375a52efecc6fda1f8b37373988fe41ed197b63d8e906321b105d77 /usr/lib/linux/x86-mes/elf32-header.hex2 +f9873d9aab12e70f24d97f8319e17a1e698ca60779ae9a6ab3ede648cd60fc61 /usr/lib/linux/x86-mes/elf32-footer-single-main.hex2 diff --git a/steps/mes-wip/mes-wip.x86.checksums~ b/steps/mes-wip/mes-wip.x86.checksums~ new file mode 100644 index 0000000..4675a44 --- /dev/null +++ b/steps/mes-wip/mes-wip.x86.checksums~ @@ -0,0 +1,14 @@ +07cbc35bf36383383baecd42a9407b9ed516a82d112ea6088edd63bb8a956951 /usr/bin/mes +84e2ff676f5429d48789edc74d84ee1908ee8933e89750995dba364ea7744e36 /usr/bin/mes-m2 +761fe4fbbee5bfd45506ea8dbd0aeecfe8855159bd794e07fca1988109510170 /usr/bin/mescc.scm +234c264965116a24583dd569050adc766d7cc2da83b1db38085210f26031b70c /usr/lib/x86-mes/crt1.s +bc745d8e3fdd8e68aa6d6abb598cdf48cf63338b02eea1e8026756b2cc411ed7 /usr/lib/x86-mes/crt1.o +8afe05c3e1e8848b6f3e8de751524de5f69818eb8524659827918e3fddde3e1e /usr/lib/x86-mes/x86.M1 +771988b1df0dfa04bf5f1ab72af18c32b1a8205a07f10e5235d79dac0a072b00 /usr/lib/x86-mes/libmescc.s +75068c267729eb59f6fa1e1c4fa69c9ea5c24c50e131c1867a17c52efaed459f /usr/lib/x86-mes/libc+tcc.s +40c22be10018eaf9425f6b1b45e6ad2e4e169f8df12c4f03f271c892fe3422cd /usr/lib/x86-mes/libc.s +52f697278ccdff5e457f27e10f465a91ab9858f0c6cee0683831cadb3109bbb7 /usr/lib/x86-mes/libmescc.a +b75fa0493e7ed0d1579fa1b04f288dd0058c70937eccd12c2dc82802e3f0c17f /usr/lib/x86-mes/libc+tcc.a +c9c684c17a32b7adc1546a6ebba11a56ac88e6af2101f45cc0e8cd320555d735 /usr/lib/x86-mes/libc.a +82cac4353375a52efecc6fda1f8b37373988fe41ed197b63d8e906321b105d77 /usr/lib/linux/x86-mes/elf32-header.hex2 +f9873d9aab12e70f24d97f8319e17a1e698ca60779ae9a6ab3ede648cd60fc61 /usr/lib/linux/x86-mes/elf32-footer-single-main.hex2 diff --git a/steps/mes-wip/pass1.kaem b/steps/mes-wip/pass1.kaem new file mode 100755 index 0000000..ac99080 --- /dev/null +++ b/steps/mes-wip/pass1.kaem @@ -0,0 +1,400 @@ +#!/bin/sh + +# SPDX-FileCopyrightText: 2020-2023 Andrius Štikonas +# SPDX-FileCopyrightText: 2020-2022 fosslinux +# +# SPDX-License-Identifier: GPL-3.0-or-later + +set -ex + +# Variables +MES_ARENA=20000000 +MES_MAX_ARENA=20000000 +MES_STACK=6000000 +MES=${BINDIR}/mes-m2 +LIBDIR=${MES_PREFIX}/lib + +if match ${ARCH} x86; then + MES_ARCH=x86 + ARCH_BITS=32 +fi +if match ${ARCH} amd64; then + MES_ARCH=x86_64 + ARCH_BITS=64 +fi +if match ${ARCH} riscv64; then + MES_ARCH=riscv64 + ARCH_BITS=64 +fi + +# Check tarball checksums +checksum-transcriber sources +sha256sum -c sources.SHA256SUM + +# Unpack +mkdir src build +cd src +ungz --file ${DISTFILES}/${NYACC_PKG}.tar.gz --output ${NYACC_PKG}.tar +ungz --file ${DISTFILES}/${MES_PKG}.tar.gz --output ${MES_PKG}.tar +cd .. + +cd build +untar --file ../src/${NYACC_PKG}.tar +untar --non-strict --file ../src/${MES_PKG}.tar # ignore symlinks +mes_run=${MES_PREFIX}/kaem.run +replace --file ${mes_run} --output ${mes_run} --match-on 0x1000000 --replace-with 0x8048000 + +rm ../src/${NYACC_PKG}.tar ../src/${MES_PKG}.tar + +cp ../files/config.h ${MES_PREFIX}/include/mes + +cd ${MES_PREFIX} +mkdir include/arch +cp include/linux/${MES_ARCH}/syscall.h include/arch/syscall.h +cp include/linux/${MES_ARCH}/kernel-stat.h include/arch/kernel-stat.h + +# Remove pregenerated files +rm mes/module/mes/psyntax.pp mes/module/mes/psyntax.pp.header + +# These files are symlinked in the repo +cp mes/module/srfi/srfi-9-struct.mes mes/module/srfi/srfi-9.mes +cp mes/module/srfi/srfi-9/gnu-struct.mes mes/module/srfi/srfi-9/gnu.mes + +# Build mes-m2 +kaem --verbose --strict --file kaem.${MES_ARCH} +cp bin/mes-m2 ${BINDIR}/mes-m2 +chmod 755 ${BINDIR}/mes-m2 + +# Create mescc.scm +mescc_in=scripts/mescc.scm.in +replace --file ${mescc_in} --output ${mescc_in} --match-on @prefix@ --replace-with ${PREFIX} +replace --file ${mescc_in} --output ${mescc_in} --match-on @VERSION@ --replace-with ${MES_VERSION} +replace --file ${mescc_in} --output ${mescc_in} --match-on @mes_cpu@ --replace-with ${MES_ARCH} +replace --file ${mescc_in} --output ${mescc_in} --match-on @mes_kernel@ --replace-with linux + +mescc_scm=${BINDIR}/mescc.scm +cp ${mescc_in} ${mescc_scm} +chmod 755 ${mescc_scm} + + +# Recompile Mes and Mes C library using mes-m2 bootstrapped Mes + +alias mescc="${MES} -e main ${BINDIR}/mescc.scm -D HAVE_CONFIG_H=1 -I include -I include/linux/${MES_ARCH} -c" + +# Start with crt1.o +mescc lib/linux/${MES_ARCH}-mes-mescc/crt1.c -o lib/${MES_ARCH}-mes/crt1.o + +# Now for libc-mini.a +mescc lib/mes/__init_io.c +mescc lib/mes/eputs.c +mescc lib/mes/oputs.c +mescc lib/mes/globals.c +mescc lib/stdlib/exit.c +mescc lib/linux/${MES_ARCH}-mes-mescc/_exit.c +mescc lib/linux/${MES_ARCH}-mes-mescc/_write.c +mescc lib/stdlib/puts.c +mescc lib/string/strlen.c +catm ${LIBDIR}/${MES_ARCH}-mes/libc-mini.a __init_io.o eputs.o oputs.o globals.o exit.o _exit.o _write.o puts.o strlen.o +catm ${LIBDIR}/${MES_ARCH}-mes/libc-mini.s __init_io.s eputs.s oputs.s globals.s exit.s _exit.s _write.s puts.s strlen.s + +# libmescc.a +mescc lib/linux/${MES_ARCH}-mes-mescc/syscall-internal.c +catm ${LIBDIR}/${MES_ARCH}-mes/libmescc.a globals.o syscall-internal.o +catm ${LIBDIR}/${MES_ARCH}-mes/libmescc.s globals.s syscall-internal.s + +# libc.a +mescc lib/ctype/isnumber.c +mescc lib/mes/abtol.c +mescc lib/mes/cast.c +mescc lib/mes/eputc.c +mescc lib/mes/fdgetc.c +mescc lib/mes/fdputc.c +mescc lib/mes/fdputs.c +mescc lib/mes/fdungetc.c +mescc lib/mes/itoa.c +mescc lib/mes/ltoa.c +mescc lib/mes/ltoab.c +mescc lib/mes/mes_open.c +mescc lib/mes/ntoab.c +mescc lib/mes/oputc.c +mescc lib/mes/ultoa.c +mescc lib/mes/utoa.c +mescc lib/ctype/isdigit.c +mescc lib/ctype/isspace.c +mescc lib/ctype/isxdigit.c +mescc lib/mes/assert_msg.c +mescc lib/posix/write.c +mescc lib/stdlib/atoi.c +mescc lib/linux/lseek.c +mescc lib/mes/__assert_fail.c +mescc lib/mes/__buffered_read.c +mescc lib/mes/__mes_debug.c +mescc lib/posix/execv.c +mescc lib/posix/getcwd.c +mescc lib/posix/getenv.c +mescc lib/posix/isatty.c +mescc lib/posix/open.c +mescc lib/posix/buffered-read.c +mescc lib/posix/setenv.c +# mescc lib/posix/sleep.c +mescc lib/posix/wait.c +mescc lib/dirent/closedir.c +mescc lib/dirent/opendir.c +mescc lib/stdio/fgetc.c +mescc lib/stdio/fputc.c +mescc lib/stdio/fputs.c +mescc lib/stdio/getc.c +mescc lib/stdio/getchar.c +mescc lib/stdio/putc.c +mescc lib/stdio/putchar.c +mescc lib/stdio/ungetc.c +mescc lib/stdlib/calloc.c +mescc lib/stdlib/free.c +mescc lib/stdlib/realloc.c +mescc lib/string/memchr.c +mescc lib/string/memcmp.c +mescc lib/string/memcpy.c +mescc lib/string/memmove.c +mescc lib/string/memset.c +mescc lib/string/strcmp.c +mescc lib/string/strcpy.c +mescc lib/string/strncmp.c +mescc lib/posix/raise.c +mescc lib/linux/access.c +mescc lib/linux/brk.c +mescc lib/linux/chdir.c +mescc lib/linux/chmod.c +mescc lib/linux/clock_gettime.c +mescc lib/linux/dup.c +mescc lib/linux/dup2.c +mescc lib/linux/execve.c +mescc lib/linux/fork.c +mescc lib/linux/fsync.c +mescc lib/linux/_getcwd.c +mescc lib/linux/gettimeofday.c +mescc lib/linux/ioctl3.c +mescc lib/linux/malloc.c +mescc lib/linux/_open3.c +# mescc lib/linux/read.c +mescc lib/linux/_read.c +mescc lib/linux/readdir.c +mescc lib/linux/rename.c +mescc lib/linux/time.c +mescc lib/linux/umask.c +mescc lib/linux/uname.c +mescc lib/linux/unlink.c +# mescc lib/stub/utime.c +mescc lib/linux/utimensat.c +mescc lib/linux/wait4.c +mescc lib/linux/waitpid.c +mescc lib/linux/${MES_ARCH}-mes-mescc/syscall.c +mescc lib/linux/getpid.c +mescc lib/linux/kill.c +mescc lib/linux/pipe.c +mescc lib/linux/stat.c +mescc lib/linux/lstat.c +mescc lib/linux/mkdir.c +mescc lib/linux/rmdir.c +mescc lib/linux/link.c +mescc lib/linux/symlink.c +mescc lib/linux/close.c +mescc lib/linux/nanosleep.c +mescc lib/linux/fcntl.c +mescc lib/linux/fstat.c +mescc lib/linux/getdents.c +catm ${LIBDIR}/${MES_ARCH}-mes/libc.a __init_io.o eputs.o oputs.o globals.o exit.o _exit.o _write.o puts.o strlen.o isnumber.o abtol.o cast.o eputc.o fdgetc.o fdputc.o fdputs.o fdungetc.o itoa.o ltoa.o ltoab.o mes_open.o ntoab.o oputc.o ultoa.o utoa.o isdigit.o isspace.o isxdigit.o assert_msg.o write.o atoi.o lseek.o __assert_fail.o __buffered_read.o __mes_debug.o execv.o getcwd.o getenv.o isatty.o open.o buffered-read.o setenv.o wait.o closedir.o opendir.o fgetc.o fputc.o fputs.o getc.o getchar.o putc.o putchar.o ungetc.o calloc.o free.o malloc.o realloc.o memchr.o memcmp.o memcpy.o memmove.o memset.o strcmp.o strcpy.o strncmp.o raise.o access.o brk.o chdir.o chmod.o clock_gettime.o dup.o dup2.o execve.o fork.o fsync.o _getcwd.o gettimeofday.o ioctl3.o _open3.o _read.o readdir.o rename.o time.o umask.o uname.o unlink.o utimensat.o wait4.o waitpid.o syscall.o getpid.o kill.o pipe.o stat.o lstat.o mkdir.o rmdir.o link.o symlink.o close.o nanosleep.o fcntl.o fstat.o getdents.o +catm ${LIBDIR}/${MES_ARCH}-mes/libc.s __init_io.s eputs.s oputs.s globals.s exit.s _exit.s _write.s puts.s strlen.s isnumber.s abtol.s cast.s eputc.s fdgetc.s fdputc.s fdputs.s fdungetc.s itoa.s ltoa.s ltoab.s mes_open.s ntoab.s oputc.s ultoa.s utoa.s isdigit.s isspace.s isxdigit.s assert_msg.s write.s atoi.s lseek.s __assert_fail.s __buffered_read.s __mes_debug.s execv.s getcwd.s getenv.s isatty.s open.s buffered-read.s setenv.s wait.s closedir.s opendir.s fgetc.s fputc.s fputs.s getc.s getchar.s putc.s putchar.s ungetc.s calloc.s free.s malloc.s realloc.s memchr.s memcmp.s memcpy.s memmove.s memset.s strcmp.s strcpy.s strncmp.s raise.s access.s brk.s chdir.s chmod.s clock_gettime.s dup.s dup2.s execve.s fork.s fsync.s _getcwd.s gettimeofday.s ioctl3.s _open3.s _read.s readdir.s rename.s time.s umask.s uname.s unlink.s utimensat.s wait4.s waitpid.s syscall.s getpid.s kill.s pipe.s stat.s lstat.s mkdir.s rmdir.s link.s symlink.s close.s nanosleep.s fcntl.s fstat.s getdents.s + +# Build mes itself +mescc src/builtins.c +mescc src/cc.c +mescc src/core.c +mescc src/display.c +mescc src/eval-apply.c +mescc src/gc.c +mescc src/globals.c +mescc src/hash.c +mescc src/lib.c +mescc src/math.c +mescc src/mes.c +mescc src/module.c +mescc src/posix.c +mescc src/reader.c +mescc src/stack.c +mescc src/string.c +mescc src/struct.c +mescc src/symbol.c +mescc src/variable.c +mescc src/vector.c + +# Link everything into new mes executable +${MES} -e main ${mescc_scm} -- --base-address 0x08048000 -L ${LIBDIR} -o ${BINDIR}/mes builtins.o cc.o core.o display.o eval-apply.o gc.o globals.o hash.o lib.o math.o mes.o module.o posix.o reader.o stack.o string.o struct.o symbol.o variable.o vector.o -lc -lmescc + +# libc+tcc.a +alias mescc="${BINDIR}/mes -e main ${BINDIR}/mescc.scm -D HAVE_CONFIG_H=1 -I include -I include/linux/${MES_ARCH} -c" +mescc lib/ctype/islower.c +mescc lib/ctype/isupper.c +mescc lib/ctype/tolower.c +mescc lib/ctype/toupper.c +mescc lib/mes/abtod.c +mescc lib/mes/dtoab.c +mescc lib/mes/search-path.c +mescc lib/posix/execvp.c +mescc lib/stdio/fclose.c +mescc lib/stdio/fdopen.c +mescc lib/stdio/ferror.c +mescc lib/stdio/fflush.c +mescc lib/stdio/fopen.c +mescc lib/stdio/fprintf.c +mescc lib/stdio/fread.c +mescc lib/stdio/fseek.c +mescc lib/stdio/ftell.c +mescc lib/stdio/fwrite.c +mescc lib/stdio/printf.c +mescc lib/stdio/remove.c +mescc lib/stdio/snprintf.c +mescc lib/stdio/sprintf.c +mescc lib/stdio/sscanf.c +mescc lib/stdio/vfprintf.c +mescc lib/stdio/vprintf.c +mescc lib/stdio/vsnprintf.c +mescc lib/stdio/vsprintf.c +mescc lib/stdio/vsscanf.c +mescc lib/stdlib/abort.c +mescc lib/stdlib/qsort.c +mescc lib/stdlib/strtod.c +mescc lib/stdlib/strtof.c +mescc lib/stdlib/strtol.c +mescc lib/stdlib/strtold.c +mescc lib/stdlib/strtoll.c +mescc lib/stdlib/strtoul.c +mescc lib/stdlib/strtoull.c +mescc lib/string/memmem.c +mescc lib/string/strcat.c +mescc lib/string/strchr.c +mescc lib/string/strlwr.c +mescc lib/string/strncpy.c +mescc lib/string/strrchr.c +mescc lib/string/strstr.c +mescc lib/string/strupr.c +mescc lib/stub/sigaction.c +mescc lib/stub/ldexp.c +mescc lib/stub/mprotect.c +mescc lib/stub/localtime.c +mescc lib/stub/sigemptyset.c +mescc lib/${MES_ARCH}-mes-mescc/setjmp.c +catm ${LIBDIR}/${MES_ARCH}-mes/libc+tcc.a ${LIBDIR}/${MES_ARCH}-mes/libc.a islower.o isupper.o tolower.o toupper.o abtod.o dtoab.o search-path.o execvp.o fclose.o fdopen.o ferror.o fflush.o fopen.o fprintf.o fread.o fseek.o ftell.o fwrite.o printf.o remove.o snprintf.o sprintf.o sscanf.o vfprintf.o vprintf.o vsnprintf.o vsprintf.o vsscanf.o abort.o qsort.o strtod.o strtof.o strtol.o strtold.o strtoll.o strtoul.o strtoull.o memmem.o strcat.o strchr.o strlwr.o strncpy.o strrchr.o strstr.o strupr.o sigaction.o ldexp.o mprotect.o localtime.o sigemptyset.o setjmp.o +catm ${LIBDIR}/${MES_ARCH}-mes/libc+tcc.s ${LIBDIR}/${MES_ARCH}-mes/libc.s islower.s isupper.s tolower.s toupper.s abtod.s dtoab.s search-path.s execvp.s fclose.s fdopen.s ferror.s fflush.s fopen.s fprintf.s fread.s fseek.s ftell.s fwrite.s printf.s remove.s snprintf.s sprintf.s sscanf.s vfprintf.s vprintf.s vsnprintf.s vsprintf.s vsscanf.s abort.s qsort.s strtod.s strtof.s strtol.s strtold.s strtoll.s strtoul.s strtoull.s memmem.s strcat.s strchr.s strlwr.s strncpy.s strrchr.s strstr.s strupr.s sigaction.s ldexp.s mprotect.s localtime.s sigemptyset.s setjmp.s + +# Make directories +mkdir ${PREFIX}/lib/linux ${INCDIR}/mes ${INCDIR}/sys ${INCDIR}/linux ${INCDIR}/arch +mkdir ${PREFIX}/lib/${MES_ARCH}-mes ${PREFIX}/lib/linux/${MES_ARCH}-mes ${INCDIR}/linux/${MES_ARCH} + +# Install libraries +cp ${LIBDIR}/${MES_ARCH}-mes/libc.a ${PREFIX}/lib/${MES_ARCH}-mes/ +cp ${LIBDIR}/${MES_ARCH}-mes/libc+tcc.a ${PREFIX}/lib/${MES_ARCH}-mes/ +cp ${LIBDIR}/${MES_ARCH}-mes/libmescc.a ${PREFIX}/lib/${MES_ARCH}-mes/ +cp ${LIBDIR}/${MES_ARCH}-mes/libc.s ${PREFIX}/lib/${MES_ARCH}-mes/ +cp ${LIBDIR}/${MES_ARCH}-mes/libc+tcc.s ${PREFIX}/lib/${MES_ARCH}-mes/ +cp ${LIBDIR}/${MES_ARCH}-mes/libmescc.s ${PREFIX}/lib/${MES_ARCH}-mes/ +cp ${LIBDIR}/${MES_ARCH}-mes/${MES_ARCH}.M1 ${PREFIX}/lib/${MES_ARCH}-mes/ +cp ${LIBDIR}/${MES_ARCH}-mes/crt1.o ${PREFIX}/lib/${MES_ARCH}-mes/ +cp ${LIBDIR}/${MES_ARCH}-mes/crt1.s ${PREFIX}/lib/${MES_ARCH}-mes/ +cp ${LIBDIR}/linux/${MES_ARCH}-mes/elf${ARCH_BITS}-footer-single-main.hex2 ${PREFIX}/lib/linux/${MES_ARCH}-mes/ +cp ${LIBDIR}/linux/${MES_ARCH}-mes/elf${ARCH_BITS}-header.hex2 ${PREFIX}/lib/linux/${MES_ARCH}-mes/ + +# Install header files +cp include/alloca.h ${INCDIR}/alloca.h +cp include/argz.h ${INCDIR}/argz.h +cp include/ar.h ${INCDIR}/ar.h +cp include/assert.h ${INCDIR}/assert.h +cp include/ctype.h ${INCDIR}/ctype.h +cp include/dirent.h ${INCDIR}/dirent.h +cp include/dirstream.h ${INCDIR}/dirstream.h +cp include/dlfcn.h ${INCDIR}/dlfcn.h +cp include/endian.h ${INCDIR}/endian.h +cp include/errno.h ${INCDIR}/errno.h +cp include/fcntl.h ${INCDIR}/fcntl.h +cp include/features.h ${INCDIR}/features.h +cp include/float.h ${INCDIR}/float.h +cp include/getopt.h ${INCDIR}/getopt.h +cp include/grp.h ${INCDIR}/grp.h +cp include/inttypes.h ${INCDIR}/inttypes.h +cp include/libgen.h ${INCDIR}/libgen.h +cp include/limits.h ${INCDIR}/limits.h +cp include/locale.h ${INCDIR}/locale.h +cp include/math.h ${INCDIR}/math.h +cp include/memory.h ${INCDIR}/memory.h +cp include/pwd.h ${INCDIR}/pwd.h +cp include/setjmp.h ${INCDIR}/setjmp.h +cp include/signal.h ${INCDIR}/signal.h +cp include/stdarg.h ${INCDIR}/stdarg.h +cp include/stdbool.h ${INCDIR}/stdbool.h +cp include/stddef.h ${INCDIR}/stddef.h +cp include/stdint.h ${INCDIR}/stdint.h +cp include/stdio.h ${INCDIR}/stdio.h +cp include/stdlib.h ${INCDIR}/stdlib.h +cp include/stdnoreturn.h ${INCDIR}/stdnoreturn.h +cp include/string.h ${INCDIR}/string.h +cp include/strings.h ${INCDIR}/strings.h +cp include/termio.h ${INCDIR}/termio.h +cp include/time.h ${INCDIR}/time.h +cp include/unistd.h ${INCDIR}/unistd.h + +cp include/arch/kernel-stat.h ${INCDIR}/arch/kernel-stat.h +cp include/arch/syscall.h ${INCDIR}/arch/syscall.h + +cp include/linux/syscall.h ${INCDIR}/linux/syscall.h +cp include/linux/${MES_ARCH}/syscall.h ${INCDIR}/linux/${MES_ARCH}/syscall.h + +cp include/mes/builtins.h ${INCDIR}/mes/builtins.h +cp include/mes/cc.h ${INCDIR}/mes/cc.h +catm ${INCDIR}/mes/config.h +cp include/mes/constants.h ${INCDIR}/mes/constants.h +cp include/mes/lib.h ${INCDIR}/mes/lib.h +cp include/mes/lib-cc.h ${INCDIR}/mes/lib-cc.h +cp include/mes/lib-mini.h ${INCDIR}/mes/lib-mini.h +cp include/mes/mes.h ${INCDIR}/mes/mes.h +cp include/mes/symbols.h ${INCDIR}/mes/symbols.h + +cp include/sys/cdefs.h ${INCDIR}/sys/cdefs.h +cp include/sys/dir.h ${INCDIR}/sys/dir.h +cp include/sys/file.h ${INCDIR}/sys/file.h +cp include/sys/ioctl.h ${INCDIR}/sys/ioctl.h +cp include/sys/mman.h ${INCDIR}/sys/mman.h +cp include/sys/param.h ${INCDIR}/sys/param.h +cp include/sys/resource.h ${INCDIR}/sys/resource.h +cp include/sys/select.h ${INCDIR}/sys/select.h +cp include/sys/stat.h ${INCDIR}/sys/stat.h +cp include/sys/timeb.h ${INCDIR}/sys/timeb.h +cp include/sys/time.h ${INCDIR}/sys/time.h +cp include/sys/times.h ${INCDIR}/sys/times.h +cp include/sys/types.h ${INCDIR}/sys/types.h +cp include/sys/ucontext.h ${INCDIR}/sys/ucontext.h +cp include/sys/user.h ${INCDIR}/sys/user.h +cp include/sys/wait.h ${INCDIR}/sys/wait.h + +cd ../.. + +# Checksums +if match x${UPDATE_CHECKSUMS} xTrue; then + sha256sum -o ${pkg}.${ARCH}.checksums \ + /usr/bin/mes \ + /usr/bin/mes-m2 \ + /usr/bin/mescc.scm \ + /usr/lib/${MES_ARCH}-mes/crt1.s \ + /usr/lib/${MES_ARCH}-mes/crt1.o \ + /usr/lib/${MES_ARCH}-mes/${MES_ARCH}.M1 \ + /usr/lib/${MES_ARCH}-mes/libmescc.s \ + /usr/lib/${MES_ARCH}-mes/libc+tcc.s \ + /usr/lib/${MES_ARCH}-mes/libc.s \ + /usr/lib/${MES_ARCH}-mes/libmescc.a \ + /usr/lib/${MES_ARCH}-mes/libc+tcc.a \ + /usr/lib/${MES_ARCH}-mes/libc.a \ + /usr/lib/linux/${MES_ARCH}-mes/elf${ARCH_BITS}-header.hex2 \ + /usr/lib/linux/${MES_ARCH}-mes/elf${ARCH_BITS}-footer-single-main.hex2 + + cp ${pkg}.${ARCH}.checksums ${SRCDIR} +else + sha256sum -c ${pkg}.${ARCH}.checksums +fi diff --git a/steps/mes-wip/sources b/steps/mes-wip/sources new file mode 100644 index 0000000..f68c0da --- /dev/null +++ b/steps/mes-wip/sources @@ -0,0 +1,2 @@ +https://gitlab.com/janneke/mes/-/archive/wip/mes-wip.tar.gz 21cc8909f0922b86d1ec95df12837d5d9882f228b64fb9273399929904b61c3f +https://download.savannah.gnu.org/releases/nyacc/nyacc-1.00.2.tar.gz f36e4fb7dd524dc3f4b354d3d5313f69e7ce5a6ae93711e8cf6d51eaa8d2b318 diff --git a/steps/mes-wip/sources~ b/steps/mes-wip/sources~ new file mode 100644 index 0000000..73ed56a --- /dev/null +++ b/steps/mes-wip/sources~ @@ -0,0 +1,2 @@ +https://gitlab.com/janneke/mes/-/archive/wip/mes-wip.tar.gz adf0c38434c1e3b9c2057e23048cccedf63343f84337f46c09070ccc0f99282e +https://download.savannah.gnu.org/releases/nyacc/nyacc-1.00.2.tar.gz f36e4fb7dd524dc3f4b354d3d5313f69e7ce5a6ae93711e8cf6d51eaa8d2b318