Subversion Repositories Kolibri OS

Rev

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),.)