2 # Tiny C Compiler Makefile for libtcc1.a
6 include $(TOP
)/Makefile
7 VPATH
= $(top_srcdir
)/lib
$(top_srcdir
)/win32
/lib
9 ifndef TARGET
# native library
41 cross
: $(DIR
)/libtcc1.a
43 native
: TCC
= $(TOP
)/tcc
$(EXESUF
)
44 cross
: TCC
= $(TOP
)/$(TARGET
)-tcc
$(EXESUF
)
46 I386_O
= libtcc1.o alloca86.o alloca86-bt.o
$(BCHECK_O
)
47 X86_64_O
= libtcc1.o alloca86_64.o alloca86_64-bt.o
$(BCHECK_O
)
48 ARM_O
= libtcc1.o armeabi.o alloca-arm.o
49 WIN32_O
= $(I386_O
) crt1.o wincrt1.o dllcrt1.o dllmain.o chkstk.o
50 WIN64_O
= $(X86_64_O
) crt1.o wincrt1.o dllcrt1.o dllmain.o chkstk.o
53 # build TCC runtime library to contain PIC code, so it can be linked
54 # into shared libraries
57 # don't compile with -fstack-protector-strong, TCC doesn't handle it
59 CFLAGS
:= $(filter-out -fstack-protector-strong
,$(CFLAGS
))
61 ifeq "$(TARGET)" "i386-win"
62 OBJ
= $(addprefix $(DIR
)/,$(WIN32_O
))
63 TGT
= -DTCC_TARGET_I386
-DTCC_TARGET_PE
64 XCC ?
= $(TCC
) -B
$(top_srcdir
)/win32
-I
$(top_srcdir
)/include
65 XAR ?
= $(DIR
)/tiny_libmaker
$(EXESUF
)
68 ifeq "$(TARGET)" "x86_64-win"
69 OBJ
= $(addprefix $(DIR
)/,$(WIN64_O
))
70 TGT
= -DTCC_TARGET_X86_64
-DTCC_TARGET_PE
71 XCC
= $(TCC
) -B
$(top_srcdir
)/win32
-I
$(top_srcdir
)/include
72 XAR ?
= $(DIR
)/tiny_libmaker
$(EXESUF
)
75 ifeq "$(TARGET)" "i386"
76 OBJ
= $(addprefix $(DIR
)/,$(I386_O
))
77 TGT
= -DTCC_TARGET_I386
78 XCC ?
= $(TCC
) -B
$(TOP
)
80 ifeq "$(TARGET)" "x86_64"
81 OBJ
= $(addprefix $(DIR
)/,$(X86_64_O
))
82 TGT
= -DTCC_TARGET_X86_64
83 XCC ?
= $(TCC
) -B
$(TOP
)
85 ifeq "$(TARGET)" "arm"
86 OBJ
= $(addprefix $(DIR
)/,$(ARM_O
))
87 TGT
= -DTCC_TARGET_ARM
88 XCC ?
= $(TCC
) -B
$(TOP
)
90 ifeq "$(TARGET)" "arm64"
91 OBJ
= $(addprefix $(DIR
)/,$(ARM64_O
))
92 TGT
= -DTCC_TARGET_ARM64
93 XCC ?
= $(TCC
) -B
$(TOP
)
95 $(error libtcc1.a not supported on target
'$(TARGET)')
103 XFLAGS
= $(CPPFLAGS
) $(CFLAGS
) $(PICFLAGS
) $(TGT
)
105 ifeq ($(TARGETOS
),Darwin
)
106 XAR
= $(DIR
)/tiny_libmaker
$(EXESUF
)
107 XFLAGS
+= -D_ANSI_SOURCE
113 $(DIR
)/libtcc1.a ..
/libtcc1.a
: $(OBJ
) $(XAR
)
116 $(XCC
) -c
$< -o
$@
$(XFLAGS
)
118 $(XCC
) -c
$< -o
$@
$(XFLAGS
)
119 $(DIR
)/%$(EXESUF
) : $(TOP
)/win32
/tools
/%.c
120 $(CC
) -o
$@
$< $(XFLAGS
) $(LDFLAGS
)
122 $(OBJ
) $(XAR
) : $(DIR
)/exists
128 rm -rfv i386-win x86_64-win i386 x86_64 arm64