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:
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 \