aboutsummaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorgrischka <grischka>2009-12-20 01:53:49 +0100
committergrischka <grischka>2009-12-20 01:53:49 +0100
commit88a3ccab9f3c877e2ffb8fecc3303006e0640907 (patch)
tree47092d8442f4d7f1e4714643acf25787556d1e10 /Makefile
parent7fa712e00c5221d9373e8f8fa073e9e6fa064da1 (diff)
downloadtinycc-88a3ccab9f3c877e2ffb8fecc3303006e0640907.tar.gz
tinycc-88a3ccab9f3c877e2ffb8fecc3303006e0640907.tar.bz2
allow tcc be build from separate objects
If you want that, run: make NOTALLINONE=1
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile39
1 files changed, 26 insertions, 13 deletions
diff --git a/Makefile b/Makefile
index 08ef48a..b27e5fa 100644
--- a/Makefile
+++ b/Makefile
@@ -113,11 +113,13 @@ ifdef CONFIG_CROSS
PROGS+=$(PROGS_CROSS)
endif
+# NOTALLINONE = 1
+
all: $(PROGS) $(LIBTCC1) $(BCHECK_O) libtcc.a tcc-doc.html tcc.1 libtcc_test$(EXESUF)
# Host Tiny C Compiler
-tcc$(EXESUF): $(NATIVE_FILES)
- $(CC) -o $@ $< $(NATIVE_TARGET) $(CFLAGS) $(LIBS)
+tcc$(EXESUF): tcc.o libtcc.a
+ $(CC) -o $@ $^ $(LIBS)
# Cross Tiny C Compilers
i386-tcc$(EXESUF): $(I386_FILES)
@@ -151,10 +153,22 @@ arm-tcc-vfp-eabi$(EXESUF): $(ARM_FILES)
$(CC) -o $@ $< -DTCC_TARGET_ARM -DTCC_ARM_EABI $(CFLAGS) $(LIBS)
# libtcc generation and test
-libtcc.o: $(NATIVE_FILES)
- $(CC) -o $@ -c libtcc.c $(NATIVE_TARGET) $(CFLAGS)
-libtcc.a: libtcc.o
+ifdef NOTALLINONE
+LIBTCC_OBJ = $(filter-out tcc.o,$(patsubst %.c,%.o,$(filter %.c,$(NATIVE_FILES))))
+LIBTCC_INC = $(filter %.h,$(CORE_FILES)) $(filter-out $(CORE_FILES),$(NATIVE_FILES))
+$(LIBTCC_OBJ) : DEFINES += -DNOTALLINONE
+else
+LIBTCC_OBJ = libtcc.o
+LIBTCC_INC = $(NATIVE_FILES)
+endif
+
+tcc.o : DEFINES += -DNOTALLINONE
+
+$(LIBTCC_OBJ) tcc.o : %.o : %.c $(LIBTCC_INC)
+ $(CC) -o $@ -c $< $(NATIVE_TARGET) $(CFLAGS) $(DEFINES)
+
+libtcc.a: $(LIBTCC_OBJ)
$(AR) rcs $@ $^
libtcc_test$(EXESUF): tests/libtcc_test.c libtcc.a
@@ -260,19 +274,18 @@ tar:
rm -rf /tmp/$(TCC-VERSION)
# in tests subdir
-test clean:
+%est:
$(MAKE) -C tests $@
-config.mak:
- @echo Running configure ...
- @./configure
-
-# clean
-clean: local_clean
-local_clean:
+clean:
rm -vf $(PROGS) tcc_p$(EXESUF) tcc.pod *~ *.o *.a *.out libtcc_test$(EXESUF)
+ $(MAKE) -C tests $@
distclean: clean
rm -vf config.h config.mak config.texi tcc.1
+config.mak:
+ @echo Running configure ...
+ @./configure
+
endif # ifeq ($(TOP),.)