Rev 6410 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
6429 | siemargl | 1 | # |
2 | # Tiny C Compiler Makefile |
||
3 | # |
||
4 | |||
5 | TOP ?= . |
||
6 | include $(TOP)/config.mak |
||
7 | VPATH = $(top_srcdir) |
||
8 | |||
9 | CPPFLAGS += -I$(TOP) # for config.h |
||
10 | |||
11 | ifneq (-$(findstring gcc,$(CC))-,-gcc-) |
||
12 | ifeq (-$(findstring clang,$(CC))-,-clang-) |
||
13 | # make clang accept gnuisms in libtcc1.c |
||
14 | CFLAGS+=-fheinous-gnu-extensions |
||
15 | endif |
||
16 | endif |
||
17 | |||
18 | CPPFLAGS_P=$(CPPFLAGS) -DCONFIG_TCC_STATIC |
||
19 | CFLAGS_P=$(CFLAGS) -pg -static |
||
20 | LIBS_P= |
||
21 | LDFLAGS_P=$(LDFLAGS) |
||
22 | |||
23 | ifdef CONFIG_WIN64 |
||
24 | CONFIG_WIN32=yes |
||
25 | endif |
||
26 | |||
27 | ifndef CONFIG_WIN32 |
||
28 | LIBS=-lm |
||
29 | ifndef CONFIG_NOLDL |
||
30 | LIBS+=-ldl |
||
31 | endif |
||
32 | endif |
||
33 | |||
34 | # make libtcc as static or dynamic library? |
||
35 | ifdef DISABLE_STATIC |
||
36 | ifndef CONFIG_WIN32 |
||
37 | LIBTCC=libtcc.so.1.0 |
||
38 | else |
||
39 | LIBTCC=libtcc.dll |
||
40 | LIBTCC_DLL=yes |
||
41 | LIBTCC_EXTRA=libtcc.def libtcc.a |
||
42 | endif |
||
43 | LINK_LIBTCC=-Wl,-rpath,"$(libdir)" |
||
44 | ifdef DISABLE_RPATH |
||
45 | LINK_LIBTCC= |
||
46 | endif |
||
47 | else |
||
48 | LIBTCC=libtcc.a |
||
49 | LINK_LIBTCC= |
||
50 | endif |
||
51 | |||
52 | CONFIG_$(ARCH) = yes |
||
53 | NATIVE_DEFINES_$(CONFIG_i386) += -DTCC_TARGET_I386 |
||
54 | NATIVE_DEFINES_$(CONFIG_x86-64) += -DTCC_TARGET_X86_64 |
||
55 | NATIVE_DEFINES_$(CONFIG_WIN32) += -DTCC_TARGET_PE |
||
56 | NATIVE_DEFINES_$(CONFIG_uClibc) += -DTCC_UCLIBC |
||
57 | NATIVE_DEFINES_$(CONFIG_arm) += -DTCC_TARGET_ARM |
||
58 | NATIVE_DEFINES_$(CONFIG_arm_eabihf) += -DTCC_ARM_EABI -DTCC_ARM_HARDFLOAT |
||
59 | NATIVE_DEFINES_$(CONFIG_arm_eabi) += -DTCC_ARM_EABI |
||
60 | NATIVE_DEFINES_$(CONFIG_arm_vfp) += -DTCC_ARM_VFP |
||
61 | NATIVE_DEFINES_$(CONFIG_arm64) += -DTCC_TARGET_ARM64 |
||
62 | NATIVE_DEFINES += $(NATIVE_DEFINES_yes) |
||
63 | |||
64 | ifeq ($(TOP),.) |
||
65 | |||
66 | PROGS=tcc$(EXESUF) |
||
67 | I386_CROSS = i386-linux-gnu-tcc$(EXESUF) |
||
68 | WIN32_CROSS = i386-win-mingw32-tcc$(EXESUF) |
||
69 | WIN64_CROSS = x86_64-win-mingw32-tcc$(EXESUF) |
||
70 | WINCE_CROSS = arm-win-mingw32ce-tcc$(EXESUF) |
||
71 | X64_CROSS = x86_64-linux-gnu-tcc$(EXESUF) |
||
72 | ARM_FPA_CROSS = arm-linux-fpa-tcc$(EXESUF) |
||
73 | ARM_FPA_LD_CROSS = arm-linux-fpa-ld-tcc$(EXESUF) |
||
74 | ARM_VFP_CROSS = arm-linux-gnu-tcc$(EXESUF) |
||
75 | ARM_EABI_CROSS = arm-linux-gnueabi-tcc$(EXESUF) |
||
76 | ARM_EABIHF_CROSS = arm-linux-gnueabihf-tcc$(EXESUF) |
||
77 | ARM_CROSS = $(ARM_FPA_CROSS) $(ARM_FPA_LD_CROSS) $(ARM_VFP_CROSS) $(ARM_EABI_CROSS) |
||
78 | ARM64_CROSS = arm64-tcc$(EXESUF) |
||
79 | C67_CROSS = c67-tcc$(EXESUF) |
||
80 | |||
81 | # Legacy symlinks for cross compilers |
||
82 | $(I386_CROSS)_LINK = i386-tcc$(EXESUF) |
||
83 | $(WIN32_CROSS)_LINK = i386-win-tcc$(EXESUF) |
||
84 | $(WIN64_CROSS)_LINK = x86_64-win-tcc$(EXESUF) |
||
85 | $(WINCE_CROSS)_LINK = arm-win-tcc$(EXESUF) |
||
86 | $(X64_CROSS)_LINK = x86_64-tcc$(EXESUF) |
||
87 | $(ARM_FPA_CROSS)_LINK = arm-fpa-tcc$(EXESUF) |
||
88 | $(ARM_FPA_LD_CROSS)_LINK = arm-fpa-ld-tcc$(EXESUF) |
||
89 | $(ARM_VFP_CROSS)_LINK = arm-vfp-tcc$(EXESUF) |
||
90 | $(ARM_EABI_CROSS)_LINK = arm-eabi-tcc$(EXESUF) |
||
91 | |||
92 | ifeq ($(TARGETOS),Windows) |
||
93 | ifeq ($(ARCH),i386) |
||
94 | PROGS:=$($(WIN32_CROSS)_LINK) |
||
95 | $($(WIN32_CROSS)_LINK)_TCC = yes |
||
96 | endif |
||
97 | ifeq ($(ARCH),x86-64) |
||
98 | PROGS:=$($(WIN64_CROSS)_LINK) |
||
99 | $($(WIN64_CROSS)_LINK)_TCC = yes |
||
100 | endif |
||
101 | endif |
||
102 | |||
103 | ifeq ($(TARGETOS),Linux) |
||
104 | ifeq ($(ARCH),i386) |
||
105 | PROGS:=$($(I386_CROSS)_LINK) |
||
106 | $($(I386_CROSS)_LINK)_TCC = yes |
||
107 | endif |
||
108 | ifeq ($(ARCH),x86-64) |
||
109 | PROGS:=$($(X64_CROSS)_LINK) |
||
110 | $($(X64_CROSS)_LINK)_TCC = yes |
||
111 | endif |
||
112 | endif |
||
113 | |||
114 | CORE_FILES = tcc.c libtcc.c tccpp.c tccgen.c tccelf.c tccasm.c tccrun.c |
||
115 | CORE_FILES += tcc.h config.h libtcc.h tcctok.h |
||
116 | I386_FILES = $(CORE_FILES) i386-gen.c i386-asm.c i386-asm.h i386-tok.h |
||
117 | WIN32_FILES = $(CORE_FILES) i386-gen.c i386-asm.c i386-asm.h i386-tok.h tccpe.c |
||
118 | WIN64_FILES = $(CORE_FILES) x86_64-gen.c i386-asm.c x86_64-asm.h tccpe.c |
||
119 | WINCE_FILES = $(CORE_FILES) arm-gen.c tccpe.c |
||
120 | X86_64_FILES = $(CORE_FILES) x86_64-gen.c i386-asm.c x86_64-asm.h |
||
121 | ARM_FILES = $(CORE_FILES) arm-gen.c |
||
122 | ARM64_FILES = $(CORE_FILES) arm64-gen.c |
||
123 | C67_FILES = $(CORE_FILES) c67-gen.c tcccoff.c |
||
124 | |||
125 | ifdef CONFIG_WIN64 |
||
126 | PROGS+=tiny_impdef$(EXESUF) tiny_libmaker$(EXESUF) |
||
127 | NATIVE_FILES=$(WIN64_FILES) |
||
128 | PROGS_CROSS=$(WIN32_CROSS) $(I386_CROSS) $(X64_CROSS) $(ARM_CROSS) $(ARM64_CROSS) $(C67_CROSS) $(WINCE_CROSS) |
||
129 | LIBTCC1_CROSS=lib/i386-win/libtcc1.a |
||
130 | LIBTCC1=libtcc1.a |
||
131 | else ifdef CONFIG_WIN32 |
||
132 | PROGS+=tiny_impdef$(EXESUF) tiny_libmaker$(EXESUF) |
||
133 | NATIVE_FILES=$(WIN32_FILES) |
||
134 | PROGS_CROSS=$(WIN64_CROSS) $(I386_CROSS) $(X64_CROSS) $(ARM_CROSS) $(ARM64_CROSS) $(C67_CROSS) $(WINCE_CROSS) |
||
135 | LIBTCC1_CROSS=lib/x86_64-win/libtcc1.a |
||
136 | LIBTCC1=libtcc1.a |
||
137 | else ifeq ($(ARCH),i386) |
||
138 | NATIVE_FILES=$(I386_FILES) |
||
139 | PROGS_CROSS=$($(X64_CROSS)_LINK) $($(WIN32_CROSS)_LINK) $($(WIN64_CROSS)_LINK) $(ARM_CROSS) $(ARM64_CROSS) $(C67_CROSS) $(WINCE_CROSS) |
||
140 | LIBTCC1_CROSS=lib/i386-win/libtcc1.a lib/x86_64-win/libtcc1.a lib/i386/libtcc1.a lib/x86_64/libtcc1.a \ |
||
141 | lib/arm64/libtcc1.a |
||
142 | LIBTCC1=libtcc1.a |
||
143 | else ifeq ($(ARCH),x86-64) |
||
144 | ifeq ($(TARGETOS),Darwin) |
||
145 | NATIVE_FILES=$(X86_64_FILES) |
||
146 | PROGS_CROSS=$($(I386_CROSS)_LINK) $($(WIN32_CROSS)_LINK) $($(WIN64_CROSS)_LINK) $(ARM_CROSS) $(C67_CROSS) $(WINCE_CROSS) |
||
147 | LIBTCC1_CROSS=lib/i386-win/libtcc1.a lib/x86_64-win/libtcc1.a lib/i386/libtcc1.a lib/x86_64/libtcc1.a |
||
148 | LIBTCC1=libtcc1.a |
||
149 | else |
||
150 | NATIVE_FILES=$(X86_64_FILES) |
||
151 | PROGS_CROSS=$($(I386_CROSS)_LINK) $($(WIN32_CROSS)_LINK) $($(WIN64_CROSS)_LINK) $(ARM_CROSS) $(ARM64_CROSS) $(C67_CROSS) $(WINCE_CROSS) |
||
152 | LIBTCC1_CROSS=lib/i386-win/libtcc1.a lib/x86_64-win/libtcc1.a lib/i386/libtcc1.a lib/x86_64/libtcc1.a \ |
||
153 | lib/arm64/libtcc1.a |
||
154 | LIBTCC1=libtcc1.a |
||
155 | endif |
||
156 | else ifeq ($(ARCH),arm) |
||
157 | NATIVE_FILES=$(ARM_FILES) |
||
158 | PROGS_CROSS=$(I386_CROSS) $(X64_CROSS) $(WIN32_CROSS) $(WIN64_CROSS) $(ARM64_CROSS) $(C67_CROSS) $(WINCE_CROSS) |
||
159 | LIBTCC1=libtcc1.a |
||
160 | LIBTCC1_CROSS=lib/i386-win/libtcc1.a lib/x86_64-win/libtcc1.a lib/i386/libtcc1.a |
||
161 | else ifeq ($(ARCH),arm64) |
||
162 | NATIVE_FILES=$(ARM64_FILES) |
||
163 | PROGS_CROSS=$(I386_CROSS) $(X64_CROSS) $(WIN32_CROSS) $(WIN64_CROSS) $(ARM_CROSS) $(C67_CROSS) $(WINCE_CROSS) |
||
164 | LIBTCC1=libtcc1.a |
||
165 | LIBTCC1_CROSS=lib/i386-win/libtcc1.a lib/x86_64-win/libtcc1.a lib/i386/libtcc1.a |
||
166 | endif |
||
167 | PROGS_CROSS_LINK=$(foreach PROG_CROSS,$(PROGS_CROSS),$($(PROG_CROSS)_LINK)) |
||
168 | |||
169 | ifeq ($(TARGETOS),Darwin) |
||
170 | PROGS+=tiny_libmaker$(EXESUF) |
||
171 | endif |
||
172 | |||
173 | TCCLIBS = $(LIBTCC1) $(LIBTCC) $(LIBTCC_EXTRA) |
||
174 | TCCDOCS = tcc.1 tcc-doc.html tcc-doc.info |
||
175 | |||
176 | ifdef CONFIG_CROSS |
||
177 | PROGS+=$(PROGS_CROSS) |
||
178 | TCCLIBS+=$(LIBTCC1_CROSS) |
||
179 | endif |
||
180 | |||
181 | all: $(PROGS) $(TCCLIBS) $(TCCDOCS) |
||
182 | |||
183 | # Host Tiny C Compiler |
||
184 | tcc$(EXESUF): tcc.o $(LIBTCC) |
||
185 | $(CC) -o $@ $^ $(LIBS) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) $(LINK_LIBTCC) |
||
186 | |||
187 | # Cross Tiny C Compilers |
||
188 | %-tcc$(EXESUF): tcc.c |
||
189 | $(CC) -o $@ $< -DONE_SOURCE $(if $($@_TCC),$(NATIVE_DEFINES),$(DEFINES)) $(CPPFLAGS) $(CFLAGS) $(LIBS) $(LDFLAGS) |
||
190 | $(if $($@_LINK),ln -sf $@ $($@_LINK)) |
||
191 | $(if $($@_TCC),ln -sf $@ tcc$(EXESUF)) |
||
192 | |||
193 | # profiling version |
||
194 | tcc_p$(EXESUF): $(NATIVE_FILES) |
||
195 | $(CC) -o $@ $< -DONE_SOURCE $(NATIVE_DEFINES) $(CPPFLAGS_P) $(CFLAGS_P) $(LIBS_P) $(LDFLAGS_P) |
||
196 | |||
197 | $(I386_CROSS) $($(I386_CROSS)_LINK): DEFINES = -DTCC_TARGET_I386 |
||
198 | $(X64_CROSS) $($(X64_CROSS)_LINK): DEFINES = -DTCC_TARGET_X86_64 |
||
199 | $(WIN32_CROSS) $($(WIN32_CROSS)_LINK): DEFINES = -DTCC_TARGET_I386 -DTCC_TARGET_PE \ |
||
200 | -DCONFIG_TCCDIR="\"$(tccdir)/win32\"" \ |
||
201 | -DCONFIG_TCC_LIBPATHS="\"{B}/lib/32;{B}/lib\"" |
||
202 | $(WIN64_CROSS) $($(WIN64_CROSS)_LINK): DEFINES = -DTCC_TARGET_X86_64 -DTCC_TARGET_PE \ |
||
203 | -DCONFIG_TCCDIR="\"$(tccdir)/win32\"" \ |
||
204 | -DCONFIG_TCC_LIBPATHS="\"{B}/lib/64;{B}/lib\"" |
||
205 | $(WINCE_CROSS): DEFINES = -DTCC_TARGET_PE |
||
206 | $(C67_CROSS): DEFINES = -DTCC_TARGET_C67 |
||
207 | $(ARM_FPA_CROSS): DEFINES = -DTCC_TARGET_ARM |
||
208 | $(ARM_FPA_LD_CROSS)$(EXESUF): DEFINES = -DTCC_TARGET_ARM -DLDOUBLE_SIZE=12 |
||
209 | $(ARM_VFP_CROSS): DEFINES = -DTCC_TARGET_ARM -DTCC_ARM_VFP |
||
210 | $(ARM_EABI_CROSS): DEFINES = -DTCC_TARGET_ARM -DTCC_ARM_EABI -DTCC_ARM_VFP |
||
211 | $(ARM64_CROSS): DEFINES = -DTCC_TARGET_ARM64 |
||
212 | |||
213 | $(I386_CROSS) $($(I386_CROSS)_LINK): $(I386_FILES) |
||
214 | $(X64_CROSS) $($(X64_CROSS)_LINK): $(X86_64_FILES) |
||
215 | $(WIN32_CROSS) $($(WIN32_CROSS)_LINK): $(WIN32_FILES) |
||
216 | $(WIN64_CROSS) $($(WIN64_CROSS)_LINK): $(WIN64_FILES) |
||
217 | $(WINCE_CROSS) $($(WINCE_CROSS)_LINK): $(WINCE_FILES) |
||
218 | $(C67_CROSS) $($(C67_CROSS)_LINK): $(C67_FILES) |
||
219 | $(ARM_FPA_CROSS) $(ARM_FPA_LD_CROSS) $(ARM_VFP_CROSS) $(ARM_EABI_CROSS): $(ARM_FILES) |
||
220 | $($(ARM_FPA_CROSS)_LINK) $($(ARM_FPA_LD_CROSS)_LINK) $($(ARM_VFP_CROSS)_LINK) $($(ARM_EABI_CROSS)_LINK): $(ARM_FILES) |
||
221 | $(ARM64_CROSS): $(ARM64_FILES) |
||
222 | |||
223 | # libtcc generation and test |
||
224 | ifndef ONE_SOURCE |
||
225 | LIBTCC_OBJ = $(filter-out tcc.o,$(patsubst %.c,%.o,$(filter %.c,$(NATIVE_FILES)))) |
||
226 | LIBTCC_INC = $(filter %.h,$(CORE_FILES)) $(filter-out $(CORE_FILES),$(NATIVE_FILES)) |
||
227 | else |
||
228 | LIBTCC_OBJ = libtcc.o |
||
229 | LIBTCC_INC = $(NATIVE_FILES) |
||
230 | libtcc.o : NATIVE_DEFINES += -DONE_SOURCE |
||
231 | endif |
||
232 | |||
233 | $(LIBTCC_OBJ) tcc.o : %.o : %.c $(LIBTCC_INC) |
||
234 | $(CC) -o $@ -c $< $(NATIVE_DEFINES) $(CPPFLAGS) $(CFLAGS) |
||
235 | |||
236 | ifndef LIBTCC_DLL |
||
237 | libtcc.a: $(LIBTCC_OBJ) |
||
238 | $(AR) rcs $@ $^ |
||
239 | endif |
||
240 | |||
241 | libtcc.so.1.0: $(LIBTCC_OBJ) |
||
242 | $(CC) -shared -Wl,-soname,$@ -o $@ $^ $(LDFLAGS) |
||
243 | |||
244 | libtcc.so.1.0: CFLAGS+=-fPIC |
||
245 | |||
246 | ifdef LIBTCC_DLL |
||
247 | libtcc.dll libtcc.def libtcc.a: $(LIBTCC_OBJ) |
||
248 | $(CC) -shared $^ -o $@ $(LDFLAGS) -Wl,--output-def,libtcc.def,--out-implib,libtcc.a |
||
249 | endif |
||
250 | |||
251 | # windows utilities |
||
252 | tiny_impdef$(EXESUF): win32/tools/tiny_impdef.c |
||
253 | $(CC) -o $@ $< $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) |
||
254 | tiny_libmaker$(EXESUF): win32/tools/tiny_libmaker.c |
||
255 | $(CC) -o $@ $< $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) |
||
256 | |||
257 | # TinyCC runtime libraries |
||
258 | libtcc1.a : FORCE $(PROGS) |
||
259 | $(MAKE) -C lib native |
||
260 | if test ! -d $(ARCH); then mkdir $(ARCH); fi |
||
261 | if test ! -L $(ARCH)/$@; then ln -sf ../$@ $(ARCH)/$@; fi |
||
262 | lib/%/libtcc1.a : FORCE $(PROGS_CROSS) |
||
263 | $(MAKE) -C lib cross TARGET=$* |
||
264 | |||
265 | FORCE: |
||
266 | |||
267 | # install |
||
268 | TCC_INCLUDES = stdarg.h stddef.h stdbool.h float.h varargs.h |
||
269 | INSTALL=install |
||
270 | ifdef STRIP_BINARIES |
||
271 | INSTALLBIN=$(INSTALL) -s |
||
272 | else |
||
273 | INSTALLBIN=$(INSTALL) |
||
274 | endif |
||
275 | |||
276 | install-strip: install |
||
277 | strip $(foreach PROG,$(PROGS),"$(bindir)"/$(PROG)) |
||
278 | |||
279 | ifndef CONFIG_WIN32 |
||
280 | install: $(PROGS) $(TCCLIBS) $(TCCDOCS) |
||
281 | mkdir -p "$(bindir)" |
||
282 | $(INSTALLBIN) -m755 $(PROGS) "$(bindir)" |
||
283 | cp -P tcc$(EXESUF) "$(bindir)" |
||
284 | mkdir -p "$(mandir)/man1" |
||
285 | -$(INSTALL) -m644 tcc.1 "$(mandir)/man1" |
||
286 | mkdir -p "$(infodir)" |
||
287 | -$(INSTALL) -m644 tcc-doc.info "$(infodir)" |
||
288 | mkdir -p "$(tccdir)" |
||
289 | mkdir -p "$(tccdir)/include" |
||
290 | ifneq ($(LIBTCC1),) |
||
291 | mkdir -p "$(tccdir)/$(ARCH)" |
||
292 | $(INSTALL) -m644 $(LIBTCC1) "$(tccdir)/$(ARCH)" |
||
293 | endif |
||
294 | $(INSTALL) -m644 $(addprefix $(top_srcdir)/include/,$(TCC_INCLUDES)) $(top_srcdir)/tcclib.h "$(tccdir)/include" |
||
295 | mkdir -p "$(libdir)" |
||
296 | $(INSTALL) -m644 $(LIBTCC) "$(libdir)" |
||
297 | ifdef DISABLE_STATIC |
||
298 | ln -sf "$(ln_libdir)/libtcc.so.1.0" "$(libdir)/libtcc.so.1" |
||
299 | ln -sf "$(ln_libdir)/libtcc.so.1.0" "$(libdir)/libtcc.so" |
||
300 | endif |
||
301 | mkdir -p "$(includedir)" |
||
302 | $(INSTALL) -m644 $(top_srcdir)/libtcc.h "$(includedir)" |
||
303 | mkdir -p "$(docdir)" |
||
304 | -$(INSTALL) -m644 tcc-doc.html "$(docdir)" |
||
305 | ifdef CONFIG_CROSS |
||
306 | mkdir -p "$(tccdir)/win32/lib/32" |
||
307 | mkdir -p "$(tccdir)/win32/lib/64" |
||
308 | mkdir -p "$(tccdir)/i386" |
||
309 | mkdir -p "$(tccdir)/x86-64" |
||
310 | ifneq ($(HOST_OS),Darwin) |
||
311 | mkdir -p "$(tccdir)/arm64" |
||
312 | $(INSTALL) -m644 lib/arm64/libtcc1.a "$(tccdir)/arm64" |
||
313 | endif |
||
314 | $(INSTALL) -m644 lib/i386/libtcc1.a "$(tccdir)/i386" |
||
315 | $(INSTALL) -m644 lib/x86_64/libtcc1.a "$(tccdir)/x86-64" |
||
316 | $(INSTALL) -m644 $(top_srcdir)/win32/lib/*.def "$(tccdir)/win32/lib" |
||
317 | $(INSTALL) -m644 lib/i386-win/libtcc1.a "$(tccdir)/win32/lib/32" |
||
318 | $(INSTALL) -m644 lib/x86_64-win/libtcc1.a "$(tccdir)/win32/lib/64" |
||
319 | cp -r $(top_srcdir)/win32/include/. "$(tccdir)/win32/include" |
||
320 | cp -r "$(tccdir)/include" "$(tccdir)/win32" |
||
321 | endif |
||
322 | |||
323 | uninstall: |
||
324 | rm -fv $(foreach P,$(PROGS),"$(bindir)/$P") |
||
325 | rm -fv "$(bindir)/tcc$(EXESUF)" |
||
326 | rm -fv $(foreach P,$(LIBTCC1),"$(tccdir)/$P") |
||
327 | rm -fv $(foreach P,$(TCC_INCLUDES),"$(tccdir)/include/$P") |
||
328 | rm -fv "$(mandir)/man1/tcc.1" "$(infodir)/tcc-doc.info" |
||
329 | rm -fv "$(libdir)/$(LIBTCC)" "$(includedir)/libtcc.h" |
||
330 | rm -fv "$(libdir)/libtcc.so*" |
||
331 | rm -rv "$(tccdir)" |
||
332 | rm -rv "$(docdir)" |
||
333 | else |
||
334 | # on windows |
||
335 | install: $(PROGS) $(TCCLIBS) $(TCCDOCS) |
||
336 | mkdir -p "$(tccdir)" |
||
337 | mkdir -p "$(tccdir)/lib" |
||
338 | mkdir -p "$(tccdir)/include" |
||
339 | mkdir -p "$(tccdir)/examples" |
||
340 | mkdir -p "$(tccdir)/doc" |
||
341 | mkdir -p "$(tccdir)/libtcc" |
||
342 | $(INSTALLBIN) -m755 $(PROGS) "$(tccdir)" |
||
343 | $(INSTALLBIN) -m755 tcc.exe "$(tccdir)" |
||
344 | $(INSTALL) -m644 $(LIBTCC1) $(top_srcdir)/win32/lib/*.def "$(tccdir)/lib" |
||
345 | cp -r $(top_srcdir)/win32/include/. "$(tccdir)/include" |
||
346 | cp -r $(top_srcdir)/win32/examples/. "$(tccdir)/examples" |
||
347 | $(INSTALL) -m644 $(addprefix $(top_srcdir)/include/,$(TCC_INCLUDES)) $(top_srcdir)/tcclib.h "$(tccdir)/include" |
||
348 | $(INSTALL) -m644 tcc-doc.html $(top_srcdir)/win32/tcc-win32.txt "$(tccdir)/doc" |
||
349 | $(INSTALL) -m644 $(top_srcdir)/libtcc.h $(LIBTCC_EXTRA) "$(tccdir)/libtcc" |
||
350 | $(INSTALL) -m644 $(LIBTCC) "$(tccdir)" |
||
351 | ifdef CONFIG_CROSS |
||
352 | mkdir -p "$(tccdir)/lib/32" |
||
353 | mkdir -p "$(tccdir)/lib/64" |
||
354 | -$(INSTALL) -m644 lib/i386-win/libtcc1.a "$(tccdir)/lib/32" |
||
355 | -$(INSTALL) -m644 lib/x86_64-win/libtcc1.a "$(tccdir)/lib/64" |
||
356 | endif |
||
357 | |||
358 | uninstall: |
||
359 | rm -rfv "$(tccdir)/*" |
||
360 | endif |
||
361 | |||
362 | # documentation and man page |
||
363 | tcc-doc.html: tcc-doc.texi |
||
364 | -makeinfo --no-split --html --number-sections -o $@ $< |
||
365 | |||
366 | tcc.1: tcc-doc.texi |
||
367 | -$(top_srcdir)/texi2pod.pl $< tcc.pod |
||
368 | -pod2man --section=1 --center="Tiny C Compiler" --release=`cat $(top_srcdir)/VERSION` tcc.pod > $@ |
||
369 | |||
370 | tcc-doc.info: tcc-doc.texi |
||
371 | -makeinfo $< |
||
372 | |||
373 | # in tests subdir |
||
374 | export LIBTCC1 |
||
375 | |||
376 | %est: |
||
377 | $(MAKE) -C tests $@ 'PROGS_CROSS=$(PROGS_CROSS)' |
||
378 | |||
379 | clean: |
||
380 | rm -vf $(PROGS) tcc_p$(EXESUF) tcc.pod *~ *.o *.a *.so* *.out *.log \ |
||
381 | *.exe a.out tags TAGS libtcc_test$(EXESUF) tcc$(EXESUF) |
||
382 | -rm -r $(ARCH) arm64 |
||
383 | ifeq ($(HOST_OS),Linux) |
||
384 | -rm -r ./C: |
||
385 | endif |
||
386 | -rm *-tcc$(EXESUF) |
||
387 | $(MAKE) -C tests $@ |
||
388 | ifneq ($(LIBTCC1),) |
||
389 | $(MAKE) -C lib $@ |
||
390 | endif |
||
391 | |||
392 | distclean: clean |
||
393 | rm -vf config.h config.mak config.texi tcc.1 tcc-doc.info tcc-doc.html |
||
394 | |||
395 | config.mak: |
||
396 | @echo "Please run ./configure." |
||
397 | @exit 1 |
||
398 | |||
399 | tags: |
||
400 | ctags $(top_srcdir)/*.[ch] $(top_srcdir)/include/*.h $(top_srcdir)/lib/*.[chS] |
||
401 | |||
402 | TAGS: |
||
403 | ctags -e $(top_srcdir)/*.[ch] $(top_srcdir)/include/*.h $(top_srcdir)/lib/*.[chS] |
||
404 | |||
405 | # create release tarball from *current* git branch (including tcc-doc.html |
||
406 | # and converting two files to CRLF) |
||
407 | TCC-VERSION := tcc-$(shell cat $(top_srcdir)/VERSION) |
||
408 | tar: tcc-doc.html |
||
409 | mkdir $(TCC-VERSION) |
||
410 | ( cd $(TCC-VERSION) && git --git-dir ../.git checkout -f ) |
||
411 | cp tcc-doc.html $(TCC-VERSION) |
||
412 | for f in tcc-win32.txt build-tcc.bat ; do \ |
||
413 | cat win32/$$f | sed 's,\(.*\),\1\r,g' > $(TCC-VERSION)/win32/$$f ; \ |
||
414 | done |
||
415 | tar cjf $(TCC-VERSION).tar.bz2 $(TCC-VERSION) |
||
416 | rm -rf $(TCC-VERSION) |
||
417 | git reset |
||
418 | |||
419 | .PHONY: all clean tar tags TAGS distclean install uninstall FORCE |
||
420 | |||
421 | endif # ifeq ($(TOP),.) |