~ubuntu-branches/ubuntu/wily/tcc/wily-proposed

« back to all changes in this revision

Viewing changes to .pc/0003-Detect-multiarch-on-Kfreebsd-and-Hurd.patch/Makefile

  • Committer: Package Import Robot
  • Author(s): Thomas Preud'homme
  • Date: 2012-06-13 22:31:30 UTC
  • mfrom: (1.1.7)
  • Revision ID: package-import@ubuntu.com-20120613223130-14dujlcw1bj70jrh
Tags: 0.9.26~git20120612.ad5f375-3
* debian/patches:
  + Disable the new callsave_test test on arm since it uses alloca which is
    not supported on arm (yet).

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#
 
2
# Tiny C Compiler Makefile
 
3
#
 
4
 
 
5
TOP ?= .
 
6
include $(TOP)/config.mak
 
7
 
 
8
CFLAGS_P=$(CFLAGS) -pg -static -DCONFIG_TCC_STATIC
 
9
LIBS_P=
 
10
 
 
11
ifneq ($(GCC_MAJOR),2)
 
12
CFLAGS+=-fno-strict-aliasing
 
13
ifneq ($(GCC_MAJOR),3)
 
14
CFLAGS+=-Wno-pointer-sign -Wno-sign-compare -D_FORTIFY_SOURCE=0
 
15
endif
 
16
endif
 
17
 
 
18
ifneq ($(TARGETOS),Darwin)
 
19
ifeq ($(ARCH),i386)
 
20
CFLAGS+=-mpreferred-stack-boundary=2
 
21
ifeq ($(GCC_MAJOR),2)
 
22
CFLAGS+=-m386 -malign-functions=0
 
23
else
 
24
CFLAGS+=-march=i386 -falign-functions=0
 
25
endif
 
26
endif
 
27
endif
 
28
 
 
29
ifdef CONFIG_WIN64
 
30
CONFIG_WIN32=yes
 
31
endif
 
32
 
 
33
ifndef CONFIG_WIN32
 
34
LIBS=-lm
 
35
ifndef CONFIG_NOLDL
 
36
LIBS+=-ldl
 
37
endif
 
38
endif
 
39
 
 
40
ifeq ($(ARCH),i386)
 
41
NATIVE_DEFINES=-DTCC_TARGET_I386 
 
42
NATIVE_DEFINES+=$(if $(wildcard /lib/i386-linux-gnu),-DCONFIG_MULTIARCHDIR=\"i386-linux-gnu\")
 
43
CFLAGS+=-m32
 
44
else
 
45
ifeq ($(ARCH),x86-64)
 
46
NATIVE_DEFINES=-DTCC_TARGET_X86_64
 
47
CFLAGS+=-m64
 
48
NATIVE_DEFINES+=$(if $(wildcard /usr/lib64),-DCONFIG_LDDIR=\"lib64\")
 
49
NATIVE_DEFINES+=$(if $(wildcard /lib/x86_64-linux-gnu),-DCONFIG_MULTIARCHDIR=\"x86_64-linux-gnu\")
 
50
endif
 
51
endif
 
52
 
 
53
ifeq ($(ARCH),arm)
 
54
NATIVE_DEFINES=-DTCC_TARGET_ARM
 
55
NATIVE_DEFINES+=-DWITHOUT_LIBTCC
 
56
NATIVE_DEFINES+=$(if $(wildcard /lib/ld-linux.so.3),-DTCC_ARM_EABI)
 
57
NATIVE_DEFINES+=$(if $(wildcard /lib/arm-linux-gnueabi),-DCONFIG_MULTIARCHDIR=\"arm-linux-gnueabi\")
 
58
NATIVE_DEFINES+=$(if $(shell grep -l "^Features.* \(vfp\|iwmmxt\) " /proc/cpuinfo),-DTCC_ARM_VFP)
 
59
# To use ARM hardfloat calling convension
 
60
#NATIVE_DEFINES+=-DTCC_ARM_HARDFLOAT
 
61
endif
 
62
 
 
63
ifdef CONFIG_WIN32
 
64
NATIVE_DEFINES+=-DTCC_TARGET_PE
 
65
endif
 
66
 
 
67
ifneq ($(wildcard /lib/ld-uClibc.so.0),)
 
68
NATIVE_DEFINES+=-DTCC_UCLIBC
 
69
CONFIG_UCLIBC = 1
 
70
endif
 
71
 
 
72
# make libtcc as static or dynamic library?
 
73
ifdef DISABLE_STATIC
 
74
LIBTCC=libtcc.so.1.0
 
75
LINK_LIBTCC=-Wl,-rpath,"$(libdir)"
 
76
ifdef DISABLE_RPATH
 
77
LINK_LIBTCC=
 
78
endif
 
79
else
 
80
LIBTCC=libtcc.a
 
81
LINK_LIBTCC=
 
82
endif
 
83
 
 
84
ifeq ($(TOP),.)
 
85
 
 
86
PROGS=tcc$(EXESUF)
 
87
I386_CROSS = i386-tcc$(EXESUF)
 
88
WIN32_CROSS = i386-win32-tcc$(EXESUF)
 
89
WIN64_CROSS = x86_64-win32-tcc$(EXESUF)
 
90
WINCE_CROSS = arm-win32-tcc$(EXESUF)
 
91
X64_CROSS = x86_64-tcc$(EXESUF)
 
92
ARM_FPA_CROSS = arm-fpa-tcc$(EXESUF)
 
93
ARM_FPA_LD_CROSS = arm-fpa-ld-tcc$(EXESUF)
 
94
ARM_VFP_CROSS = arm-vfp-tcc$(EXESUF)
 
95
ARM_EABI_CROSS = arm-eabi-tcc$(EXESUF)
 
96
ARM_CROSS = $(ARM_FPA_CROSS) $(ARM_FPA_LD_CROSS) $(ARM_VFP_CROSS) $(ARM_EABI_CROSS)
 
97
C67_CROSS = c67-tcc$(EXESUF)
 
98
 
 
99
CORE_FILES = tcc.c libtcc.c tccpp.c tccgen.c tccelf.c tccasm.c tccrun.c
 
100
CORE_FILES += tcc.h config.h libtcc.h tcctok.h
 
101
I386_FILES = $(CORE_FILES) i386-gen.c i386-asm.c i386-asm.h i386-tok.h
 
102
WIN32_FILES = $(CORE_FILES) i386-gen.c i386-asm.c i386-asm.h i386-tok.h tccpe.c
 
103
WIN64_FILES = $(CORE_FILES) x86_64-gen.c i386-asm.c x86_64-asm.h tccpe.c
 
104
WINCE_FILES = $(CORE_FILES) arm-gen.c tccpe.c
 
105
X86_64_FILES = $(CORE_FILES) x86_64-gen.c i386-asm.c x86_64-asm.h
 
106
ARM_FILES = $(CORE_FILES) arm-gen.c
 
107
C67_FILES = $(CORE_FILES) c67-gen.c tcccoff.c
 
108
 
 
109
ifdef CONFIG_WIN64
 
110
PROGS+=tiny_impdef$(EXESUF) tiny_libmaker$(EXESUF)
 
111
NATIVE_FILES=$(WIN64_FILES)
 
112
PROGS_CROSS=$(WIN32_CROSS) $(I386_CROSS) $(X64_CROSS) $(ARM_CROSS) $(C67_CROSS)
 
113
LIBTCC1_CROSS=lib/i386-win32/libtcc1.a
 
114
LIBTCC1=libtcc1.a
 
115
else
 
116
ifdef CONFIG_WIN32
 
117
PROGS+=tiny_impdef$(EXESUF) tiny_libmaker$(EXESUF)
 
118
NATIVE_FILES=$(WIN32_FILES)
 
119
PROGS_CROSS=$(WIN64_CROSS) $(I386_CROSS) $(X64_CROSS) $(ARM_CROSS) $(C67_CROSS)
 
120
LIBTCC1_CROSS=lib/x86_64-win32/libtcc1.a
 
121
LIBTCC1=libtcc1.a
 
122
else
 
123
ifeq ($(ARCH),i386)
 
124
NATIVE_FILES=$(I386_FILES)
 
125
PROGS_CROSS=$(X64_CROSS) $(WIN32_CROSS) $(WIN64_CROSS) $(ARM_CROSS) $(C67_CROSS)
 
126
LIBTCC1_CROSS=lib/i386-win32/libtcc1.a lib/x86_64-win32/libtcc1.a
 
127
LIBTCC1=libtcc1.a
 
128
BCHECK_O=bcheck.o
 
129
else
 
130
ifeq ($(ARCH),x86-64)
 
131
NATIVE_FILES=$(X86_64_FILES)
 
132
PROGS_CROSS=$(I386_CROSS) $(WIN32_CROSS) $(WIN64_CROSS) $(ARM_CROSS) $(C67_CROSS)
 
133
LIBTCC1_CROSS=lib/i386-win32/libtcc1.a lib/x86_64-win32/libtcc1.a lib/i386/libtcc1.a
 
134
LIBTCC1=libtcc1.a
 
135
else
 
136
ifeq ($(ARCH),arm)
 
137
NATIVE_FILES=$(ARM_FILES)
 
138
PROGS_CROSS=$(I386_CROSS) $(X64_CROSS) $(WIN32_CROSS) $(WIN64_CROSS) $(C67_CROSS)
 
139
endif
 
140
endif
 
141
endif
 
142
endif
 
143
endif
 
144
 
 
145
ifdef CONFIG_UCLIBC
 
146
BCHECK_O=
 
147
endif
 
148
ifeq ($(TARGETOS),Darwin)
 
149
BCHECK_O=
 
150
PROGS+=tiny_libmaker$(EXESUF)
 
151
endif
 
152
 
 
153
ifdef CONFIG_USE_LIBGCC
 
154
LIBTCC1=
 
155
endif
 
156
 
 
157
TCCLIBS = $(LIBTCC1) $(LIBTCC) $(BCHECK_O)
 
158
TCCDOCS = tcc.1 tcc-doc.html tcc-doc.info
 
159
 
 
160
ifdef CONFIG_CROSS
 
161
PROGS+=$(PROGS_CROSS)
 
162
TCCLIBS+=$(LIBTCC1_CROSS)
 
163
endif
 
164
 
 
165
all: $(PROGS) $(TCCLIBS) $(TCCDOCS)
 
166
 
 
167
# Host Tiny C Compiler
 
168
tcc$(EXESUF): tcc.o $(LIBTCC)
 
169
        $(CC) -o $@ $^ $(LIBS) $(CFLAGS) $(LDFLAGS) $(LINK_LIBTCC)
 
170
 
 
171
# Cross Tiny C Compilers
 
172
%-tcc$(EXESUF):
 
173
        $(CC) -o $@ tcc.c -DONE_SOURCE $(DEFINES) $(CFLAGS) $(LIBS) $(LDFLAGS)
 
174
 
 
175
$(I386_CROSS): DEFINES = -DTCC_TARGET_I386 \
 
176
    -DCONFIG_TCCDIR="\"$(tccdir)/i386\""
 
177
$(X64_CROSS): DEFINES = -DTCC_TARGET_X86_64
 
178
$(WIN32_CROSS): DEFINES = -DTCC_TARGET_I386 -DTCC_TARGET_PE \
 
179
    -DCONFIG_TCCDIR="\"$(tccdir)/win32\"" \
 
180
    -DCONFIG_TCC_LIBPATHS="\"{B}/lib/32;{B}/lib\""
 
181
$(WIN64_CROSS): DEFINES = -DTCC_TARGET_X86_64 -DTCC_TARGET_PE \
 
182
    -DCONFIG_TCCDIR="\"$(tccdir)/win32\"" \
 
183
    -DCONFIG_TCC_LIBPATHS="\"{B}/lib/64;{B}/lib\""
 
184
$(WINCE_CROSS): DEFINES = -DTCC_TARGET_PE
 
185
$(C67_CROSS): DEFINES = -DTCC_TARGET_C67
 
186
$(ARM_FPA_CROSS): DEFINES = -DTCC_TARGET_ARM
 
187
$(ARM_FPA_LD_CROSS)$(EXESUF): DEFINES = -DTCC_TARGET_ARM -DLDOUBLE_SIZE=12
 
188
$(ARM_VFP_CROSS): DEFINES = -DTCC_TARGET_ARM -DTCC_ARM_VFP
 
189
$(ARM_EABI_CROSS): DEFINES = -DTCC_TARGET_ARM -DTCC_ARM_EABI
 
190
 
 
191
$(I386_CROSS): $(I386_FILES)
 
192
$(X64_CROSS): $(X86_64_FILES)
 
193
$(WIN32_CROSS): $(WIN32_FILES)
 
194
$(WIN64_CROSS): $(WIN64_FILES)
 
195
$(WINCE_CROSS): $(WINCE_FILES)
 
196
$(C67_CROSS): $(C67_FILES)
 
197
$(ARM_FPA_CROSS) $(ARM_FPA_LD_CROSS) $(ARM_VFP_CROSS) $(ARM_EABI_CROSS): $(ARM_FILES)
 
198
 
 
199
# libtcc generation and test
 
200
ifndef ONE_SOURCE
 
201
LIBTCC_OBJ = $(filter-out tcc.o,$(patsubst %.c,%.o,$(filter %.c,$(NATIVE_FILES))))
 
202
LIBTCC_INC = $(filter %.h,$(CORE_FILES)) $(filter-out $(CORE_FILES),$(NATIVE_FILES))
 
203
else
 
204
LIBTCC_OBJ = libtcc.o
 
205
LIBTCC_INC = $(NATIVE_FILES)
 
206
libtcc.o : NATIVE_DEFINES += -DONE_SOURCE
 
207
endif
 
208
 
 
209
$(LIBTCC_OBJ) tcc.o : %.o : %.c $(LIBTCC_INC)
 
210
        $(CC) -o $@ -c $< $(NATIVE_DEFINES) $(CFLAGS)
 
211
 
 
212
libtcc.a: $(LIBTCC_OBJ)
 
213
        $(AR) rcs $@ $^
 
214
 
 
215
libtcc.so.1.0: $(LIBTCC_OBJ)
 
216
        $(CC) -shared -Wl,-soname,$@ -o $@ $^
 
217
 
 
218
libtcc.so.1.0: CFLAGS+=-fPIC
 
219
 
 
220
# profiling version
 
221
tcc_p$(EXESUF): $(NATIVE_FILES)
 
222
        $(CC) -o $@ $< $(NATIVE_DEFINES) $(CFLAGS_P) $(LIBS_P)
 
223
 
 
224
# windows utilities
 
225
tiny_impdef$(EXESUF): win32/tools/tiny_impdef.c
 
226
        $(CC) -o $@ $< $(CFLAGS)
 
227
tiny_libmaker$(EXESUF): win32/tools/tiny_libmaker.c
 
228
        $(CC) -o $@ $< $(CFLAGS)
 
229
 
 
230
# TinyCC runtime libraries
 
231
libtcc1.a : FORCE
 
232
        @$(MAKE) -C lib native
 
233
lib/%/libtcc1.a : FORCE $(PROGS_CROSS)
 
234
        @$(MAKE) -C lib cross TARGET=$*
 
235
bcheck.o : lib/bcheck.c
 
236
        gcc -c $< -o $@ $(CFLAGS)
 
237
FORCE:
 
238
 
 
239
# install
 
240
TCC_INCLUDES = stdarg.h stddef.h stdbool.h float.h varargs.h tcclib.h
 
241
INSTALL=install
 
242
ifdef STRIP_BINARIES
 
243
INSTALLBIN=$(INSTALL) -s
 
244
else
 
245
INSTALLBIN=$(INSTALL)
 
246
endif
 
247
 
 
248
ifndef CONFIG_WIN32
 
249
install: $(PROGS) $(TCCLIBS) $(TCCDOCS)
 
250
        mkdir -p "$(bindir)"
 
251
ifeq ($(CC),tcc)
 
252
        $(INSTALL) -m755 $(PROGS) "$(bindir)"
 
253
else
 
254
        $(INSTALLBIN) -m755 $(PROGS) "$(bindir)"
 
255
endif
 
256
        mkdir -p "$(mandir)/man1"
 
257
        -$(INSTALL) tcc.1 "$(mandir)/man1"
 
258
        mkdir -p "$(infodir)"
 
259
        -$(INSTALL) tcc-doc.info "$(infodir)"
 
260
        mkdir -p "$(tccdir)"
 
261
        mkdir -p "$(tccdir)/include"
 
262
ifneq ($(LIBTCC1),)
 
263
        $(INSTALL) -m644 $(LIBTCC1) "$(tccdir)"
 
264
endif
 
265
ifneq ($(BCHECK_O),)
 
266
        $(INSTALL) -m644 $(BCHECK_O) "$(tccdir)"
 
267
endif
 
268
        $(INSTALL) -m644 $(addprefix include/,$(TCC_INCLUDES)) "$(tccdir)/include"
 
269
        mkdir -p "$(libdir)"
 
270
        $(INSTALL) -m755 $(LIBTCC) "$(libdir)"
 
271
ifdef DISABLE_STATIC
 
272
        ln -sf "$(ln_libdir)/libtcc.so.1.0" "$(libdir)/libtcc.so.1"
 
273
        ln -sf "$(ln_libdir)/libtcc.so.1.0" "$(libdir)/libtcc.so"
 
274
endif
 
275
        mkdir -p "$(includedir)"
 
276
        $(INSTALL) -m644 libtcc.h "$(includedir)"
 
277
        mkdir -p "$(docdir)"
 
278
        -$(INSTALL) -m644 tcc-doc.html "$(docdir)"
 
279
ifdef CONFIG_CROSS
 
280
        mkdir -p "$(tccdir)/win32/lib/32"
 
281
        mkdir -p "$(tccdir)/win32/lib/64"
 
282
ifeq ($(ARCH),x86-64)
 
283
        mkdir -p "$(tccdir)/i386"
 
284
        $(INSTALL) -m644 lib/i386/libtcc1.a "$(tccdir)/i386"
 
285
        cp -r "$(tccdir)/include" "$(tccdir)/i386"
 
286
endif
 
287
        $(INSTALL) -m644 win32/lib/*.def "$(tccdir)/win32/lib"
 
288
        $(INSTALL) -m644 lib/i386-win32/libtcc1.a "$(tccdir)/win32/lib/32"
 
289
        $(INSTALL) -m644 lib/x86_64-win32/libtcc1.a "$(tccdir)/win32/lib/64"
 
290
        cp -r win32/include/. "$(tccdir)/win32/include"
 
291
        cp -r include/. "$(tccdir)/win32/include"
 
292
endif
 
293
 
 
294
uninstall:
 
295
        rm -fv $(foreach P,$(PROGS),"$(bindir)/$P")
 
296
        rm -fv $(foreach P,$(LIBTCC1) $(BCHECK_O),"$(tccdir)/$P")
 
297
        rm -fv $(foreach P,$(TCC_INCLUDES),"$(tccdir)/include/$P")
 
298
        rm -fv "$(docdir)/tcc-doc.html" "$(mandir)/man1/tcc.1" "$(infodir)/tcc-doc.info"
 
299
        rm -fv "$(libdir)/$(LIBTCC)" "$(includedir)/libtcc.h"
 
300
        rm -fv "$(libdir)/libtcc.so*"
 
301
        rm -rf "$(tccdir)/win32"
 
302
        -rmdir $(tccdir)/include
 
303
ifeq ($(ARCH),x86-64)
 
304
        rm -rf "$(tccdir)/i386"
 
305
endif
 
306
else
 
307
# on windows
 
308
install: $(PROGS) $(TCCLIBS) $(TCCDOCS)
 
309
        mkdir -p "$(tccdir)"
 
310
        mkdir -p "$(tccdir)/lib"
 
311
        mkdir -p "$(tccdir)/include"
 
312
        mkdir -p "$(tccdir)/examples"
 
313
        mkdir -p "$(tccdir)/doc"
 
314
        mkdir -p "$(tccdir)/libtcc"
 
315
        $(INSTALLBIN) -m755 $(PROGS) "$(tccdir)"
 
316
        $(INSTALL) -m644 $(LIBTCC1) win32/lib/*.def "$(tccdir)/lib"
 
317
        cp -r win32/include/. "$(tccdir)/include"
 
318
        cp -r win32/examples/. "$(tccdir)/examples"
 
319
        $(INSTALL) -m644 $(addprefix include/,$(TCC_INCLUDES)) "$(tccdir)/include"
 
320
        $(INSTALL) -m644 tcc-doc.html win32/tcc-win32.txt "$(tccdir)/doc"
 
321
        $(INSTALL) -m644 $(LIBTCC) libtcc.h "$(tccdir)/libtcc"
 
322
ifdef CONFIG_CROSS
 
323
        mkdir -p "$(tccdir)/lib/32"
 
324
        mkdir -p "$(tccdir)/lib/64"
 
325
        -$(INSTALL) -m644 lib/i386-win32/libtcc1.a "$(tccdir)/lib/32"
 
326
        -$(INSTALL) -m644 lib/x86_64-win32/libtcc1.a "$(tccdir)/lib/64"
 
327
endif
 
328
 
 
329
uninstall:
 
330
        rm -rfv "$(tccdir)/*"
 
331
endif
 
332
 
 
333
# documentation and man page
 
334
tcc-doc.html: tcc-doc.texi
 
335
        -texi2html -monolithic -number $<
 
336
 
 
337
tcc.1: tcc-doc.texi
 
338
        -./texi2pod.pl $< tcc.pod
 
339
        -pod2man --section=1 --center=" " --release=" " tcc.pod > $@
 
340
 
 
341
tcc-doc.info: tcc-doc.texi
 
342
        -makeinfo tcc-doc.texi
 
343
 
 
344
.PHONY: all clean tar distclean install uninstall FORCE
 
345
 
 
346
# tar release (use 'make -k tar' on a checkouted tree)
 
347
TCC-VERSION=tcc-$(shell cat VERSION)
 
348
tar:
 
349
        rm -rf /tmp/$(TCC-VERSION)
 
350
        cp -r . /tmp/$(TCC-VERSION)
 
351
        ( cd /tmp ; tar zcvf ~/$(TCC-VERSION).tar.gz $(TCC-VERSION) --exclude CVS )
 
352
        rm -rf /tmp/$(TCC-VERSION)
 
353
 
 
354
# in tests subdir
 
355
export LIBTCC1
 
356
 
 
357
%est:
 
358
        $(MAKE) -C tests $@
 
359
 
 
360
clean:
 
361
        rm -vf $(PROGS) tcc_p$(EXESUF) tcc.pod *~ *.o *.a *.so* *.out *.exe libtcc_test$(EXESUF)
 
362
        $(MAKE) -C tests $@
 
363
ifneq ($(LIBTCC1),)
 
364
        $(MAKE) -C lib $@
 
365
endif
 
366
 
 
367
distclean: clean
 
368
        rm -vf config.h config.mak config.texi tcc.1 tcc-doc.info tcc-doc.html
 
369
 
 
370
config.mak:
 
371
        @echo "Please run ./configure."
 
372
        @exit 1
 
373
 
 
374
endif # ifeq ($(TOP),.)