Subversion Repositories Kolibri OS

Rev

Rev 6410 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 6410 Rev 6429
Line -... Line 1...
-
 
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
1
OUTFILE = ktcc.kex
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)
2
OBJS = tcc.o console.o getcwd.o 
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
3
CGLAGS =-O2 -g -Wall  -mpreferred-stack-boundary=2 -march=i386 -falign-functions=0 -fno-strict-aliasing 
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:
4
include Makefile_for_program
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),.)