2 # Tiny C Compiler Makefile for libtcc1.a
6 include $(TOP
)/Makefile
7 VPATH
= $(TOPSRC
)/lib
$(TOPSRC
)/win32
/lib
8 T
= $(or
$(CROSS_TARGET
),$(NATIVE_TARGET
),unknown
)
9 X
= $(if
$(CROSS_TARGET
),$(CROSS_TARGET
)-)
10 BIN
= $(TOP
)/$(X
)libtcc1.a
12 XTCC ?
= $(TOP
)/$(X
)tcc
$(EXESUF
)
15 XFLAGS-unx
= -B
$(TOPSRC
)
16 XFLAGS-win
= -B
$(TOPSRC
)/win32
-I
$(TOPSRC
)/include
17 XFLAGS
= $(XFLAGS
$(XCFG
))
18 XCFG
= $(or
$(findstring -win
,$T),-unx
)
20 # in order to use gcc, tyoe: make <target>-libtcc1-usegcc=yes
21 arm-libtcc1-usegcc ?
= no
23 ifeq "$($(T)-libtcc1-usegcc)" "yes"
26 XFLAGS
= $(CFLAGS
) -fPIC
29 # only for native compiler
30 $(X
)BCHECK_O
= bcheck.o
32 ifeq ($(CONFIG_musl
)$(CONFIG_uClibc
),yes
)
37 XFLAGS
+= -D_ANSI_SOURCE
40 I386_O
= libtcc1.o alloca86.o alloca86-bt.o
41 X86_64_O
= libtcc1.o alloca86_64.o alloca86_64-bt.o
42 ARM_O
= libtcc1.o armeabi.o alloca-arm.o armflush.o
44 WIN_O
= crt1.o crt1w.o wincrt1.o wincrt1w.o dllcrt1.o dllmain.o
46 OBJ-i386
= $(I386_O
) $(BCHECK_O
)
47 OBJ-x86_64
= $(X86_64_O
) va_list.o
$(BCHECK_O
)
48 OBJ-x86_64-osx
= $(X86_64_O
) va_list.o
49 OBJ-i386-win32
= $(I386_O
) chkstk.o bcheck.o
$(WIN_O
)
50 OBJ-x86_64-win32
= $(X86_64_O
) chkstk.o bcheck.o
$(WIN_O
)
51 OBJ-arm64
= $(ARM64_O
)
53 OBJ-arm-fpa
= $(ARM_O
)
54 OBJ-arm-fpa-ld
= $(ARM_O
)
55 OBJ-arm-vfp
= $(ARM_O
)
56 OBJ-arm-eabi
= $(ARM_O
)
57 OBJ-arm-eabihf
= $(ARM_O
)
58 OBJ-arm-wince
= $(ARM_O
) $(WIN_O
)
60 $(BIN
) : $(patsubst %.o
,$(X
)%.o
,$(OBJ-
$T))
64 $(XCC
) -c
$< -o
$@
$(XFLAGS
)
67 $(XCC
) -c
$< -o
$@
$(XFLAGS
)
70 $(X
)wincrt1w.o
: wincrt1.c