Unified · Split
| @@ -1,156 +0,0 @@ | ||
| 1 | −# | |
| 2 | −# This Makefile builds native Windows tcc for both 32 and 64 bits generator. | |
| 3 | −# This makefile is adjusted from 'https://sourceforge.net/projects/wintcc/' | |
| 4 | −# It requires mingw64 (and static libs for dl and pthread) and wine installed on linux. | |
| 5 | −# by a second stage to compile tcc it self. | |
| 6 | −# Generated binaries do not require cygwin to run. | |
| 7 | −# You can launch 'tarball' target to build a tar.gz you can install on any | |
| 8 | −# Windows machines. | |
| 9 | − | |
| 10 | −CPU = $(shell if `x86_64-w64-mingw32-gcc -v 2>&1 | grep Target | grep -q x86_64`; then echo 64; else echo 32; fi) | |
| 11 | −VERSION = $(shell cat ../VERSION) | |
| 12 | −BOOTCC = x86_64-w64-mingw32-gcc | |
| 13 | −CFLAGS = -s -static -fno-strict-aliasing -Wno-incompatible-pointer-types -DTCC_TARGET_PE | |
| 14 | −#WINPWD = `cygpath --mixed $(PWD)` | |
| 15 | −#@echo "#define CONFIG_TCCDIR \"$(WINPWD)\"" | |
| 16 | − | |
| 17 | −ifeq ($(CPU), 64) | |
| 18 | −NATIVE = -m$(CPU) -DTCC_TARGET_X86_64 | |
| 19 | −ARCH = x86_64 | |
| 20 | −else | |
| 21 | −NATIVE = -m$(CPU) -DTCC_TARGET_I386 | |
| 22 | −ARCH = i386 | |
| 23 | −endif | |
| 24 | − | |
| 25 | −TARGET = $(CPU) | |
| 26 | − | |
| 27 | −ifeq ($(TARGET), 64) | |
| 28 | −TFLAGS = -m$(TARGET) -DTCC_TARGET_X86_64 | |
| 29 | −TARCH = x86_64 | |
| 30 | −else | |
| 31 | −TFLAGS = -m$(TARGET) -DTCC_TARGET_I386 | |
| 32 | −TARCH = i386 | |
| 33 | −endif | |
| 34 | − | |
| 35 | −all: pre bootstrap libs rebuild | |
| 36 | − @chmod 775 *.exe | |
| 37 | − @ls -ls *.exe | |
| 38 | − | |
| 39 | −pre: | |
| 40 | − @echo ARCH=$(TARCH) 1> ../config.mak | |
| 41 | − @echo TARGETOS=Windows 1>> ../config.mak | |
| 42 | − @echo CONFIG_WIN32=yes 1>> ../config.mak | |
| 43 | − @echo TOPSRC=$$\(TOP\) 1>> ../config.mak | |
| 44 | − @echo "#define TCC_VERSION \"$(VERSION)\"" 1>../config.h | |
| 45 | − @echo "#ifdef TCC_TARGET_X86_64" 1>>../config.h | |
| 46 | − @echo "#define TCC_LIBTCC1 \"libtcc1-64.a\"" 1>>../config.h | |
| 47 | − @echo "#else" 1>>../config.h | |
| 48 | − @echo "#define TCC_LIBTCC1 \"libtcc1-32.a\"" 1>>../config.h | |
| 49 | − @echo "#endif" 1>>../config.h | |
| 50 | − @echo @set VERSION $(VERSION) 1>../config.texi | |
| 51 | − @rm -f *tcc.exe tiny_*.exe *tcc.dll lib/*.a | |
| 52 | − @rm -r -f libtcc doc | |
| 53 | − @mkdir -p libtcc | |
| 54 | − @mkdir -p doc | |
| 55 | − @mkdir -p include | |
| 56 | − @mkdir -p lib | |
| 57 | − @cp -r ../win32/include/* include | |
| 58 | − @cp ../include/*.h include | |
| 59 | − @cp ../tcclib.h include | |
| 60 | − @cp ../libtcc.h include | |
| 61 | − @cp ../win32/lib/* lib | |
| 62 | − @cp ../win32/tcc-win32.txt doc | |
| 63 | − @cp ../tests/libtcc_test.c examples | |
| 64 | − | |
| 65 | −PHONY += pre | |
| 66 | − | |
| 67 | −bootstrap: | |
| 68 | − @echo Bootstrapping 32bits and 64bits tools with $(BOOTCC) -m$(CPU) | |
| 69 | − @$(BOOTCC) $(CFLAGS) -DTCC_TARGET_I386 -o i386-win32-tcc.exe ../tcc.c | |
| 70 | − @$(BOOTCC) $(CFLAGS) -DTCC_TARGET_X86_64 -o x86_64-win32-tcc.exe ../tcc.c | |
| 71 | − @$(BOOTCC) $(CFLAGS) $(NATIVE) -o tcc.exe ../tcc.c | |
| 72 | − @$(BOOTCC) $(CFLAGS) $(NATIVE) -DLIBTCC_AS_DLL -o libtcc.dll -shared ../libtcc.c | |
| 73 | − | |
| 74 | −PHONY += bootstrap | |
| 75 | − | |
| 76 | −TCC = wine ./tcc.exe | |
| 77 | − | |
| 78 | −lib/libtcc1-32.a: | |
| 79 | − @echo Building $*.a with tcc -m32 | |
| 80 | − @$(TCC) -O2 -B. -m32 -DTCC_TARGET_PE -DTCC_TARGET_I386 -c ../lib/libtcc1.c | |
| 81 | − @$(TCC) -O2 -B. -m32 -DTCC_TARGET_PE -DTCC_TARGET_I386 -c ../lib/alloca86.S | |
| 82 | − @$(TCC) -O2 -B. -m32 -DTCC_TARGET_PE -DTCC_TARGET_I386 -c ../lib/alloca86-bt.S | |
| 83 | − @$(TCC) -O2 -B. -m32 -DTCC_TARGET_PE -DTCC_TARGET_I386 -c lib/crt1.c | |
| 84 | − @$(TCC) -O2 -B. -m32 -DTCC_TARGET_PE -DTCC_TARGET_I386 -c lib/crt1w.c | |
| 85 | − @$(TCC) -O2 -B. -m32 -DTCC_TARGET_PE -DTCC_TARGET_I386 -c lib/wincrt1.c | |
| 86 | − @$(TCC) -O2 -B. -m32 -DTCC_TARGET_PE -DTCC_TARGET_I386 -c lib/wincrt1w.c | |
| 87 | − @$(TCC) -O2 -B. -m32 -DTCC_TARGET_PE -DTCC_TARGET_I386 -c lib/dllcrt1.c | |
| 88 | − @$(TCC) -O2 -B. -m32 -DTCC_TARGET_PE -DTCC_TARGET_I386 -c lib/dllmain.c | |
| 89 | − @$(TCC) -O2 -B. -m32 -DTCC_TARGET_PE -DTCC_TARGET_I386 -c lib/chkstk.S | |
| 90 | − @$(TCC) -m32 -ar lib/libtcc1-32.a libtcc1.o alloca86.o alloca86-bt.o crt1.o wincrt1.o crt1w.o wincrt1w.o dllcrt1.o dllmain.o chkstk.o | |
| 91 | − @rm *.o | |
| 92 | − | |
| 93 | −lib/libtcc1-64.a: | |
| 94 | − @echo Building $*.a with tcc -m64 | |
| 95 | − @$(TCC) -O2 -B. -m64 -DTCC_TARGET_PE -DTCC_TARGET_X86_64 -c ../lib/libtcc1.c | |
| 96 | − @$(TCC) -O2 -B. -m64 -DTCC_TARGET_PE -DTCC_TARGET_X86_64 -c ../lib/alloca86_64.S | |
| 97 | − @$(TCC) -O2 -B. -m64 -DTCC_TARGET_PE -DTCC_TARGET_X86_64 -c ../lib/alloca86_64-bt.S | |
| 98 | − @$(TCC) -O2 -B. -m64 -DTCC_TARGET_PE -DTCC_TARGET_X86_64 -c lib/crt1.c | |
| 99 | − @$(TCC) -O2 -B. -m64 -DTCC_TARGET_PE -DTCC_TARGET_X86_64 -c lib/crt1w.c | |
| 100 | − @$(TCC) -O2 -B. -m64 -DTCC_TARGET_PE -DTCC_TARGET_X86_64 -c lib/wincrt1.c | |
| 101 | − @$(TCC) -O2 -B. -m64 -DTCC_TARGET_PE -DTCC_TARGET_X86_64 -c lib/wincrt1w.c | |
| 102 | − @$(TCC) -O2 -B. -m64 -DTCC_TARGET_PE -DTCC_TARGET_X86_64 -c lib/dllcrt1.c | |
| 103 | − @$(TCC) -O2 -B. -m64 -DTCC_TARGET_PE -DTCC_TARGET_X86_64 -c lib/dllmain.c | |
| 104 | − @$(TCC) -O2 -B. -m64 -DTCC_TARGET_PE -DTCC_TARGET_X86_64 -c lib/chkstk.S | |
| 105 | − @$(TCC) -m64 -ar lib/libtcc1-64.a libtcc1.o alloca86_64.o alloca86_64-bt.o crt1.o wincrt1.o crt1w.o wincrt1w.o dllcrt1.o dllmain.o chkstk.o | |
| 106 | − @rm *.o | |
| 107 | − | |
| 108 | −libs: lib/libtcc1-32.a lib/libtcc1-64.a | |
| 109 | − | |
| 110 | −PHONY += libs | |
| 111 | − | |
| 112 | −rebuild: | |
| 113 | − @echo Rebuild using tcc itself - default $(TARGET)bits | |
| 114 | − @wine ./$(TARCH)-win32-tcc.exe -O2 -B. $(TFLAGS) -DTCC_TARGET_PE -o tcc.exe ../tcc.c | |
| 115 | − @$(TCC) -O2 -B. $(TFLAGS) -DTCC_TARGET_PE -DLIBTCC_AS_DLL -o libtcc.dll -shared ../libtcc.c | |
| 116 | − @$(TCC) -O2 -B. -m32 -DTCC_TARGET_PE -DTCC_TARGET_I386 -o tmp-tcc.exe ../tcc.c && mv tmp-tcc.exe i386-win32-tcc.exe | |
| 117 | − @$(TCC) -O2 -B. -m$(TARGET) -DTCC_TARGET_PE -DTCC_TARGET_X86_64 -o tmp-tcc.exe ../tcc.c && mv tmp-tcc.exe x86_64-win32-tcc.exe | |
| 118 | − | |
| 119 | −PHONY += rebuild | |
| 120 | − | |
| 121 | −test: | |
| 122 | − @(cd ../tests; $(MAKE) -k TCC=$(PWD)/tcc hello-exe hello-run) | |
| 123 | − @(cd ../tests; $(MAKE) -k TCC=$(PWD)/tcc vla_test-run tests2-dir pp-dir) | |
| 124 | −ifeq ($(CPU), 64) | |
| 125 | − @(cd ../tests; $(MAKE) -k TCC=$(PWD)/i386-win32-tcc hello-exe hello-run) | |
| 126 | − @(cd ../tests; $(MAKE) -k TCC=$(PWD)/i386-win32-tcc vla_test-run tests2-dir pp-dir) | |
| 127 | −endif | |
| 128 | − | |
| 129 | −PHONY += test | |
| 130 | − | |
| 131 | −ARCHIVE = tcc-$(VERSION)-$(ARCH)-win32 | |
| 132 | − | |
| 133 | −tarball: | |
| 134 | − @rm -r -f $(ARCHIVE) | |
| 135 | − @mkdir $(ARCHIVE) | |
| 136 | − @cp -r doc $(ARCHIVE) | |
| 137 | − @cp -r examples $(ARCHIVE) | |
| 138 | − @cp -r include $(ARCHIVE) | |
| 139 | − @cp -r lib $(ARCHIVE) | |
| 140 | − @cp -r libtcc $(ARCHIVE) | |
| 141 | − @cp -r i386-win32-tcc.exe $(ARCHIVE) | |
| 142 | − @cp -r libtcc.def $(ARCHIVE) | |
| 143 | − @cp -r libtcc.dll $(ARCHIVE) | |
| 144 | − @cp -r Makefile $(ARCHIVE) | |
| 145 | − @cp -r tcc.exe $(ARCHIVE) | |
| 146 | − @cp -r doc/tcc-win32.txt $(ARCHIVE) | |
| 147 | − @cp -r x86_64-win32-tcc.exe $(ARCHIVE) | |
| 148 | − @tar czf $(ARCHIVE).tar.gz $(ARCHIVE) | |
| 149 | − @zip -9 -q -r $(ARCHIVE).zip $(ARCHIVE) | |
| 150 | − @rm -r -f $(ARCHIVE) | |
| 151 | − @ls -g $(ARCHIVE)* | |
| 152 | − | |
| 153 | −PHONY += tarball | |
| 154 | − | |
| 155 | −clean: | |
| 156 | − rm -f *.o *.exe *.dll lib/*.a *.pdb *.obj *.exp *.def *.lib | |