mirror of
https://github.com/frida/tinycc
synced 2024-11-25 00:59:37 +03:00
tccpe.c: Makefile: --enable-cross win64 cross library build
This commit is contained in:
parent
9e406656c7
commit
c1a437add7
26
Makefile
26
Makefile
@ -204,11 +204,14 @@ LIBTCC1_OBJS=libtcc1.o $(ALLOCA_O)
|
|||||||
LIBTCC1_CC=$(CC)
|
LIBTCC1_CC=$(CC)
|
||||||
VPATH+=lib
|
VPATH+=lib
|
||||||
|
|
||||||
# use i386-win32-tcc (WIN32_CROSS) to build libtcc1.a on Linux
|
# use cross-compilers to bootstrap build libtcc1-winxx.a on Linux
|
||||||
# ar t libtcc1.a will list the ELF objects
|
# ar t *.a can list the ELF objects in archive for debugging
|
||||||
LinuxWIN32libtcc1: $(WIN32_CROSS)
|
LinuxWIN32libtcc1: $(WIN32_CROSS) $(WIN64_CROSS)
|
||||||
$(MAKE) TCC=./i386-win32-tcc LIBTCC1_DIR=win32/lib ARCH=i386 \
|
$(MAKE) TCC=$(WIN32_CROSS) LIBTCC1_DIR=win32/lib ARCH=i386 \
|
||||||
CONFIG_WIN32=1 CFLAGS+="-Bwin32 -Iinclude" ./win32/lib/libtcc1.a
|
CONFIG_WIN32=1 LIBTCC1=libtcc1-win32.a ./win32/lib/libtcc1-win32.a
|
||||||
|
-rm libtcc1.o crt1.o wincrt1.o dllcrt1.o dllmain.o chkstk.o bcheck.o
|
||||||
|
$(MAKE) TCC=$(WIN64_CROSS) LIBTCC1_DIR=win32/lib ARCH=x86_64 \
|
||||||
|
CONFIG_WIN64=1 LIBTCC1=libtcc1-win64.a ./win32/lib/libtcc1-win64.a
|
||||||
|
|
||||||
ifdef CONFIG_WIN32
|
ifdef CONFIG_WIN32
|
||||||
# for windows, we must use TCC because we generate ELF objects
|
# for windows, we must use TCC because we generate ELF objects
|
||||||
@ -217,12 +220,21 @@ LIBTCC1_CC=./$(TCC)$(EXESUF) -Bwin32 -Iinclude $(NATIVE_DEFINES)
|
|||||||
VPATH+=win32/lib
|
VPATH+=win32/lib
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifdef CONFIG_WIN64
|
||||||
|
# windows 64: fixme: chkstk.o bcheck.o fails, not included
|
||||||
|
# windows 64: fixme: alloca86_64 is broken
|
||||||
|
LIBTCC1_OBJS=libtcc1.o alloca86_64.o crt1.o wincrt1.o dllcrt1.o dllmain.o
|
||||||
|
LIBTCC1_CC=./$(TCC)$(EXESUF) -Bwin32 -Iinclude $(NATIVE_DEFINES)
|
||||||
|
VPATH+=win32/lib
|
||||||
|
endif
|
||||||
|
|
||||||
%.o: %.c
|
%.o: %.c
|
||||||
$(LIBTCC1_CC) -o $@ -c $< -O2 -Wall
|
$(LIBTCC1_CC) -o $@ -c $< -O2 -Wall
|
||||||
%.o: %.S
|
%.o: %.S
|
||||||
$(LIBTCC1_CC) -o $@ -c $<
|
$(LIBTCC1_CC) -o $@ -c $<
|
||||||
|
|
||||||
$(LIBTCC1_DIR)/libtcc1.a: $(LIBTCC1_OBJS)
|
#libtcc1.a
|
||||||
|
$(LIBTCC1_DIR)/$(LIBTCC1): $(LIBTCC1_OBJS)
|
||||||
$(AR) rcs $@ $^
|
$(AR) rcs $@ $^
|
||||||
|
|
||||||
# install
|
# install
|
||||||
@ -321,7 +333,7 @@ tar:
|
|||||||
$(MAKE) -C tests $@
|
$(MAKE) -C tests $@
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -vf $(PROGS) tcc_p$(EXESUF) tcc.pod *~ *.o *.a *.out *.so* *.exe libtcc_test$(EXESUF) win32/lib/libtcc1.a $(WIN32_CROSS)
|
rm -vf $(PROGS) tcc_p$(EXESUF) tcc.pod *~ *.o *.a *.out *.so* *.exe libtcc_test$(EXESUF) win32/lib/libtcc1*.a $(WIN32_CROSS)
|
||||||
$(MAKE) -C tests $@
|
$(MAKE) -C tests $@
|
||||||
|
|
||||||
distclean: clean
|
distclean: clean
|
||||||
|
7
tccpe.c
7
tccpe.c
@ -1770,7 +1770,12 @@ static void pe_add_runtime_ex(TCCState *s1, struct pe_info *pe)
|
|||||||
|
|
||||||
if (0 == s1->nostdlib) {
|
if (0 == s1->nostdlib) {
|
||||||
static const char *libs[] = {
|
static const char *libs[] = {
|
||||||
"tcc1", "msvcrt", "kernel32", "", "user32", "gdi32", NULL
|
#ifdef TCC_TARGET_X86_64
|
||||||
|
"tcc1-win64",
|
||||||
|
#else
|
||||||
|
"tcc1-win32",
|
||||||
|
#endif
|
||||||
|
"msvcrt", "kernel32", "", "user32", "gdi32", NULL
|
||||||
};
|
};
|
||||||
const char **pp, *p;
|
const char **pp, *p;
|
||||||
for (pp = libs; 0 != (p = *pp); ++pp) {
|
for (pp = libs; 0 != (p = *pp); ++pp) {
|
||||||
|
Loading…
Reference in New Issue
Block a user