Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
6429 | siemargl | 1 | # |
2 | # Tiny C Compiler Makefile for libtcc1.a |
||
3 | # |
||
4 | |||
5 | TOP = .. |
||
6 | include $(TOP)/Makefile |
||
7 | VPATH = $(top_srcdir)/lib $(top_srcdir)/win32/lib |
||
8 | |||
9 | ifndef TARGET # native library |
||
10 | ifdef CONFIG_WIN64 |
||
11 | TARGET = x86_64-win |
||
12 | else |
||
13 | ifdef CONFIG_WIN32 |
||
14 | TARGET = i386-win |
||
15 | else |
||
16 | ifeq ($(ARCH),i386) |
||
17 | TARGET = i386 |
||
18 | else |
||
19 | ifeq ($(ARCH),x86-64) |
||
20 | TARGET = x86_64 |
||
21 | else |
||
22 | ifeq ($(ARCH),arm) |
||
23 | TARGET = arm |
||
24 | XCC = $(CC) |
||
25 | else |
||
26 | ifeq ($(ARCH),arm64) |
||
27 | TARGET = arm64 |
||
28 | else |
||
29 | endif |
||
30 | endif |
||
31 | endif |
||
32 | endif |
||
33 | endif |
||
34 | endif |
||
35 | endif |
||
36 | |||
37 | BCHECK_O = bcheck.o |
||
38 | DIR = $(TARGET) |
||
39 | |||
40 | native : ../libtcc1.a |
||
41 | cross : $(DIR)/libtcc1.a |
||
42 | |||
43 | native : TCC = $(TOP)/tcc$(EXESUF) |
||
44 | cross : TCC = $(TOP)/$(TARGET)-tcc$(EXESUF) |
||
45 | |||
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 |
||
51 | ARM64_O = lib-arm64.o |
||
52 | |||
53 | # build TCC runtime library to contain PIC code, so it can be linked |
||
54 | # into shared libraries |
||
55 | PICFLAGS = -fPIC |
||
56 | |||
57 | # don't compile with -fstack-protector-strong, TCC doesn't handle it |
||
58 | # correctly |
||
59 | CFLAGS := $(filter-out -fstack-protector-strong,$(CFLAGS)) |
||
60 | |||
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) |
||
66 | PICFLAGS = |
||
67 | else |
||
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) |
||
73 | PICFLAGS = |
||
74 | else |
||
75 | ifeq "$(TARGET)" "i386" |
||
76 | OBJ = $(addprefix $(DIR)/,$(I386_O)) |
||
77 | TGT = -DTCC_TARGET_I386 |
||
78 | XCC ?= $(TCC) -B$(TOP) |
||
79 | else |
||
80 | ifeq "$(TARGET)" "x86_64" |
||
81 | OBJ = $(addprefix $(DIR)/,$(X86_64_O)) |
||
82 | TGT = -DTCC_TARGET_X86_64 |
||
83 | XCC ?= $(TCC) -B$(TOP) |
||
84 | else |
||
85 | ifeq "$(TARGET)" "arm" |
||
86 | OBJ = $(addprefix $(DIR)/,$(ARM_O)) |
||
87 | TGT = -DTCC_TARGET_ARM |
||
88 | XCC ?= $(TCC) -B$(TOP) |
||
89 | else |
||
90 | ifeq "$(TARGET)" "arm64" |
||
91 | OBJ = $(addprefix $(DIR)/,$(ARM64_O)) |
||
92 | TGT = -DTCC_TARGET_ARM64 |
||
93 | XCC ?= $(TCC) -B$(TOP) |
||
94 | else |
||
95 | $(error libtcc1.a not supported on target '$(TARGET)') |
||
96 | endif |
||
97 | endif |
||
98 | endif |
||
99 | endif |
||
100 | endif |
||
101 | endif |
||
102 | |||
103 | XFLAGS = $(filter-out -b,$(CPPFLAGS) $(CFLAGS) $(PICFLAGS) $(TGT)) |
||
104 | |||
105 | ifeq ($(TARGETOS),Darwin) |
||
106 | XAR = $(DIR)/tiny_libmaker$(EXESUF) |
||
107 | XFLAGS += -D_ANSI_SOURCE |
||
108 | BCHECK_O = |
||
109 | endif |
||
110 | |||
111 | XAR ?= $(AR) |
||
112 | |||
113 | $(DIR)/libtcc1.a ../libtcc1.a : $(OBJ) $(XAR) |
||
114 | $(XAR) rcs $@ $(OBJ) |
||
115 | $(DIR)/%.o : %.c |
||
116 | $(XCC) -c $< -o $@ $(XFLAGS) |
||
117 | $(DIR)/%.o : %.S |
||
118 | $(XCC) -c $< -o $@ $(XFLAGS) |
||
119 | $(DIR)/%$(EXESUF) : $(TOP)/win32/tools/%.c |
||
120 | $(CC) -o $@ $< $(XFLAGS) $(LDFLAGS) |
||
121 | |||
122 | $(OBJ) $(XAR) : $(DIR)/exists |
||
123 | $(DIR)/exists : |
||
124 | mkdir -p $(DIR) |
||
125 | @echo $@ > $@ |
||
126 | |||
127 | clean : |
||
128 | rm -rfv i386-win x86_64-win i386 x86_64 arm64>>> |