2 # Tiny C Compiler Makefile
8 CFLAGS_P
=$(CFLAGS
) -pg
-static
-DCONFIG_TCC_STATIC
11 CFLAGS
+=-mpreferred-stack-boundary
=2
13 CFLAGS
+=-m386
-malign-functions
=0
15 CFLAGS
+=-march
=i386
-falign-functions
=0
21 # run local version of tcc with local libraries and includes
24 all: tcc libtcc1.a bcheck.o tcc-doc.html tcc
.1 libtcc.a libtcc_test
30 test: test.ref
test.out
31 @if diff
-u
test.ref
test.out
; then echo
"Auto Test OK"; fi
33 tcctest.ref
: tcctest.c
34 $(CC
) $(CFLAGS
) -I.
-o
$@
$<
39 test.out
: tcc tcctest.c
40 $(TCC
) -run tcctest.c
> $@
45 # iterated test2 (compile tcc then compile tcctest.c !)
46 test2
: tcc tcc.c tcctest.c
test.ref
47 $(TCC
) -run tcc.c
-B.
-I.
-run tcctest.c
> test.out2
48 @if diff
-u
test.ref
test.out2
; then echo
"Auto Test2 OK"; fi
50 # iterated test3 (compile tcc then compile tcc then compile tcctest.c !)
51 test3
: tcc tcc.c tcctest.c
test.ref
52 $(TCC
) -run tcc.c
-B.
-I.
-run tcc.c
-B.
-I.
-run tcctest.c
> test.out3
53 @if diff
-u
test.ref
test.out3
; then echo
"Auto Test3 OK"; fi
58 $(TCC
) -o tcctest1 tcctest.c
59 .
/tcctest1
> test1.out
60 @if diff
-u
test.ref test1.out
; then echo
"Dynamic Auto Test OK"; fi
62 $(TCC
) -static
-o tcctest2 tcctest.c
63 .
/tcctest2
> test2.out
64 @if diff
-u
test.ref test2.out
; then echo
"Static Auto Test OK"; fi
65 # object + link output
66 $(TCC
) -c
-o tcctest3.o tcctest.c
67 $(TCC
) -o tcctest3 tcctest3.o
68 .
/tcctest3
> test3.out
69 @if diff
-u
test.ref test3.out
; then echo
"Object Auto Test OK"; fi
70 # dynamic output + bound check
71 $(TCC
) -b
-o tcctest4 tcctest.c
72 .
/tcctest4
> test4.out
73 @if diff
-u
test.ref test4.out
; then echo
"BCheck Auto Test OK"; fi
75 # memory and bound check auto test
77 BOUNDS_FAIL
= 2 5 7 9 11 12 13
79 btest
: boundtest.c tcc
80 @for i in
$(BOUNDS_OK
); do \
81 if
$(TCC
) -b
-run boundtest.c
$$i ; then \
84 echo Failed positive
test $$i ; exit
1 ; \
87 for i in
$(BOUNDS_FAIL
); do \
88 if
$(TCC
) -b
-run boundtest.c
$$i ; then \
89 echo Failed negative
test $$i ; exit
1 ;\
98 time .
/ex2
1238 2 3 4 10 13 4
99 time .
/tcc
-I. .
/ex2.c
1238 2 3 4 10 13 4
101 time .
/tcc
-I. .
/ex3.c
35
104 $(CC
) $(CFLAGS
) -o
$@
$<
107 $(CC
) $(CFLAGS
) -o
$@
$<
109 # Native Tiny C Compiler
111 tcc_g
: tcc.c i386-gen.c tccelf.c tccasm.c i386-asm.c tcctok.h libtcc.h i386-asm.h Makefile
112 $(CC
) $(CFLAGS
) -o
$@
$< $(LIBS
)
115 strip -s
-R .comment
-R .note
-o
$@
$<
117 # TinyCC runtime libraries
119 $(CC
) -O2
-Wall
-c
-o
$@
$<
125 $(CC
) -O2
-Wall
-c
-o
$@
$<
127 install: tcc_install libinstall
129 tcc_install
: tcc tcc
.1 libtcc1.a bcheck.o
131 $(INSTALL
) -m755 tcc
$(bindir)
132 mkdir
-p
$(mandir)/man1
133 $(INSTALL
) tcc
.1 $(mandir)/man1
134 mkdir
-p
$(libdir)/tcc
135 mkdir
-p
$(libdir)/tcc
/include
136 $(INSTALL
) -m644 libtcc1.a bcheck.o
$(libdir)/tcc
137 $(INSTALL
) -m644 stdarg.h stddef.h stdbool.h float.h varargs.h \
138 tcclib.h
$(libdir)/tcc
/include
141 rm -f
*~
*.o tcc tcc1 tcct tcc_g tcctest.ref
*.bin
*.i ex2 \
142 core gmon.out
test.out
test.ref a.out tcc_p \
143 *.exe tcc-doc.html tcc.pod tcc
.1 libtcc.a libtcc_test \
144 tcctest
[1234] test[1234].out
147 rm -f config.h config.mak config.texi
150 tcc_g.exe
: tcc.c i386-gen.c bcheck.c Makefile
151 i386-mingw32msvc-gcc
$(CFLAGS
) -DCONFIG_TCC_STATIC
-o
$@
$<
154 i386-mingw32msvc-strip
-o
$@
$<
157 tcc_p
: tcc.c Makefile
158 $(CC
) $(CFLAGS_P
) -o
$@
$< $(LIBS_P
)
160 # libtcc generation and example
163 $(INSTALL
) -m644 libtcc.a
$(libdir)
164 mkdir
-p
$(includedir)
165 $(INSTALL
) -m644 libtcc.h
$(includedir)
167 libtcc.o
: tcc.c i386-gen.c bcheck.c Makefile
168 $(CC
) $(CFLAGS
) -DLIBTCC
-c
-o
$@
$<
173 libtcc_test
: libtcc_test.c libtcc.a
174 $(CC
) $(CFLAGS
) -I.
-o
$@
$< -L.
-ltcc
-ldl
179 # targets for development
188 # tiny assembler testing
190 asmtest.ref
: asmtest.S
191 $(CC
) -c
-o asmtest.ref.o asmtest.S
192 objdump
-D asmtest.ref.o
> $@
194 # XXX: we compute tcc.c to go faster during development !
195 asmtest.out
: asmtest.S tcc
196 # ./tcc tcc.c -c asmtest.S
197 #asmtest.out: asmtest.S tcc
199 objdump
-D asmtest.o
> $@
201 asmtest
: asmtest.out asmtest.ref
202 @if diff
-u
--ignore-matching-lines
="file format" asmtest.ref asmtest.out
; then echo
"ASM Auto Test OK"; fi
205 $(CC
) -O2
-Wall
-g
-c
-o
$@
$<
208 cachegrind .
/tcc_g
-o
/tmp
/linpack
-lm bench
/linpack.c
209 vg_annotate tcc.c
> /tmp
/linpack.cache.log
211 # documentation and man page
212 tcc-doc.html
: tcc-doc.texi
213 texi2html
-monolithic
-number
$<
216 .
/texi2pod.pl
$< tcc.pod
217 pod2man
--section
=1 --center
=" " --release
=" " tcc.pod
> $@
219 FILES
= Makefile Makefile.uClibc configure VERSION \
220 README TODO COPYING \
221 Changelog tcc-doc.texi tcc-doc.html \
223 tcc.c i386-gen.c tccelf.c tcctok.h tccasm.c i386-asm.c i386-asm.h\
225 elf.h stab.h stab.def \
226 stddef.h stdarg.h stdbool.h float.h varargs.h \
227 tcclib.h libtcc.h libtcc_test.c \
228 ex1.c ex2.c ex3.c ex4.c ex5.c \
229 tcctest.c boundtest.c gcctestsuite.sh texi2pod.pl
235 mkdir
-p
/tmp
/$(FILE
)
236 cp
-P
$(FILES
) /tmp
/$(FILE
)
237 ( cd
/tmp
; tar zcvf ~
/$(FILE
).
tar.gz
$(FILE
) )