]>
Commit | Line | Data |
---|---|---|
093e265a | 1 | # Top level makefile fragment for TREELANG For GCC. -*- makefile -*- |
2 | ||
81eae663 | 3 | # Copyright (C) 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003 |
4 | # Free Software Foundation, Inc. | |
093e265a | 5 | |
6 | #This file is part of GCC. | |
7 | ||
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 2, or (at your option) | |
11 | #any later version. | |
12 | ||
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 COPYING. If not, write to | |
20 | #the Free Software Foundation, 59 Temple Place - Suite 330, | |
21 | #Boston, MA 02111-1307, USA. | |
22 | ||
23 | # This file provides the language dependent support in the main Makefile. | |
24 | # Each language makefile fragment must provide the following targets: | |
25 | # | |
26 | # foo.all.build, foo.all.cross, foo.start.encap, foo.rest.encap, | |
e9d2d60f | 27 | # foo.install-normal, foo.install-common, foo.install-man, |
093e265a | 28 | # foo.uninstall, foo.distdir, |
80e909c6 | 29 | # foo.mostlyclean, foo.clean, foo.distclean, |
093e265a | 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 | # | |
36 | # - making any compiler driver (eg: GCC) | |
37 | # - the compiler proper (eg: treelang) | |
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 | ||
48 | # back end compiler libraries etc | |
09e31068 | 49 | TREE_BE_LIBS = $(BACKEND) $(LIBIBERTY) $(INTLIBS) $(LIBS) $(LIBDEPS) |
50 | ||
51 | ||
093e265a | 52 | GCC_EXTRAS = -B./ -B$(build_tooldir)/bin/ -isystem $(build_tooldir)/include |
53 | ||
54 | # ./xgcc is the just built compiler. See GCC_FOR_TARGET in the GCC Makefile.in. | |
55 | # If this can't be found, you probably have not done a bootstrap of GCC, | |
56 | # which you need to do. | |
57 | ||
58 | # GCC_FOR_TREELANG = ./xgcc $(GCC_EXTRAS) | |
59 | ||
dfa8f795 | 60 | TREE_GENERATED = $(parsedir)/treelang/lex.c $(parsedir)/treelang/parse.c \ |
61 | $(parsedir)/treelang/parse.h $(parsedir)/treelang/parse.output \ | |
62 | $(parsedir)/treelang/TAGS | |
093e265a | 63 | |
1e94fc11 | 64 | TREE_EXES = tree1 |
093e265a | 65 | |
66 | #no -Wtraditional warnings, allow long long | |
aa73c668 | 67 | treelang-warn = $(LOOSE_WARN) -pedantic -Wno-long-long -Wmissing-prototypes -Wmissing-declarations $(WERROR) |
befaf436 | 68 | # bison emits some unused static arrays (yytoknum) |
69 | treelang/parse.o-warn = -Wno-error | |
78a75ebd | 70 | # flex produces 'no previous prototype' warnings |
71 | treelang/lex.o-warn = -Wno-error | |
093e265a | 72 | |
73 | #\f | |
74 | # Define the names for selecting treelang in LANGUAGES. | |
75 | ||
76 | .phony: treelang TREELANG | |
77 | ||
78 | treelang TREELANG:treelang.done | |
79 | ||
80 | treelang.done: tree1$(exeext) | |
81 | $(STAMP) treelang.done | |
82 | ||
83 | # no preprocessor | |
84 | ||
befaf436 | 85 | # core compiler |
09e31068 | 86 | tree1$(exeext): treelang/tree1.o treelang/treetree.o treelang/tree-convert.o \ |
87 | treelang/lex.o treelang/parse.o \ | |
88 | $(TREE_BE_LIBS) attribs.o | |
093e265a | 89 | $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ \ |
09e31068 | 90 | treelang/tree1.o treelang/treetree.o treelang/tree-convert.o \ |
91 | treelang/lex.o treelang/parse.o \ | |
92 | $(TREE_BE_LIBS) attribs.o | |
093e265a | 93 | |
94 | #\f | |
95 | # Compiling object files from source files. | |
96 | ||
97 | # object file makes | |
98 | ||
805e22b2 | 99 | treelang/tree1.o: treelang/tree1.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ |
100 | flags.h toplev.h $(GGC_H) $(TREE_H) diagnostic.h treelang/treelang.h \ | |
9a68cb69 | 101 | input.h treelang/treetree.h options.h opts.h \ |
805e22b2 | 102 | treelang/treetree.h gt-treelang-tree1.h gtype-treelang.h |
103 | ||
104 | treelang/treetree.o: treelang/treetree.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ | |
9a68cb69 | 105 | $(TM_H) $(TREE_H) flags.h output.h $(RTL_H) $(GGC_H) toplev.h \ |
6f823f90 | 106 | varray.h $(LANGHOOKS_DEF_H) langhooks.h treelang/treelang.h input.h \ |
54b27195 | 107 | treelang/treetree.h $(parsedir)/treelang/parse.h |
805e22b2 | 108 | |
9a68cb69 | 109 | treelang/tree-convert.o: treelang/tree-convert.c $(CONFIG_H) $(SYSTEM_H) \ |
7c90be39 | 110 | coretypes.h diagnostic.h $(TREE_H) flags.h toplev.h langhooks.h $(TM_H) |
09e31068 | 111 | |
1e94fc11 | 112 | treelang/parse.o: $(parsedir)/treelang/parse.c $(CONFIG_H) $(SYSTEM_H) \ |
113 | coretypes.h $(TM_H) diagnostic.h treelang/treelang.h input.h \ | |
114 | treelang/treetree.h | |
dfa8f795 | 115 | $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ |
116 | $(parsedir)/treelang/parse.c $(OUTPUT_OPTION) | |
805e22b2 | 117 | |
dfa8f795 | 118 | treelang/lex.o: $(parsedir)/treelang/lex.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ |
54b27195 | 119 | $(TM_H) diagnostic.h $(TREE_H) treelang/treelang.h input.h \ |
120 | $(parsedir)/treelang/parse.h | |
dfa8f795 | 121 | $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ |
122 | $(parsedir)/treelang/lex.c $(OUTPUT_OPTION) | |
093e265a | 123 | |
124 | # generated files the files from lex and yacc are put into the source | |
125 | # directory in case someone wants to build but does not have | |
126 | # lex/yacc | |
127 | ||
dfa8f795 | 128 | $(parsedir)/treelang/lex.c: $(srcdir)/treelang/lex.l |
129 | $(LEX) $(LEXFLAGS) -o$(parsedir)/treelang/lex.c $(srcdir)/treelang/lex.l | |
093e265a | 130 | |
dfa8f795 | 131 | $(parsedir)/treelang/parse.c $(parsedir)/treelang/parse.h: $(srcdir)/treelang/parse.y |
531d8f58 | 132 | $(BISON) $(BISONFLAGS) -v --defines \ |
dfa8f795 | 133 | --output=$(parsedir)/treelang/parse.c $(srcdir)/treelang/parse.y |
e938cdf5 | 134 | |
093e265a | 135 | # -v |
136 | ||
ff98ed79 | 137 | gt-treelang-tree1.h gtype-treelang.h : s-gtype; @true |
4d26f199 | 138 | |
093e265a | 139 | #\f |
140 | # Build hooks: | |
141 | ||
142 | treelang.all.build: treelang | |
befaf436 | 143 | treelang.all.cross: |
093e265a | 144 | _error_not_here_yet - havent even thought about it - it may even work |
145 | ||
146 | treelang.start.encap: | |
befaf436 | 147 | treelang.rest.encap: |
093e265a | 148 | |
442603fe | 149 | treelang.tags: force |
150 | cd $(srcdir)/treelang; etags *.y *.l *.c *.h | |
151 | ||
e9d2d60f | 152 | info:: $(docobjdir)/treelang.info |
1e94fc11 | 153 | dvi:: $(docobjdir)/treelang.dvi |
093e265a | 154 | |
1e94fc11 | 155 | $(docobjdir)/treelang.info: treelang/treelang.texi \ |
dfa8f795 | 156 | $(docdir)/include/gcc-common.texi \ |
157 | $(docdir)/include/gpl.texi \ | |
158 | $(docdir)/include/fdl.texi \ | |
159 | $(docdir)/include/funding.texi \ | |
e03aeb15 | 160 | stmp-docobjdir |
1e94fc11 | 161 | $(MAKEINFO) $(MAKEINFOFLAGS) -I$(docdir)/include -o $@ $< |
093e265a | 162 | |
1e94fc11 | 163 | $(docobjdir)/treelang.dvi: treelang/treelang.texi \ |
dfa8f795 | 164 | $(docdir)/include/gcc-common.texi \ |
165 | $(docdir)/include/gpl.texi \ | |
166 | $(docdir)/include/fdl.texi \ | |
1e94fc11 | 167 | $(docdir)/include/funding.texi \ |
168 | stmp-docobjdir | |
169 | $(TEXI2DVI) -I $(docdir)/include -o $@ $< | |
093e265a | 170 | |
171 | #\f | |
172 | # Install hooks: | |
173 | ||
174 | # Nothing to do here. | |
175 | treelang.install-normal: treelang.install.common | |
176 | ||
befaf436 | 177 | # Install |
093e265a | 178 | .phony:treelang.install.common |
179 | .phony:treelang.install | |
180 | ||
181 | treelang.install treelang.install.common treelang.install-common: treelang.install.common.done | |
182 | ||
befaf436 | 183 | treelang.install.common.done: installdirs treelang.done |
093e265a | 184 | for name in $(TREE_EXES); \ |
185 | do \ | |
186 | if [ -f $$name ] ; then \ | |
187 | name2="`echo \`basename $$name\` | sed -e '$(program_transform_name)' `"; \ | |
e66ea58d | 188 | rm -f $(DESTDIR)$(bindir)/$$name2$(exeext); \ |
189 | echo $(INSTALL_PROGRAM) $$name$(exeext) $(DESTDIR)$(bindir)/$$name2$(exeext); \ | |
190 | $(INSTALL_PROGRAM) $$name$(exeext) $(DESTDIR)$(bindir)/$$name2$(exeext); \ | |
191 | chmod a+x $(DESTDIR)$(bindir)/$$name2$(exeext); \ | |
093e265a | 192 | fi ; \ |
193 | done | |
194 | $(STAMP) treelang.install.common.done | |
195 | ||
e9d2d60f | 196 | # We might not be able to build the info files |
197 | install-info:: $(DESTDIR)$(infodir)/treelang.info | |
093e265a | 198 | |
befaf436 | 199 | treelang.install-man: |
093e265a | 200 | |
201 | treelang.uninstall: | |
202 | for name in $(TREE_EXES); \ | |
203 | do \ | |
204 | echo $$name; \ | |
205 | name2="`echo $$name | sed -e '$(program_transform_name)' `"; \ | |
206 | echo becomes $$name2; \ | |
e66ea58d | 207 | echo -rm -rf $(DESTDIR)$(bindir)/$$name2$(exeext); \ |
208 | rm -rf $(DESTDIR)$(bindir)/$$name2$(exeext); \ | |
093e265a | 209 | done |
210 | -rm treelang.install.common.done | |
211 | ||
212 | #\f | |
213 | # Clean hooks: | |
214 | # A lot of the ancillary files are deleted by the main makefile. | |
215 | # We just have to delete files specific to us. | |
216 | ||
befaf436 | 217 | treelang.mostlyclean: |
093e265a | 218 | for name in $(TREE_EXES); \ |
219 | do \ | |
220 | echo deleting $$name; \ | |
221 | if [ -f treelang/$$name$(exeext) ] ; then \ | |
222 | rm -f treelang/$$name$(exeext); \ | |
223 | fi ; \ | |
224 | done | |
d5a37d75 | 225 | -rm -f treelang/*$(objext) |
226 | -rm -f treelang/*$(coverageexts) | |
093e265a | 227 | -rm treelang.done |
228 | ||
229 | ||
230 | treelang.clean: treelang.mostlyclean | |
231 | ||
232 | treelang.distclean: treelang.clean | |
befaf436 | 233 | -rm -f treelang/config.status |
093e265a | 234 | -rm -f treelang/*.output |
235 | ||
80e909c6 | 236 | treelang.maintainer-clean: treelang.distclean |
093e265a | 237 | for name in $(TREE_GENERATED); \ |
238 | do \ | |
239 | if [ -f $(srcdir)/treelang/$$name ] ; then \ | |
240 | echo deleting $(srcdir)/treelang/$$name; \ | |
241 | rm -f $(srcdir)/treelang/$$name; \ | |
242 | fi ; \ | |
243 | done | |
244 | -rm -R $(srcdir)/treelang/*~ | |
245 | ||
246 | ||
247 | #\f | |
248 | # Stage hooks: | |
249 | # The main makefile has already created stage?/treelang. | |
250 | ||
251 | treelang.stage1: stage1-start | |
252 | -mv treelang/*$(objext) stage1/treelang | |
253 | treelang.stage2: stage2-start | |
254 | -mv treelang/*$(objext) stage2/treelang | |
255 | treelang.stage3: stage3-start | |
256 | -mv treelang/*$(objext) stage3/treelang | |
257 | treelang.stage4: stage4-start | |
258 | -mv treelang/*$(objext) stage4/treelang | |
ef3bb540 | 259 | treelang.stageprofile: stageprofile-start |
260 | -mv treelang/*$(objext) stageprofile/treelang | |
261 | treelang.stagefeedback: stagefeedback-start | |
262 | -mv treelang/*$(objext) stagefeedback/treelang | |
093e265a | 263 | #\f |
264 | # Maintenance hooks: | |
265 | ||
266 | # This target creates the files that can be rebuilt, but go in the | |
267 | # distribution anyway. It then copies the files to the distdir directory. | |
268 | treelang.distdir: | |
269 | # not here yet sorry not sure if this is needed or not??? | |
270 | ||
271 | # test hook | |
093e265a | 272 | |
4d26f199 | 273 | check-treelang: treelang.check |
093e265a | 274 | |
275 | TESTSUITEDIR = testsuite | |
276 | ||
277 | treelang.check: $(TESTSUITEDIR)/site.exp | |
befaf436 | 278 | -mkdir testsuite/treelang |
093e265a | 279 | |
280 | # these three files are empty and it seems diff has trouble generating | |
281 | # patch files for new empty files as required for cvs. | |
282 | # STAMP does not cut it here as I need an empty file. | |
283 | touch $(srcdir)/testsuite/treelang/{a01gcco01runpgmerr,a01gcc.out01,a01gcc.out01err} | |
7a8ca04a | 284 | -rootme=`${PWD_COMMAND}`; export rootme; \ |
285 | srcdir=`cd ${srcdir}; ${PWD_COMMAND}` ; export srcdir ; \ | |
093e265a | 286 | cd testsuite; \ |
287 | EXPECT=${EXPECT} ; export EXPECT ; \ | |
288 | TRANSFORM=$(program_transform_name); export TRANSFORM; \ | |
289 | if [ -f $${rootme}/../expect/expect ] ; then \ | |
7a8ca04a | 290 | TCL_LIBRARY=`cd .. ; cd ${srcdir}/../tcl/library ; ${PWD_COMMAND}` ; \ |
093e265a | 291 | export TCL_LIBRARY ; fi ; \ |
7a8ca04a | 292 | PATH=`cd ..;${PWD_COMMAND}`:$$PATH; export PATH; \ |
293 | gcc_extras="-B`cd ..;${PWD_COMMAND}` -B`cd ..;${PWD_COMMAND}`/treelang"; export gcc_extras; \ | |
093e265a | 294 | $(RUNTEST) --tool treelang $(RUNTESTFLAGS) |
295 | rm $(srcdir)/testsuite/treelang/{a01gcco01runpgmerr,a01gcc.out01,a01gcc.out01err} | |
296 | # GCC_EXTRAS="$(GCC_EXTRAS)"; export GCC_EXTRAS; \ | |
297 | ||
298 | # copy the output files from the current test to source ie say the new results are OK | |
299 | treelang.check.fix: force | |
7a8ca04a | 300 | srcdir=`cd ${srcdir}; ${PWD_COMMAND}` ; export srcdir ; |
093e265a | 301 | -cp testsuite/treelang/*.out* t |
302 | -cp testsuite/treelang/*runpgm* t | |
303 | -rm -f t/*nofilename | |
304 | ||
093e265a | 305 | #\f |
306 | ||
093e265a | 307 | .PHONY: treelang.html |
308 | ||
309 | treelang.html: | |
310 | cd $(srcdir)/treelang && texi2html -I ../doc/include -verbose -menu -split_chapter -number treelang.texi | |
311 | # mv treelang*.html $(srcdir)/treelang | |
09e31068 | 312 | |
313 | config.status: treelang/config-lang.in |