]>
Commit | Line | Data |
---|---|---|
6cfea11b TJ |
1 | # Top level makefile fragment for TREELANG For GCC. -*- makefile -*- |
2 | ||
44cabb12 | 3 | # Copyright (C) 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, |
edf06e44 | 4 | # 2006, 2007 Free Software Foundation, Inc. |
6cfea11b | 5 | |
edf06e44 | 6 | # This file is part of GCC. |
6cfea11b | 7 | |
edf06e44 NC |
8 | # GCC is free software; you can redistribute it and/or modify |
9 | # it under the terms of the GNU General Public License as published by | |
10 | # the Free Software Foundation; either version 3, or (at your option) | |
11 | # any later version. | |
6cfea11b | 12 | |
edf06e44 NC |
13 | # GCC is distributed in the hope that it will be useful, |
14 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 | # GNU General Public License for more details. | |
17 | ||
18 | # You should have received a copy of the GNU General Public License | |
19 | # along with GCC; see the file COPYING3. If not see | |
20 | # <http://www.gnu.org/licenses/>. | |
6cfea11b | 21 | |
6cfea11b TJ |
22 | |
23 | # This file provides the language dependent support in the main Makefile. | |
24 | # Each language makefile fragment must provide the following targets: | |
25 | # | |
bd97af06 | 26 | # foo.all.cross, foo.start.encap, foo.rest.encap, |
e1eefa15 BM |
27 | # foo.install-common, foo.install-man, foo.install-info, foo.install-pdf, |
28 | # foo.info, foo.dvi, foo.pdf, foo.html, foo.uninstall, | |
a03ad584 | 29 | # foo.mostlyclean, foo.clean, foo.distclean, |
6cfea11b TJ |
30 | # foo.maintainer-clean, foo.stage1, foo.stage2, foo.stage3, foo.stage4 |
31 | # | |
32 | # where `foo' is the name of the language. | |
33 | # | |
34 | # It should also provide rules for: | |
35 | # | |
597eb1d7 JM |
36 | # - making any compiler driver (eg: gcc) |
37 | # - the compiler proper (eg: tree1) | |
6cfea11b TJ |
38 | # - define the names for selecting the language in LANGUAGES. |
39 | #\f | |
40 | ||
41 | ## note program-prefix and program-suffix options are not supported | |
42 | ## just program_transform_name which is a sed script to transform the | |
43 | ## names | |
44 | ||
45 | TREELANGSED = sed | |
46 | TREELANGSEDFLAGS = -n | |
47 | ||
6cfea11b TJ |
48 | GCC_EXTRAS = -B./ -B$(build_tooldir)/bin/ -isystem $(build_tooldir)/include |
49 | ||
50 | # ./xgcc is the just built compiler. See GCC_FOR_TARGET in the GCC Makefile.in. | |
51 | # If this can't be found, you probably have not done a bootstrap of GCC, | |
52 | # which you need to do. | |
53 | ||
54 | # GCC_FOR_TREELANG = ./xgcc $(GCC_EXTRAS) | |
55 | ||
03787dfd | 56 | TREE_GENERATED = lex.c parse.c parse.h parse.output |
597eb1d7 JM |
57 | # We need to use something other than treelang here because the directory |
58 | # is called treelang | |
59 | TREE_EXES = gtreelang | |
6cfea11b | 60 | |
1daf6f3a ZW |
61 | #strict warnings for treelang |
62 | treelang-warn = $(STRICT_WARN) | |
e5fcbd77 MM |
63 | # bison emits some unused static arrays (yytoknum) |
64 | treelang/parse.o-warn = -Wno-error | |
046e4e36 ZW |
65 | # flex produces 'no previous prototype' warnings |
66 | treelang/lex.o-warn = -Wno-error | |
6cfea11b TJ |
67 | |
68 | #\f | |
69 | # Define the names for selecting treelang in LANGUAGES. | |
70 | ||
9d29a5b7 | 71 | .phony: treelang |
6cfea11b | 72 | |
9d29a5b7 | 73 | treelang:treelang.done |
6cfea11b | 74 | |
597eb1d7 | 75 | treelang.done: gtreelang$(exeext) tree1$(exeext) |
6cfea11b TJ |
76 | $(STAMP) treelang.done |
77 | ||
78 | # no preprocessor | |
79 | ||
e5fcbd77 | 80 | # core compiler |
31c56a8b FH |
81 | tree1$(exeext): treelang/tree1.o treelang/treetree.o treelang/tree-convert.o \ |
82 | treelang/lex.o treelang/parse.o \ | |
352a77c8 | 83 | $(BACKEND) $(LIBSDEPS) attribs.o |
6cfea11b | 84 | $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ \ |
31c56a8b FH |
85 | treelang/tree1.o treelang/treetree.o treelang/tree-convert.o \ |
86 | treelang/lex.o treelang/parse.o \ | |
72fb133f | 87 | $(BACKEND) $(LIBS) attribs.o $(GMPLIBS) |
6cfea11b | 88 | |
597eb1d7 | 89 | # Create the compiler driver treelang. |
14c7833c | 90 | gtreelang$(exeext): $(GCC_OBJS) version.o prefix.o intl.o $(EXTRA_GCC_OBJS) \ |
597eb1d7 JM |
91 | $(LIBDEPS) treelang/spec.o |
92 | $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ treelang/spec.o \ | |
14c7833c | 93 | $(GCC_OBJS) version.o prefix.o intl.o $(EXTRA_GCC_OBJS) $(LIBS) |
597eb1d7 JM |
94 | |
95 | ||
96 | ||
6cfea11b TJ |
97 | #\f |
98 | # Compiling object files from source files. | |
99 | ||
100 | # object file makes | |
101 | ||
4977bab6 | 102 | treelang/tree1.o: treelang/tree1.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ |
48779194 | 103 | $(FLAGS_H) toplev.h $(GGC_H) $(TREE_H) $(DIAGNOSTIC_H) treelang/treelang.h \ |
9cffadfb | 104 | input.h treelang/treetree.h options.h opts.h \ |
4977bab6 ZW |
105 | treelang/treetree.h gt-treelang-tree1.h gtype-treelang.h |
106 | ||
107 | treelang/treetree.o: treelang/treetree.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ | |
48779194 VR |
108 | $(TM_H) $(TREE_H) $(FLAGS_H) output.h $(RTL_H) $(GGC_H) toplev.h \ |
109 | $(VARRAY_H) $(LANGHOOKS_DEF_H) langhooks.h treelang/treelang.h input.h \ | |
05b44921 | 110 | treelang/treetree.h treelang/parse.h $(TARGET_H) |
4977bab6 | 111 | |
9cffadfb | 112 | treelang/tree-convert.o: treelang/tree-convert.c $(CONFIG_H) $(SYSTEM_H) \ |
48779194 | 113 | coretypes.h $(DIAGNOSTIC_H) $(TREE_H) $(FLAGS_H) toplev.h langhooks.h $(TM_H) |
31c56a8b | 114 | |
597eb1d7 | 115 | treelang/spec.o: treelang/spec.c $(CONFIG_H) $(SYSTEM_H) \ |
48779194 | 116 | coretypes.h $(DIAGNOSTIC_H) $(TREE_H) $(FLAGS_H) toplev.h langhooks.h $(TM_H) |
597eb1d7 | 117 | |
03787dfd | 118 | treelang/parse.o: treelang/parse.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ |
48779194 | 119 | $(TM_H) $(DIAGNOSTIC_H) treelang/treelang.h input.h treelang/treetree.h \ |
4c714dd4 | 120 | toplev.h |
4977bab6 | 121 | |
03787dfd | 122 | treelang/lex.o: treelang/lex.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ |
48779194 | 123 | $(TM_H) $(DIAGNOSTIC_H) $(TREE_H) treelang/treelang.h input.h \ |
4c714dd4 | 124 | treelang/parse.h toplev.h |
6cfea11b TJ |
125 | |
126 | # generated files the files from lex and yacc are put into the source | |
127 | # directory in case someone wants to build but does not have | |
128 | # lex/yacc | |
129 | ||
03787dfd KC |
130 | treelang.srcextra: treelang/parse.c treelang/parse.h treelang/lex.c |
131 | -cp -p $^ $(srcdir)/treelang | |
132 | ||
133 | treelang/lex.c: treelang/lex.l | |
134 | -$(FLEX) $(FLEXFLAGS) -o$@ $< | |
6cfea11b | 135 | |
03787dfd KC |
136 | treelang/parse.c treelang/parse.h treelang/parse.output: treelang/parse.y |
137 | -$(BISON) $(BISONFLAGS) -v --defines --output=treelang/parse.c $< | |
7fb26bb0 | 138 | |
6cfea11b TJ |
139 | # -v |
140 | ||
141 | #\f | |
142 | # Build hooks: | |
143 | ||
e5fcbd77 | 144 | treelang.all.cross: |
6cfea11b TJ |
145 | _error_not_here_yet - havent even thought about it - it may even work |
146 | ||
147 | treelang.start.encap: | |
e5fcbd77 | 148 | treelang.rest.encap: |
a541f69d KC |
149 | treelang.man: |
150 | treelang.srcman: | |
6cfea11b | 151 | |
361617e7 | 152 | treelang.tags: force |
fbe3f997 JM |
153 | cd $(srcdir)/treelang; etags -o TAGS.sub *.y *.l *.c *.h; \ |
154 | etags --include TAGS.sub --include ../TAGS.sub | |
361617e7 | 155 | |
a541f69d | 156 | treelang.info: doc/treelang.info |
6cfea11b | 157 | |
a541f69d KC |
158 | treelang.srcinfo: doc/treelang.info |
159 | -cp -p $^ $(srcdir)/doc | |
160 | ||
b2d7fd7b | 161 | treelang.dvi: doc/treelang.dvi |
a541f69d | 162 | |
e1eefa15 BM |
163 | TREELANG_PDFFILES = doc/treelang.pdf |
164 | ||
165 | treelang.pdf: $(TREELANG_PDFFILES) | |
b5422ad7 | 166 | |
9d65c5cb | 167 | TEXI_TREELANG_FILES = treelang/treelang.texi \ |
ad3a7ce3 CD |
168 | $(gcc_docdir)/include/gcc-common.texi \ |
169 | $(gcc_docdir)/include/gpl.texi \ | |
170 | $(gcc_docdir)/include/fdl.texi \ | |
171 | $(gcc_docdir)/include/funding.texi \ | |
a1286ef5 | 172 | gcc-vers.texi |
9d65c5cb MS |
173 | |
174 | doc/treelang.info: $(TEXI_TREELANG_FILES) | |
ad3a7ce3 | 175 | $(MAKEINFO) $(MAKEINFOFLAGS) -I $(gcc_docdir)/include -o $@ $< |
6cfea11b | 176 | |
9d65c5cb | 177 | doc/treelang.dvi: $(TEXI_TREELANG_FILES) |
71cbe2c1 | 178 | $(TEXI2DVI) -I $(abs_docdir)/include -o $@ $< |
6cfea11b | 179 | |
b5422ad7 BM |
180 | doc/treelang.pdf: $(TEXI_TREELANG_FILES) |
181 | $(TEXI2PDF) -I $(abs_docdir)/include -o $@ $< | |
182 | ||
22482f74 | 183 | treelang.html: $(build_htmldir)/treelang/index.html |
9d65c5cb | 184 | |
22482f74 | 185 | $(build_htmldir)/treelang/index.html: $(TEXI_TREELANG_FILES) |
9d65c5cb MS |
186 | $(mkinstalldirs) $(@D) |
187 | rm -f $(@D)/* | |
ad3a7ce3 | 188 | $(TEXI2HTML) -I $(gcc_docdir)/include -I $(srcdir)/treelang -o $(@D) $< |
9d65c5cb | 189 | |
6cfea11b TJ |
190 | #\f |
191 | # Install hooks: | |
192 | ||
e5fcbd77 | 193 | # Install |
6cfea11b TJ |
194 | .phony:treelang.install.common |
195 | .phony:treelang.install | |
196 | ||
197 | treelang.install treelang.install.common treelang.install-common: treelang.install.common.done | |
198 | ||
e5fcbd77 | 199 | treelang.install.common.done: installdirs treelang.done |
6cfea11b TJ |
200 | for name in $(TREE_EXES); \ |
201 | do \ | |
202 | if [ -f $$name ] ; then \ | |
203 | name2="`echo \`basename $$name\` | sed -e '$(program_transform_name)' `"; \ | |
17b4fdbf CC |
204 | rm -f $(DESTDIR)$(bindir)/$$name2$(exeext); \ |
205 | echo $(INSTALL_PROGRAM) $$name$(exeext) $(DESTDIR)$(bindir)/$$name2$(exeext); \ | |
206 | $(INSTALL_PROGRAM) $$name$(exeext) $(DESTDIR)$(bindir)/$$name2$(exeext); \ | |
207 | chmod a+x $(DESTDIR)$(bindir)/$$name2$(exeext); \ | |
6cfea11b TJ |
208 | fi ; \ |
209 | done | |
210 | $(STAMP) treelang.install.common.done | |
211 | ||
97ae108d | 212 | # We might not be able to build the info files |
b2d7fd7b | 213 | treelang.install-info: $(DESTDIR)$(infodir)/treelang.info |
6cfea11b | 214 | |
e1eefa15 BM |
215 | treelang.install-pdf: $(TREELANG_PDFFILES) |
216 | @$(NORMAL_INSTALL) | |
217 | test -z "$(pdfdir)/gcc" || $(mkinstalldirs) "$(DESTDIR)$(pdfdir)/gcc" | |
218 | @list='$(TREELANG_PDFFILES)'; for p in $$list; do \ | |
219 | if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ | |
220 | f=$(pdf__strip_dir) \ | |
221 | echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(pdfdir)/gcc/$$f'"; \ | |
222 | $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(pdfdir)/gcc/$$f"; \ | |
223 | done | |
224 | ||
e5fcbd77 | 225 | treelang.install-man: |
6cfea11b TJ |
226 | |
227 | treelang.uninstall: | |
228 | for name in $(TREE_EXES); \ | |
229 | do \ | |
230 | echo $$name; \ | |
231 | name2="`echo $$name | sed -e '$(program_transform_name)' `"; \ | |
232 | echo becomes $$name2; \ | |
17b4fdbf CC |
233 | echo -rm -rf $(DESTDIR)$(bindir)/$$name2$(exeext); \ |
234 | rm -rf $(DESTDIR)$(bindir)/$$name2$(exeext); \ | |
6cfea11b TJ |
235 | done |
236 | -rm treelang.install.common.done | |
237 | ||
238 | #\f | |
239 | # Clean hooks: | |
240 | # A lot of the ancillary files are deleted by the main makefile. | |
241 | # We just have to delete files specific to us. | |
242 | ||
e5fcbd77 | 243 | treelang.mostlyclean: |
6cfea11b TJ |
244 | for name in $(TREE_EXES); \ |
245 | do \ | |
246 | echo deleting $$name; \ | |
247 | if [ -f treelang/$$name$(exeext) ] ; then \ | |
248 | rm -f treelang/$$name$(exeext); \ | |
249 | fi ; \ | |
250 | done | |
22aa533e NS |
251 | -rm -f treelang/*$(objext) |
252 | -rm -f treelang/*$(coverageexts) | |
6cfea11b TJ |
253 | -rm treelang.done |
254 | ||
255 | ||
256 | treelang.clean: treelang.mostlyclean | |
257 | ||
258 | treelang.distclean: treelang.clean | |
e5fcbd77 | 259 | -rm -f treelang/config.status |
6cfea11b TJ |
260 | -rm -f treelang/*.output |
261 | ||
a03ad584 | 262 | treelang.maintainer-clean: treelang.distclean |
6cfea11b TJ |
263 | for name in $(TREE_GENERATED); \ |
264 | do \ | |
265 | if [ -f $(srcdir)/treelang/$$name ] ; then \ | |
266 | echo deleting $(srcdir)/treelang/$$name; \ | |
267 | rm -f $(srcdir)/treelang/$$name; \ | |
268 | fi ; \ | |
269 | done | |
270 | -rm -R $(srcdir)/treelang/*~ | |
271 | ||
272 | ||
273 | #\f | |
274 | # Stage hooks: | |
275 | # The main makefile has already created stage?/treelang. | |
276 | ||
277 | treelang.stage1: stage1-start | |
278 | -mv treelang/*$(objext) stage1/treelang | |
279 | treelang.stage2: stage2-start | |
280 | -mv treelang/*$(objext) stage2/treelang | |
281 | treelang.stage3: stage3-start | |
282 | -mv treelang/*$(objext) stage3/treelang | |
283 | treelang.stage4: stage4-start | |
284 | -mv treelang/*$(objext) stage4/treelang | |
8f231b5d JH |
285 | treelang.stageprofile: stageprofile-start |
286 | -mv treelang/*$(objext) stageprofile/treelang | |
287 | treelang.stagefeedback: stagefeedback-start | |
288 | -mv treelang/*$(objext) stagefeedback/treelang | |
6cfea11b TJ |
289 | #\f |
290 | # Maintenance hooks: | |
291 | ||
6cfea11b | 292 | # test hook |
6cfea11b | 293 | |
96e3ac4f | 294 | check-treelang: treelang.check |
6cfea11b TJ |
295 | |
296 | TESTSUITEDIR = testsuite | |
297 | ||
298 | treelang.check: $(TESTSUITEDIR)/site.exp | |
e5fcbd77 | 299 | -mkdir testsuite/treelang |
6cfea11b TJ |
300 | |
301 | # these three files are empty and it seems diff has trouble generating | |
302 | # patch files for new empty files as required for cvs. | |
303 | # STAMP does not cut it here as I need an empty file. | |
8c90b13a L |
304 | -rootme=`${PWD_COMMAND}`; export rootme; \ |
305 | srcdir=`cd ${srcdir}; ${PWD_COMMAND}` ; export srcdir ; \ | |
6cfea11b TJ |
306 | cd testsuite; \ |
307 | EXPECT=${EXPECT} ; export EXPECT ; \ | |
6cfea11b | 308 | if [ -f $${rootme}/../expect/expect ] ; then \ |
8c90b13a | 309 | TCL_LIBRARY=`cd .. ; cd ${srcdir}/../tcl/library ; ${PWD_COMMAND}` ; \ |
6cfea11b | 310 | export TCL_LIBRARY ; fi ; \ |
8c90b13a L |
311 | PATH=`cd ..;${PWD_COMMAND}`:$$PATH; export PATH; \ |
312 | gcc_extras="-B`cd ..;${PWD_COMMAND}` -B`cd ..;${PWD_COMMAND}`/treelang"; export gcc_extras; \ | |
6cfea11b | 313 | $(RUNTEST) --tool treelang $(RUNTESTFLAGS) |
6cfea11b TJ |
314 | |
315 | # copy the output files from the current test to source ie say the new results are OK | |
316 | treelang.check.fix: force | |
8c90b13a | 317 | srcdir=`cd ${srcdir}; ${PWD_COMMAND}` ; export srcdir ; |
6cfea11b TJ |
318 | -cp testsuite/treelang/*.out* t |
319 | -cp testsuite/treelang/*runpgm* t | |
320 | -rm -f t/*nofilename | |
321 | ||
6cfea11b TJ |
322 | #\f |
323 | ||
31c56a8b | 324 | config.status: treelang/config-lang.in |