aboutsummaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorbellard <bellard>2005-04-14 23:52:04 +0000
committerbellard <bellard>2005-04-14 23:52:04 +0000
commit7baf96810201273d76b29b37dea570517965c05c (patch)
tree90f84bdd3b0296b13c93d524ca14bce053ccdc48 /Makefile
parentacc4f88e6da0aa3c370cb04d8388de3c04654703 (diff)
downloadtinycc-7baf96810201273d76b29b37dea570517965c05c.tar.gz
tinycc-7baf96810201273d76b29b37dea570517965c05c.tar.bz2
build of cross compilers is optional - win32 merge
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile90
1 files changed, 74 insertions, 16 deletions
diff --git a/Makefile b/Makefile
index 575a6d5..f16b0cd 100644
--- a/Makefile
+++ b/Makefile
@@ -20,7 +20,31 @@ endif
DISAS=objdump -d
INSTALL=install
-PROGS=tcc$(EXESUF) c67-tcc$(EXESUF) arm-tcc$(EXESUF) i386-win32-tcc$(EXESUF)
+
+ifdef CONFIG_WIN32
+PROGS=tcc$(EXESUF)
+ifdef CONFIG_CROSS
+PROGS+=c67-tcc$(EXESUF) arm-tcc$(EXESUF)
+endif
+PROGS+=tiny_impdef$(EXESUF)
+else
+ifeq ($(ARCH),i386)
+PROGS=tcc$(EXESUF)
+ifdef CONFIG_CROSS
+PROGS+=arm-tcc$(EXESUF)
+endif
+endif
+ifeq ($(ARCH),arm)
+PROGS=tcc$(EXESUF)
+ifdef CONFIG_CROSS
+PROGS+=i386-tcc$(EXESUF)
+endif
+endif
+ifdef CONFIG_CROSS
+PROGS+=c67-tcc$(EXESUF) i386-win32-tcc$(EXESUF)
+endif
+endif
+
# run local version of tcc with local libraries and includes
TCC=./tcc -B. -I.
@@ -111,28 +135,52 @@ ex2: ex2.c
ex3: ex3.c
$(CC) $(CFLAGS) -o $@ $<
-# Native Tiny C Compiler
-
-tcc_g$(EXESUF): tcc.c i386-gen.c tccelf.c tccasm.c i386-asm.c tcctok.h libtcc.h i386-asm.h Makefile
+# Host Tiny C Compiler
+ifdef CONFIG_WIN32
+tcc$(EXESUF): tcc.c i386-gen.c tccelf.c tccasm.c i386-asm.c tcctok.h libtcc.h i386-asm.h tccpe.c
+ $(CC) $(CFLAGS) -DTCC_TARGET_PE -o $@ $< $(LIBS)
+else
+ifeq ($(ARCH),i386)
+tcc$(EXESUF): tcc.c i386-gen.c tccelf.c tccasm.c i386-asm.c tcctok.h libtcc.h i386-asm.h
$(CC) $(CFLAGS) -o $@ $< $(LIBS)
+endif
+ifeq ($(ARCH),arm)
+tcc$(EXESUF): tcc.c arm-gen.c tccelf.c tccasm.c tcctok.h libtcc.h
+ $(CC) $(CFLAGS) -DTCC_TARGET_ARM -o $@ $< $(LIBS)
+endif
+endif
-tcc$(EXESUF): tcc_g$(EXESUF) Makefile
- $(STRIP) -o $@ $<
+# Cross Tiny C Compilers
+i386-tcc$(EXESUF): tcc.c i386-gen.c tccelf.c tccasm.c i386-asm.c tcctok.h libtcc.h i386-asm.h
+ $(CC) $(CFLAGS) -o $@ $< $(LIBS)
-c67-tcc$(EXESUF): tcc.c c67-gen.c tccelf.c tccasm.c tcctok.h libtcc.h tcccoff.c Makefile
+c67-tcc$(EXESUF): tcc.c c67-gen.c tccelf.c tccasm.c tcctok.h libtcc.h tcccoff.c
$(CC) $(CFLAGS) -DTCC_TARGET_C67 -o $@ $< $(LIBS)
-arm-tcc$(EXESUF): tcc.c arm-gen.c tccelf.c tccasm.c tcctok.h libtcc.h Makefile
+arm-tcc$(EXESUF): tcc.c arm-gen.c tccelf.c tccasm.c tcctok.h libtcc.h
$(CC) $(CFLAGS) -DTCC_TARGET_ARM -o $@ $< $(LIBS)
-i386-win32-tcc$(EXESUF): tcc.c i386-gen.c tccelf.c tccasm.c i386-asm.c tcctok.h libtcc.h i386-asm.h tccpe.c Makefile
+i386-win32-tcc$(EXESUF): tcc.c i386-gen.c tccelf.c tccasm.c i386-asm.c tcctok.h libtcc.h i386-asm.h tccpe.c
$(CC) $(CFLAGS) -DTCC_TARGET_PE -o $@ $< $(LIBS)
+# windows utilities
+tiny_impdef$(EXESUF): tiny_impdef.c
+ $(CC) $(CFLAGS) -o $@ $< -lkernel32
+
# TinyCC runtime libraries
-libtcc1.o: libtcc1.c
+ifdef CONFIG_WIN32
+LIBTCC1_OBJS=$(addprefix win32/lib/, crt1.o wincrt1.o dllcrt1.o dllmain.o chkstk.o) libtcc1.o
+else
+LIBTCC1_OBJS=libtcc1.o
+endif
+
+%.o: %.c
$(CC) -O2 -Wall -c -o $@ $<
-libtcc1$(LIBSUF): libtcc1.o
+%.o: %.S
+ $(CC) -c -o $@ $<
+
+libtcc1$(LIBSUF): $(LIBTCC1_OBJS)
$(AR) rcs $@ $^
bcheck.o: bcheck.c
@@ -147,19 +195,29 @@ ifndef CONFIG_WIN32
mkdir -p "$(mandir)/man1"
$(INSTALL) tcc.1 "$(mandir)/man1"
endif
- mkdir -p "$(libdir)/tcc"
- mkdir -p "$(libdir)/tcc/include"
- $(INSTALL) -m644 libtcc1$(LIBSUF) $(BCHECK_O) "$(libdir)/tcc"
+ mkdir -p "$(tccdir)"
+ mkdir -p "$(tccdir)/include"
+ mkdir -p "$(tccdir)/lib"
+ifdef CONFIG_WIN32
+ $(INSTALL) -m644 libtcc1$(LIBSUF) win32/lib/*.def "$(tccdir)/lib"
+ cp -r win32/include "$(tccdir)/include"
+ cp -r win32/examples "$(tccdir)/examples"
+else
+ $(INSTALL) -m644 libtcc1$(LIBSUF) $(BCHECK_O) "$(tccdir)/lib"
$(INSTALL) -m644 stdarg.h stddef.h stdbool.h float.h varargs.h \
- tcclib.h "$(libdir)/tcc/include"
+ tcclib.h "$(tccdir)/include"
+endif
mkdir -p "$(docdir)"
$(INSTALL) -m644 tcc-doc.html "$(docdir)"
+ifdef CONFIG_WIN32
+ $(INSTALL) -m644 win32/readme.txt "$(docdir)"
+endif
clean:
rm -f *~ *.o tcc tcc1 tcct tcc_g tcctest.ref *.bin *.i ex2 \
core gmon.out test.out test.ref a.out tcc_p \
*.exe tcc-doc.html tcc.pod tcc.1 libtcc$(LIBSUF) libtcc_test \
- tcctest[1234] test[1234].out c67-tcc arm-tcc
+ tcctest[1234] test[1234].out $(PROGS) win32/lib/*.o
distclean: clean
rm -f config.h config.mak config.texi