Unified · Split
| @@ -104,8 +104,7 @@ PROGS_CROSS=$(X64_CROSS) $(WIN32_CROSS) $(WIN64_CROSS) $(ARM_CROSS) $(C67_CROSS) · 103 unmodified lines | ||
| 104 | 104 | else |
| 105 | 105 | ifeq ($(ARCH),x86-64) |
| 106 | 106 | NATIVE_FILES=$(X86_64_FILES) |
| 107 | −# $(WIN32_CROSS) is buit more carefully on this platform. See win32libcc1: | |
| 108 | −# PROGS+=$(WIN32_CROSS) | |
| 107 | +PROGS+=$(WIN32_CROSS) | |
| 109 | 108 | PROGS_CROSS=$(I386_CROSS) $(WIN64_CROSS) $(ARM_CROSS) $(C67_CROSS) |
| 110 | 109 | else |
| 111 | 110 | ifeq ($(ARCH),arm) |
| @@ -129,7 +128,7 @@ ifdef CONFIG_CROSS · 17 unmodified lines | ||
| 129 | 128 | PROGS+=$(PROGS_CROSS) |
| 130 | 129 | # Try to build win32 cross-compiler lib on *nix |
| 131 | 130 | ifndef CONFIG_WIN32 |
| 132 | −LIBTCCLIBS+=win32libcc1 | |
| 131 | +LIBTCCLIBS+=LinuxWIN32libtcc1 | |
| 133 | 132 | endif |
| 134 | 133 | endif |
| 135 | 134 | |
| @@ -186,27 +185,12 @@ libtcc.so.1.0: $(LIBTCC_OBJ) · 50 unmodified lines | ||
| 186 | 185 | |
| 187 | 186 | libtcc_test$(EXESUF): tests/libtcc_test.c $(LIBTCCB) |
| 188 | 187 | $(CC) -o $@ $^ -I. $(CFLAGS) $(LIBS) $(LIBTCCL) |
| 189 | − | |
| 190 | −# To build cross-compilers on Linux we must make a fake 32 bit tcc.exe | |
| 191 | −# and use it to build ELF objects into win32 version of libtcc1.a | |
| 192 | −win32libcc1: | |
| 193 | − mv config.mak config.mak.bak | |
| 194 | − mv config.h config.h.bak | |
| 195 | − cp config.h.bak config.h | |
| 196 | − cp config.mak.bak config.mak | |
| 197 | − echo "ARCH=i386" >> config.mak | |
| 198 | − echo "#undef HOST_X86_64" >> config.h | |
| 199 | − echo "#define HOST_I386 1" >> config.h | |
| 200 | − echo "CFLAGS=-O2 -g -pipe -Wall -m32" >> config.mak | |
| 201 | − echo "ARCH=i386" >> config.mak | |
| 202 | − $(MAKE) $(WIN32_CROSS) CC=gcc | |
| 203 | − -ln -s $(WIN32_CROSS) tcc.exe | |
| 204 | − -mv libtcc1.a libtcc1.bak | |
| 205 | − $(MAKE) CONFIG_WIN32=1 libtcc1.a | |
| 206 | − mv libtcc1.a lib | |
| 207 | − -mv libtcc1.bak libtcc1.a | |
| 208 | − mv config.mak.bak config.mak | |
| 209 | − mv config.h.bak config.h | |
| 188 | + | |
| 189 | +# use i386-win32-tcc instead of tcc.exe to build libtcc1.a on Linux | |
| 190 | +# ar t libtcc1.a will list the ELF objects | |
| 191 | +LinuxWIN32libtcc1: $(WIN32_CROSS) | |
| 192 | + $(MAKE) ARCH=i386 CONFIG_WIN32=1 TCC=./i386-win32-tcc libtcc1.a | |
| 193 | + @-mv libtcc1.a win32/lib | |
| 210 | 194 | |
| 211 | 195 | libtest: libtcc_test$(EXESUF) $(LIBTCC1) |
| 212 | 196 | ./libtcc_test$(EXESUF) lib_path=. |
| @@ -229,7 +213,7 @@ VPATH+=lib · 16 unmodified lines | ||
| 229 | 213 | ifdef CONFIG_WIN32 |
| 230 | 214 | # for windows, we must use TCC because we generate ELF objects |
| 231 | 215 | LIBTCC1_OBJS+=crt1.o wincrt1.o dllcrt1.o dllmain.o chkstk.o bcheck.o |
| 232 | −LIBTCC1_CC=./tcc.exe -Bwin32 -Iinclude $(NATIVE_DEFINES) | |
| 216 | +LIBTCC1_CC=./$(TCC)$(EXESUF) -Bwin32 -Iinclude $(NATIVE_DEFINES) | |
| 233 | 217 | VPATH+=win32/lib |
| 234 | 218 | endif |
| 235 | 219 | |
| @@ -274,7 +258,7 @@ endif · 38 unmodified lines | ||
| 274 | 258 | $(INSTALL) -m644 tcc-doc.html "$(docdir)" |
| 275 | 259 | ifdef CONFIG_CROSS |
| 276 | 260 | mkdir -p "$(tccdir)/lib" |
| 277 | − $(INSTALL) -m644 win32/lib/*.def lib/libtcc1.a "$(tccdir)/lib" | |
| 261 | + $(INSTALL) -m644 win32/lib/*.def win32/lib/libtcc1.a "$(tccdir)/lib" | |
| 278 | 262 | cp -r win32/include/. "$(tccdir)/include" |
| 279 | 263 | cp -r win32/examples/. "$(tccdir)/examples" |
| 280 | 264 | endif |
| @@ -334,7 +318,7 @@ tar: · 53 unmodified lines | ||
| 334 | 318 | $(MAKE) -C tests $@ |
| 335 | 319 | |
| 336 | 320 | clean: |
| 337 | − rm -vf $(PROGS) tcc_p$(EXESUF) tcc.pod *~ *.o *.a *.out *.so* *.exe libtcc_test$(EXESUF) lib/libtcc1.a $(WIN32_CROSS) | |
| 321 | + rm -vf $(PROGS) tcc_p$(EXESUF) tcc.pod *~ *.o *.a *.out *.so* *.exe libtcc_test$(EXESUF) win32/lib/libtcc1.a $(WIN32_CROSS) | |
| 338 | 322 | $(MAKE) -C tests $@ |
| 339 | 323 | |
| 340 | 324 | distclean: clean |