hare

The Hare programming language
git clone https://git.torresjrjr.com/hare.git
Log | Files | Refs | README | LICENSE

commit 1052d5acbe47e8eb33cb56736ed6245bc05148d4
parent 47412984e4450f067d5606dc182880718283ca44
Author: Drew DeVault <sir@cmpwn.com>
Date:   Thu,  4 Feb 2021 16:08:23 -0500

Update stdlib

Diffstat:
Mgen-stdlib | 28+++++++++++++++++++++++-----
Mmk/stdlib.mk | 50+++++++++++++++++++++++++++++++++++++++++---------
2 files changed, 64 insertions(+), 14 deletions(-)

diff --git a/gen-stdlib b/gen-stdlib @@ -18,14 +18,15 @@ eval ". $srcdir/mk/gen-stdlib.sh" gensrcs_rt() { gen_srcs rt \ - '$(PLATFORM)/abort.ha' \ '$(PLATFORM)/env.ha' \ '$(PLATFORM)/errno.ha' \ '$(PLATFORM)/start.ha' \ '$(PLATFORM)/syscallno$(ARCH).ha' \ '$(PLATFORM)/syscalls.ha' \ '$(PLATFORM)/segmalloc.ha' \ + '$(ARCH)/jmp.ha' \ ensure.ha \ + jmp.ha \ malloc.ha \ memcpy.ha \ memset.ha \ @@ -39,27 +40,44 @@ rt() { if [ $testing -eq 0 ] then printf '%s\n' 'rtscript=$(STDLIB)/rt/hare.sc' - gensrcs_rt start-test.ha + gensrcs_rt \ + '$(PLATFORM)/abort.ha' \ + start.ha else gensrcs_rt \ + +test/abort.ha \ +test/start.ha \ +test/ztos.ha fi gen_ssa rt cat <<EOF +\$($cache)/rt/start.o: \$(STDLIB)/rt/\$(PLATFORM)/start.s + @printf 'AS \t\$@\n' + @mkdir -p \$($cache)/rt + @as -o \$@ \$< + +${stdlib}_asm=\$($cache)/rt/syscall.o \\ + \$($cache)/rt/setjmp.o \\ + \$($cache)/rt/longjmp.o + \$($cache)/rt/syscall.o: \$(STDLIB)/rt/\$(PLATFORM)/syscall\$(ARCH).s @printf 'AS \t\$@\n' @mkdir -p \$($cache)/rt @as -o \$@ \$< -\$($cache)/rt/start.o: \$(STDLIB)/rt/\$(PLATFORM)/start.s +\$($cache)/rt/setjmp.o: \$(STDLIB)/rt/\$(ARCH)/setjmp.s + @printf 'AS \t\$@\n' + @mkdir -p \$($cache)/rt + @as -o \$@ \$< + +\$($cache)/rt/longjmp.o: \$(STDLIB)/rt/\$(ARCH)/longjmp.s @printf 'AS \t\$@\n' @mkdir -p \$($cache)/rt @as -o \$@ \$< -\$($cache)/rt/rt.a: \$($cache)/rt/rt.o \$($cache)/rt/syscall.o +\$($cache)/rt/rt.a: \$($cache)/rt/rt.o \$(${stdlib}_asm) @printf 'AR\t\$@\n' - @\$(AR) -csr \$@ \$($cache)/rt/rt.o \$($cache)/rt/syscall.o + @\$(AR) -csr \$@ \$($cache)/rt/rt.o \$(${stdlib}_asm) ${stdlib}_rt=\$($cache)/rt/rt.a ${stdlib}_start=\$($cache)/rt/start.o diff --git a/mk/stdlib.mk b/mk/stdlib.mk @@ -3,19 +3,21 @@ # rt rtscript=$(STDLIB)/rt/hare.sc stdlib_rt_srcs= \ - $(STDLIB)/rt/$(PLATFORM)/abort.ha \ $(STDLIB)/rt/$(PLATFORM)/env.ha \ $(STDLIB)/rt/$(PLATFORM)/errno.ha \ $(STDLIB)/rt/$(PLATFORM)/start.ha \ $(STDLIB)/rt/$(PLATFORM)/syscallno$(ARCH).ha \ $(STDLIB)/rt/$(PLATFORM)/syscalls.ha \ $(STDLIB)/rt/$(PLATFORM)/segmalloc.ha \ + $(STDLIB)/rt/$(ARCH)/jmp.ha \ $(STDLIB)/rt/ensure.ha \ + $(STDLIB)/rt/jmp.ha \ $(STDLIB)/rt/malloc.ha \ $(STDLIB)/rt/memcpy.ha \ $(STDLIB)/rt/memset.ha \ $(STDLIB)/rt/strcmp.ha \ - $(STDLIB)/rt/start-test.ha + $(STDLIB)/rt/$(PLATFORM)/abort.ha \ + $(STDLIB)/rt/start.ha $(HARECACHE)/rt/rt.ssa: $(stdlib_rt_srcs) $(stdlib_rt) @printf 'HAREC \t$@\n' @@ -23,19 +25,33 @@ $(HARECACHE)/rt/rt.ssa: $(stdlib_rt_srcs) $(stdlib_rt) @HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nrt \ -t$(HARECACHE)/rt/rt.td $(stdlib_rt_srcs) +$(HARECACHE)/rt/start.o: $(STDLIB)/rt/$(PLATFORM)/start.s + @printf 'AS \t$@\n' + @mkdir -p $(HARECACHE)/rt + @as -o $@ $< + +stdlib_asm=$(HARECACHE)/rt/syscall.o \ + $(HARECACHE)/rt/setjmp.o \ + $(HARECACHE)/rt/longjmp.o + $(HARECACHE)/rt/syscall.o: $(STDLIB)/rt/$(PLATFORM)/syscall$(ARCH).s @printf 'AS \t$@\n' @mkdir -p $(HARECACHE)/rt @as -o $@ $< -$(HARECACHE)/rt/start.o: $(STDLIB)/rt/$(PLATFORM)/start.s +$(HARECACHE)/rt/setjmp.o: $(STDLIB)/rt/$(ARCH)/setjmp.s + @printf 'AS \t$@\n' + @mkdir -p $(HARECACHE)/rt + @as -o $@ $< + +$(HARECACHE)/rt/longjmp.o: $(STDLIB)/rt/$(ARCH)/longjmp.s @printf 'AS \t$@\n' @mkdir -p $(HARECACHE)/rt @as -o $@ $< -$(HARECACHE)/rt/rt.a: $(HARECACHE)/rt/rt.o $(HARECACHE)/rt/syscall.o +$(HARECACHE)/rt/rt.a: $(HARECACHE)/rt/rt.o $(stdlib_asm) @printf 'AR\t$@\n' - @$(AR) -csr $@ $(HARECACHE)/rt/rt.o $(HARECACHE)/rt/syscall.o + @$(AR) -csr $@ $(HARECACHE)/rt/rt.o $(stdlib_asm) stdlib_rt=$(HARECACHE)/rt/rt.a stdlib_start=$(HARECACHE)/rt/start.o @@ -183,18 +199,20 @@ hare_stdlib_deps+=$(stdlib_stdlib_fmt) # rt testlib_rt_srcs= \ - $(STDLIB)/rt/$(PLATFORM)/abort.ha \ $(STDLIB)/rt/$(PLATFORM)/env.ha \ $(STDLIB)/rt/$(PLATFORM)/errno.ha \ $(STDLIB)/rt/$(PLATFORM)/start.ha \ $(STDLIB)/rt/$(PLATFORM)/syscallno$(ARCH).ha \ $(STDLIB)/rt/$(PLATFORM)/syscalls.ha \ $(STDLIB)/rt/$(PLATFORM)/segmalloc.ha \ + $(STDLIB)/rt/$(ARCH)/jmp.ha \ $(STDLIB)/rt/ensure.ha \ + $(STDLIB)/rt/jmp.ha \ $(STDLIB)/rt/malloc.ha \ $(STDLIB)/rt/memcpy.ha \ $(STDLIB)/rt/memset.ha \ $(STDLIB)/rt/strcmp.ha \ + $(STDLIB)/rt/+test/abort.ha \ $(STDLIB)/rt/+test/start.ha \ $(STDLIB)/rt/+test/ztos.ha @@ -204,19 +222,33 @@ $(TESTCACHE)/rt/rt.ssa: $(testlib_rt_srcs) $(testlib_rt) @HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nrt \ -t$(TESTCACHE)/rt/rt.td $(testlib_rt_srcs) +$(TESTCACHE)/rt/start.o: $(STDLIB)/rt/$(PLATFORM)/start.s + @printf 'AS \t$@\n' + @mkdir -p $(TESTCACHE)/rt + @as -o $@ $< + +testlib_asm=$(TESTCACHE)/rt/syscall.o \ + $(TESTCACHE)/rt/setjmp.o \ + $(TESTCACHE)/rt/longjmp.o + $(TESTCACHE)/rt/syscall.o: $(STDLIB)/rt/$(PLATFORM)/syscall$(ARCH).s @printf 'AS \t$@\n' @mkdir -p $(TESTCACHE)/rt @as -o $@ $< -$(TESTCACHE)/rt/start.o: $(STDLIB)/rt/$(PLATFORM)/start.s +$(TESTCACHE)/rt/setjmp.o: $(STDLIB)/rt/$(ARCH)/setjmp.s + @printf 'AS \t$@\n' + @mkdir -p $(TESTCACHE)/rt + @as -o $@ $< + +$(TESTCACHE)/rt/longjmp.o: $(STDLIB)/rt/$(ARCH)/longjmp.s @printf 'AS \t$@\n' @mkdir -p $(TESTCACHE)/rt @as -o $@ $< -$(TESTCACHE)/rt/rt.a: $(TESTCACHE)/rt/rt.o $(TESTCACHE)/rt/syscall.o +$(TESTCACHE)/rt/rt.a: $(TESTCACHE)/rt/rt.o $(testlib_asm) @printf 'AR\t$@\n' - @$(AR) -csr $@ $(TESTCACHE)/rt/rt.o $(TESTCACHE)/rt/syscall.o + @$(AR) -csr $@ $(TESTCACHE)/rt/rt.o $(testlib_asm) testlib_rt=$(TESTCACHE)/rt/rt.a testlib_start=$(TESTCACHE)/rt/start.o