2 # Tiny C Compiler Makefile for libtcc1.a
6 include $(TOP
)/Makefile
7 VPATH
= $(TOPSRC
)/lib
$(TOPSRC
)/win32
/lib
10 # we're building the native libtcc1.a
18 else ifeq ($(ARCH
),i386
)
20 XCC
= $(CC
) # using gcc
21 else ifeq ($(ARCH
),x86-64
)
23 XCC
= $(CC
) # using gcc
24 else ifeq ($(ARCH
),arm
)
26 XCC
= $(CC
) # using gcc
27 else ifeq ($(ARCH
),arm64
)
36 cross
: $(DIR
)/libtcc1.a
38 native
: TCC
= $(TOP
)/tcc
$(EXESUF
)
39 cross
: TCC
= $(TOP
)/$(TARGET
)-tcc
$(EXESUF
)
41 I386_O
= libtcc1.o alloca86.o alloca86-bt.o
$(BCHECK_O
)
42 X86_64_O
= libtcc1.o alloca86_64.o alloca86_64-bt.o
$(BCHECK_O
)
43 ARM_O
= libtcc1.o armeabi.o alloca-arm.o
44 WIN32_O
= $(I386_O
) crt1.o wincrt1.o dllcrt1.o dllmain.o chkstk.o
45 WIN64_O
= $(X86_64_O
) crt1.o wincrt1.o dllcrt1.o dllmain.o chkstk.o
48 # build TCC runtime library to contain PIC code, so it can be linked
49 # into shared libraries
52 ifeq "$(TARGET)" "i386-win32"
53 OBJ
= $(addprefix $(DIR
)/,$(WIN32_O
))
54 TGT
= -DTCC_TARGET_I386
-DTCC_TARGET_PE
55 XCC
= $(TCC
) -B
$(TOPSRC
)/win32
-I
$(TOPSRC
)/include
56 XAR
= $(DIR
)/tiny_libmaker
$(EXESUF
)
58 else ifeq "$(TARGET)" "x86_64-win32"
59 OBJ
= $(addprefix $(DIR
)/,$(WIN64_O
))
60 TGT
= -DTCC_TARGET_X86_64
-DTCC_TARGET_PE
61 XCC
= $(TCC
) -B
$(TOPSRC
)/win32
-I
$(TOPSRC
)/include
62 XAR
= $(DIR
)/tiny_libmaker
$(EXESUF
)
64 else ifeq "$(TARGET)" "i386"
65 OBJ
= $(addprefix $(DIR
)/,$(I386_O
))
66 TGT
= -DTCC_TARGET_I386
67 XCC ?
= $(TCC
) -B
$(TOPSRC
)
68 else ifeq "$(TARGET)" "x86_64"
69 OBJ
= $(addprefix $(DIR
)/,$(X86_64_O
))
70 TGT
= -DTCC_TARGET_X86_64
71 XCC ?
= $(TCC
) -B
$(TOPSRC
)
72 else ifeq "$(TARGET)" "arm"
73 OBJ
= $(addprefix $(DIR
)/,$(ARM_O
))
74 TGT
= -DTCC_TARGET_ARM
75 XCC ?
= $(TCC
) -B
$(TOPSRC
)
76 else ifeq "$(TARGET)" "arm64"
77 OBJ
= $(addprefix $(DIR
)/,$(ARM64_O
))
78 TGT
= -DTCC_TARGET_ARM64
79 XCC ?
= $(TCC
) -B
$(TOPSRC
)
81 $(error libtcc1.a not supported on target
'$(TARGET)')
84 XFLAGS ?
= $(CFLAGS
) $(PICFLAGS
) $(TGT
)
86 ifeq ($(TARGETOS
),Darwin
)
87 XAR
= $(DIR
)/tiny_libmaker
$(EXESUF
)
88 XFLAGS
+= -D_ANSI_SOURCE
96 $(DIR
)/libtcc1.a ..
/libtcc1.a
: $(OBJ
) $(XAR
)
99 $(XCC
) -c
$< -o
$@
$(XFLAGS
)
101 $(XCC
) -c
$< -o
$@
$(XFLAGS
)
102 # windows : utilities
103 $(DIR
)/tiny_
%$(EXESUF
) : $(TOPSRC
)/win32
/tools
/tiny_
%.c
104 $(CC
) -o
$@
$< $(CFLAGS
) $(LDFLAGS
) $(TGT
)
106 $(OBJ
) $(XAR
) : $(DIR
)/exists
113 rm -rfv i386-win32 x86_64-win32 i386 x86_64 arm arm64