hare

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

commit 8c536c9eaa53e6e862548eb118d25b21feabcfe8
parent a49de9a4f17995dcac0d51ea196d9b425b4724fa
Author: Drew DeVault <sir@cmpwn.com>
Date:   Sun,  7 Mar 2021 15:29:00 -0500

Don't explicitly link to start.o

Diffstat:
MMakefile | 8++++----
Mgen-stdlib | 4++--
Mmain.ha | 6+++++-
Mmk/stdlib.mk | 16++++++++--------
4 files changed, 19 insertions(+), 15 deletions(-)

diff --git a/Makefile b/Makefile @@ -29,15 +29,15 @@ $(TESTCACHE)/hare.ssa: $(hare_srcs) $(hare_testlib_deps) @printf 'HAREC\t$@\n' @HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ $(hare_srcs) -hare: $(stdlib_start) $(HARECACHE)/hare.o +hare: $(HARECACHE)/hare.o @printf 'LD\t$@\n' @$(LD) -T $(rtscript) --gc-sections -o $@ \ - $(stdlib_start) $(HARECACHE)/hare.o $(hare_stdlib_deps) + $(HARECACHE)/hare.o $(hare_stdlib_deps) -hare-tests: $(testlib_start) $(TESTCACHE)/hare.o +hare-tests: $(TESTCACHE)/hare.o @printf 'LD\t$@\n' @$(LD) -T $(rtscript) -o $@ \ - $(testlib_start) $(TESTCACHE)/hare.o $(hare_testlib_deps) + $(TESTCACHE)/hare.o $(hare_testlib_deps) clean: @rm -rf cache diff --git a/gen-stdlib b/gen-stdlib @@ -61,7 +61,8 @@ rt() { ${stdlib}_asm=\$($cache)/rt/syscall.o \\ \$($cache)/rt/setjmp.o \\ - \$($cache)/rt/longjmp.o + \$($cache)/rt/longjmp.o \\ + \$($cache)/rt/start.o \$($cache)/rt/syscall.o: \$(STDLIB)/rt/\$(PLATFORM)/syscall\$(ARCH).s @printf 'AS \t\$@\n' @@ -83,7 +84,6 @@ ${stdlib}_asm=\$($cache)/rt/syscall.o \\ @\$(AR) -csr \$@ \$($cache)/rt/rt.o \$(${stdlib}_asm) ${stdlib}_rt=\$($cache)/rt/rt.a -${stdlib}_start=\$($cache)/rt/start.o hare_${stdlib}_deps+=\$(${stdlib}_rt) EOF diff --git a/main.ha b/main.ha @@ -13,9 +13,13 @@ export fn main() void = { }; let plan = plan { ... }; - let ctx = module::context_init([module::tag{ + let ctx = module::context_init([module::tag { name = os::machine(), mode = module::tag_mode::INCLUSIVE, + }, module::tag { + // TEMP: + name = "linux", + mode = module::tag_mode::INCLUSIVE, }]); let ver = match (module::scan(&ctx, os::args[1])) { diff --git a/mk/stdlib.mk b/mk/stdlib.mk @@ -35,7 +35,8 @@ $(HARECACHE)/rt/start.o: $(STDLIB)/rt/$(PLATFORM)/start$(ARCH).s stdlib_asm=$(HARECACHE)/rt/syscall.o \ $(HARECACHE)/rt/setjmp.o \ - $(HARECACHE)/rt/longjmp.o + $(HARECACHE)/rt/longjmp.o \ + $(HARECACHE)/rt/start.o $(HARECACHE)/rt/syscall.o: $(STDLIB)/rt/$(PLATFORM)/syscall$(ARCH).s @printf 'AS \t$@\n' @@ -57,7 +58,6 @@ $(HARECACHE)/rt/rt.a: $(HARECACHE)/rt/rt.o $(stdlib_asm) @$(AR) -csr $@ $(HARECACHE)/rt/rt.o $(stdlib_asm) stdlib_rt=$(HARECACHE)/rt/rt.a -stdlib_start=$(HARECACHE)/rt/start.o hare_stdlib_deps+=$(stdlib_rt) stdlib_ascii=$(HARECACHE)/ascii/ascii.o @@ -321,7 +321,7 @@ stdlib_hare_module_srcs= \ $(STDLIB)/hare/module/context.ha \ $(STDLIB)/hare/module/scan.ha -$(HARECACHE)/hare/module/hare.module.ssa: $(stdlib_hare_module_srcs) $(stdlib_rt) $(stdlib_hare_ast) $(stdlib_hare_lex) $(stdlib_hare_parse) $(stdlib_strio) $(stdlib_fs) $(stdlib_io) $(stdlib_strings) $(stdlib_hash) $(stdlib_crypto_sha256) $(stdlib_dirs) $(stdlib_bytes) $(stdlib_encoding_utf8) +$(HARECACHE)/hare/module/hare.module.ssa: $(stdlib_hare_module_srcs) $(stdlib_rt) $(stdlib_hare_ast) $(stdlib_hare_lex) $(stdlib_hare_parse) $(stdlib_strio) $(stdlib_fs) $(stdlib_io) $(stdlib_strings) $(stdlib_hash) $(stdlib_crypto_sha256) $(stdlib_dirs) $(stdlib_bytes) $(stdlib_encoding_utf8) $(stdlib_ascii) @printf 'HAREC \t$@\n' @mkdir -p $(HARECACHE)/hare/module @HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nhare::module \ @@ -482,7 +482,7 @@ stdlib_strio_srcs= \ $(STDLIB)/strio/fixed.ha \ $(STDLIB)/strio/ops.ha -$(HARECACHE)/strio/strio.ssa: $(stdlib_strio_srcs) $(stdlib_rt) $(stdlib_io) $(stdlib_strings) +$(HARECACHE)/strio/strio.ssa: $(stdlib_strio_srcs) $(stdlib_rt) $(stdlib_io) $(stdlib_strings) $(stdlib_encoding_utf8) @printf 'HAREC \t$@\n' @mkdir -p $(HARECACHE)/strio @HARECACHE=$(HARECACHE) $(HAREC) $(HAREFLAGS) -o $@ -Nstrio \ @@ -537,7 +537,8 @@ $(TESTCACHE)/rt/start.o: $(STDLIB)/rt/$(PLATFORM)/start$(ARCH).s testlib_asm=$(TESTCACHE)/rt/syscall.o \ $(TESTCACHE)/rt/setjmp.o \ - $(TESTCACHE)/rt/longjmp.o + $(TESTCACHE)/rt/longjmp.o \ + $(TESTCACHE)/rt/start.o $(TESTCACHE)/rt/syscall.o: $(STDLIB)/rt/$(PLATFORM)/syscall$(ARCH).s @printf 'AS \t$@\n' @@ -559,7 +560,6 @@ $(TESTCACHE)/rt/rt.a: $(TESTCACHE)/rt/rt.o $(testlib_asm) @$(AR) -csr $@ $(TESTCACHE)/rt/rt.o $(testlib_asm) testlib_rt=$(TESTCACHE)/rt/rt.a -testlib_start=$(TESTCACHE)/rt/start.o hare_testlib_deps+=$(testlib_rt) testlib_ascii=$(TESTCACHE)/ascii/ascii.o @@ -825,7 +825,7 @@ testlib_hare_module_srcs= \ $(STDLIB)/hare/module/context.ha \ $(STDLIB)/hare/module/scan.ha -$(TESTCACHE)/hare/module/hare.module.ssa: $(testlib_hare_module_srcs) $(testlib_rt) $(testlib_hare_ast) $(testlib_hare_lex) $(testlib_hare_parse) $(testlib_strio) $(testlib_fs) $(testlib_io) $(testlib_strings) $(testlib_hash) $(testlib_crypto_sha256) $(testlib_dirs) $(testlib_bytes) $(testlib_encoding_utf8) +$(TESTCACHE)/hare/module/hare.module.ssa: $(testlib_hare_module_srcs) $(testlib_rt) $(testlib_hare_ast) $(testlib_hare_lex) $(testlib_hare_parse) $(testlib_strio) $(testlib_fs) $(testlib_io) $(testlib_strings) $(testlib_hash) $(testlib_crypto_sha256) $(testlib_dirs) $(testlib_bytes) $(testlib_encoding_utf8) $(testlib_ascii) @printf 'HAREC \t$@\n' @mkdir -p $(TESTCACHE)/hare/module @HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nhare::module \ @@ -994,7 +994,7 @@ testlib_strio_srcs= \ $(STDLIB)/strio/fixed.ha \ $(STDLIB)/strio/ops.ha -$(TESTCACHE)/strio/strio.ssa: $(testlib_strio_srcs) $(testlib_rt) $(testlib_io) $(testlib_strings) +$(TESTCACHE)/strio/strio.ssa: $(testlib_strio_srcs) $(testlib_rt) $(testlib_io) $(testlib_strings) $(testlib_encoding_utf8) @printf 'HAREC \t$@\n' @mkdir -p $(TESTCACHE)/strio @HARECACHE=$(TESTCACHE) $(HAREC) $(TESTHAREFLAGS) -o $@ -Nstrio \