aboutsummaryrefslogtreecommitdiff
path: root/bootstrap/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'bootstrap/Makefile')
-rw-r--r--bootstrap/Makefile28
1 files changed, 19 insertions, 9 deletions
diff --git a/bootstrap/Makefile b/bootstrap/Makefile
index 5e3d9d3..3e0f75e 100644
--- a/bootstrap/Makefile
+++ b/bootstrap/Makefile
@@ -84,6 +84,12 @@ C_HEADERS = \
$(srcdir)/out.h \
$(srcdir)/compiler.h \
$(srcdir)/token.h
+RTL_OBJECTS = \
+ $(builddir)/rtl/cli.o \
+ $(builddir)/rtl/fail.o \
+ $(builddir)/rtl/message.o \
+ $(builddir)/rtl/string.o \
+ $(builddir)/rtl/writer.o
RTL_C_SOURCES = \
$(srcdir)/rtl/cli.c \
$(srcdir)/rtl/fail.c \
@@ -93,10 +99,10 @@ RTL_C_SOURCES = \
RTL_C_HEADERS = \
$(srcdir)/rtlincl/rtl.h \
$(srcdir)/rtl/internal.h
-# TODO should use separate compilation for these too
-# (but should it use HOST_CC or not? should it be possible to override?)
-STAGE2_C_SOURCES = \
- $(RTL_C_SOURCES) \
+STAGE2_OBJECTS = \
+ $(RTL_OBJECTS) \
+ $(builddir)/stage2_gen.o
+STAGE2_C_SOURCE = \
$(builddir)/stage2_gen.c
STAGE2_INCLUDE = \
-I$(srcdir)/rtlincl
@@ -114,10 +120,13 @@ $(OBJECTS): $(srcdir)/compiler.h
out.o outcommon.o outdecl.o outexpr.o outstmt.o: $(srcdir)/out.h
ast.o funccall.o out.o parsedecl.o parseexpr.o parsestmt.o \
token.o typechk.o: $(srcdir)/token.h
+$(RTL_OBJECTS): $(RTL_C_HEADERS)
.SUFFIXES: .c .o
+# Note: the stage2 includes (rtlincl/ and rtl/) may only be used in actual
+# stage2 code and in the RTL code, not in any other places!
.c.o:
- $(HOST_CC) $(HOST_CFLAGS) $(BASE_CFLAGS) -c -o $@ $<
+ $(HOST_CC) $(HOST_CFLAGS) $(BASE_CFLAGS) $(STAGE2_INCLUDE) -c -o $@ $<
$(builddir)/stage1: $(OBJECTS)
$(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ $(OBJECTS)
@@ -125,12 +134,12 @@ $(builddir)/stage1-boundschecked: $(C_SOURCES) $(C_HEADERS)
tcc -b -bt24 -o $@ $(C_SOURCES)
$(builddir)/stage2_gen.c: $(builddir)/stage1 $(COMPILER_SOURCES)
$(builddir)/stage1 $(STAGE1_ARGS)
-$(builddir)/stage2: $(STAGE2_C_SOURCES) $(RTL_C_HEADERS)
+$(builddir)/stage2: $(STAGE2_OBJECTS) $(RTL_C_HEADERS)
$(CC) $(CFLAGS) $(BASE_CFLAGS) $(STAGE2_DISABLED_WARNINGS) \
$(STAGE2_CFLAGS) $(LDFLAGS) \
$(STAGE2_INCLUDE) \
-o $@ \
- $(STAGE2_C_SOURCES)
+ $(STAGE2_OBJECTS)
.PHONY: all check check-all check-boundschecked check-valgrind \
check-pmccabe clang-analyze clean gcc-analyzer gdb-stage1 \
@@ -166,6 +175,7 @@ clean:
$(builddir)/stage1-boundschecked \
$(builddir)/stage2_gen.c \
$(builddir)/stage2 \
- $(OBJECTS)
+ $(OBJECTS) \
+ $(STAGE2_OBJECTS)
outdirs:
- $(MKDIR_P) $(builddir)
+ $(MKDIR_P) $(builddir) $(builddir)/rtl