OSDN Git Service

* gen-all: New file.
[pf3gnuchains/pf3gnuchains3x.git] / newlib / Makefile.am
1 ## Process this file with automake to generate Makefile.in
2
3 AUTOMAKE_OPTIONS = cygnus dejagnu
4 ACLOCAL_AMFLAGS = -I . -I ..
5
6 # Multilib support variables.
7 MULTISRCTOP =
8 MULTIBUILDTOP =
9 MULTIDIRS =
10 MULTISUBDIR =
11 MULTIDO = true
12 MULTICLEAN = true
13
14 LIBTOOL_VERSION_INFO = 0:0:0
15
16 if NEWLIB_HW_FP
17 MATHDIR = mathfp
18 else
19 MATHDIR = math
20 endif
21
22 # Work around what appears to be a GNU make bug handling MAKEFLAGS
23 # values defined in terms of make variables, as is the case for CC and
24 # friends when we are called from the top level Makefile.
25 AM_MAKEFLAGS = \
26         "AR_FLAGS=$(AR_FLAGS)" \
27         "CC_FOR_BUILD=$(CC_FOR_BUILD)" \
28         "CFLAGS=$(CFLAGS)" \
29         "CCASFLAGS=$(CCASFLAGS)" \
30         "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \
31         "CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \
32         "INSTALL=$(INSTALL)" \
33         "LDFLAGS=$(LDFLAGS)" \
34         "LIBCFLAGS=$(LIBCFLAGS)" \
35         "LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \
36         "MAKE=$(MAKE)" \
37         "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \
38         "PICFLAG=$(PICFLAG)" \
39         "PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \
40         "SHELL=$(SHELL)" \
41         "EXPECT=$(EXPECT)" \
42         "RUNTEST=$(RUNTEST)" \
43         "RUNTESTFLAGS=$(RUNTESTFLAGS)" \
44         "exec_prefix=$(exec_prefix)" \
45         "infodir=$(infodir)" \
46         "libdir=$(libdir)" \
47         "prefix=$(prefix)" \
48         "tooldir=$(tooldir)" \
49         "top_toollibdir=$(toollibdir)" \
50         "AR=$(AR)" \
51         "AS=$(AS)" \
52         "CC=$(CC_FOR_NEWLIB)" \
53         "LD=$(LD)" \
54         "LIBCFLAGS=$(LIBCFLAGS)" \
55         "NM=$(NM)" \
56         "PICFLAG=$(PICFLAG)" \
57         "RANLIB=$(RANLIB)" \
58         "DESTDIR=$(DESTDIR)"
59
60 FLAGS_TO_PASS=$(AM_MAKEFLAGS)
61
62 if HAVE_DOC
63 DOCDIR = doc
64 else
65 DOCDIR =
66 endif
67
68 SUBDIRS = libc libm \
69         $(DOCDIR) . $(EXTRA_DIRS)
70
71 tooldir = $(exec_prefix)/$(host_alias)
72 toollibdir = $(tooldir)/lib$(MULTISUBDIR)
73
74 AR_FLAGS = rc
75
76 if USE_LIBTOOL
77 toollib_LTLIBRARIES = libm.la \
78         libc.la
79 else
80 toollib_LIBRARIES = libm.a \
81         libc.a
82 endif
83
84 noinst_DATA = stmp-targ-include
85
86 toollib_DATA = $(CRT0) $(CRT1)
87
88
89 # The functions ldexp, frexp and modf are traditionally supplied in
90 # both libc.a and libm.a.  We build them in libm.a and copy them over,
91 # along with some required supporting routines.
92 MATHOBJS_IN_LIBC = \
93         $(lpfx)s_fpclassify.$(oext) $(lpfx)sf_fpclassify.$(oext) \
94         $(lpfx)s_isinf.$(oext) $(lpfx)sf_isinf.$(oext) \
95         $(lpfx)s_isnan.$(oext) $(lpfx)sf_isnan.$(oext) \
96         $(lpfx)s_isinfd.$(oext) $(lpfx)sf_isinff.$(oext) \
97         $(lpfx)s_isnand.$(oext) $(lpfx)sf_isnanf.$(oext) \
98         $(lpfx)s_nan.$(oext) $(lpfx)sf_nan.$(oext) \
99         $(lpfx)s_ldexp.$(oext) $(lpfx)sf_ldexp.$(oext) \
100         $(lpfx)s_frexp.$(oext) $(lpfx)sf_frexp.$(oext) \
101         $(lpfx)s_modf.$(oext) \
102         $(lpfx)sf_modf.$(oext) $(lpfx)s_scalbn.$(oext) \
103         $(lpfx)sf_scalbn.$(oext) \
104         $(lpfx)s_finite.$(oext) $(lpfx)sf_finite.$(oext) \
105         $(lpfx)s_copysign.$(oext) $(lpfx)sf_copysign.$(oext) \
106         $(lpfx)s_infconst.$(oext)
107
108 LIBC_OBJECTLISTS = \
109         $(POSIX_OBJECTLIST) \
110         $(SIGNAL_OBJECTLIST) \
111         $(SYSCALL_OBJECTLIST) \
112         $(UNIX_OBJECTLIST) \
113         $(STDIO64_OBJECTLIST) \
114         libc/argz/objectlist.awk.in \
115         libc/stdlib/objectlist.awk.in \
116         libc/time/objectlist.awk.in \
117         libc/ctype/objectlist.awk.in \
118         libc/search/objectlist.awk.in \
119         libc/string/objectlist.awk.in \
120         libc/locale/objectlist.awk.in \
121         libc/misc/objectlist.awk.in \
122         libc/reent/objectlist.awk.in \
123         libc/errno/objectlist.awk.in \
124         libc/stdio/objectlist.awk.in \
125         $(MACHINE_OBJECTLIST) \
126         $(SYS_OBJECTLIST) \
127         $(SYS_MACH_OBJECTLIST)
128
129 LIBM_OBJECTLISTS = \
130         libm/$(MATHDIR)/objectlist.awk.in \
131         libm/common/objectlist.awk.in \
132         $(LIBM_MACHINE_OBJECTLIST)
133
134 libm_la_LDFLAGS = -version-info $(LIBTOOL_VERSION_INFO) -release newlib -no-undefined -Xcompiler -nostdlib -Xlinker --version-script=$(srcdir)/libc/sys/linux/shared.ld -lgcc -objectlist libm-libtool-objectlist
135
136 libc_la_LDFLAGS = -version-info $(LIBTOOL_VERSION_INFO) -release newlib -no-undefined -Xcompiler -nostdlib -Xlinker --version-script=$(srcdir)/libc/sys/linux/shared.ld -lgcc -objectlist libc-libtool-objectlist
137
138 if USE_LIBTOOL
139 libm_la_SOURCES =
140 libm_la_DEPENDENCIES = libm-libtool-objectlist
141
142 # objects listed later in LIBM_OBJECTLISTS will override those listed earlier
143 libm-libtool-objectlist: $(LIBM_OBJECTLISTS)
144         cat $(LIBM_OBJECTLISTS) | $(AWK) '{ libm[$$1] = $$2 }; END { for (x in libm) printf ("%s\n", libm[x]) }' > $@
145
146 libc_la_SOURCES =
147 libc_la_DEPENDENCIES = libc-libtool-objectlist
148
149 # objects listed later in LIBM_OBJECTLISTS and LIBC_OBJECTLISTS will override those listed earlier
150 libc-libtool-objectlist: $(LIBM_OBJECTLISTS) $(LIBC_OBJECTLISTS)
151         cat $(LIBM_OBJECTLISTS) $(LIBC_OBJECTLISTS) |  $(AWK) '{ libc[$$1] = $$2 }; END { for (x in libc) printf ("%s\n", libc[x]) }' > $@
152
153 else
154
155 libc.a: libc/libc.a libm.a
156         rm -rf libc.a libg.a tmp
157         mkdir tmp
158         cd tmp; \
159          $(AR) x ../libm.a $(MATHOBJS_IN_LIBC) ; \
160          $(AR) x ../libc/libc.a ; \
161          $(AR) $(AR_FLAGS) ../$@ *.o
162         $(RANLIB) libc.a
163         ln libc.a libg.a >/dev/null 2>/dev/null || cp libc.a libg.a
164         rm -rf tmp
165
166 libc/libc.a: ; @true
167
168 libm.a: libm/libm.a
169         rm -f $@
170         ln libm/libm.a $@ >/dev/null 2>/dev/null || cp libm/libm.a $@
171
172 libm/libm.a: ; @true
173
174 endif # USE_LIBTOOL
175
176 crt0.o: $(CRT0_DIR)$(CRT0)
177         rm -f $@
178         ln $(CRT0_DIR)$(CRT0) $@ >/dev/null 2>/dev/null \
179          || cp $(CRT0_DIR)$(CRT0) $@
180
181 $(CRT0_DIR)$(CRT0): ; @true
182
183 crt1.o: $(CRT1_DIR)$(CRT1)
184         rm -f $@
185         ln $< $@ >/dev/null 2>/dev/null \
186          || cp $< $@
187
188 $(CRT1_DIR)$(CRT1): ; @true
189
190 $(srcdir)/newlib.hin:
191
192 all-recursive: stmp-targ-include
193
194 # The targ-include directory just holds the includes files for the
195 # particular system and machine we have been configured for.  It is
196 # used while building.
197 stmp-targ-include: config.status
198         -rm -rf targ-include stmp-targ-include
199         mkdir targ-include targ-include/sys targ-include/machine targ-include/bits
200         cp newlib.h targ-include/newlib.h
201         -for i in $(srcdir)/libc/machine/$(machine_dir)/machine/*.h; do \
202             if [ -f $$i ]; then \
203               cp $$i targ-include/machine/`basename $$i`; \
204             else true; fi ; \
205           done
206         -for i in $(srcdir)/libc/machine/$(machine_dir)/sys/*.h; do \
207             if [ -f $$i ]; then \
208               cp $$i targ-include/sys/`basename $$i`; \
209             else true; fi ; \
210           done
211         -for i in $(srcdir)/libc/machine/$(machine_dir)/include/*.h; do \
212             if [ -f $$i ]; then \
213               cp $$i targ-include/`basename $$i`; \
214             else true; fi ; \
215           done
216         -for i in $(srcdir)/libc/sys/$(sys_dir)/include/*.h; do \
217             if [ -f $$i ]; then \
218               cp $$i targ-include/`basename $$i`; \
219             else true; fi ; \
220           done
221         -for i in $(srcdir)/libc/sys/$(sys_dir)/sys/*.h; do \
222             if [ -f $$i ]; then \
223               cp $$i targ-include/sys/`basename $$i`; \
224             else true; fi ; \
225           done
226         -for i in $(srcdir)/libc/sys/$(sys_dir)/bits/*.h; do \
227             if [ -f $$i ]; then \
228               cp $$i targ-include/bits/`basename $$i`; \
229             else true; fi ; \
230           done
231         -for i in $(srcdir)/libc/sys/$(sys_dir)/machine/*.h; do \
232             if [ -f $$i ]; then \
233               cp $$i targ-include/machine/`basename $$i`; \
234             else true; fi ; \
235           done
236         -for i in $(srcdir)/libc/sys/$(sys_dir)/machine/$(machine_dir)/*.h; do \
237             if [ -f $$i ]; then \
238               cp $$i targ-include/machine/`basename $$i`; \
239             else true; fi ; \
240           done
241         -for i in $(srcdir)/libc/sys/$(sys_dir)/machine/$(machine_dir)/include/*.h; do \
242             if [ -f $$i ]; then \
243               cp $$i targ-include/machine/`basename $$i`; \
244             else true; fi ; \
245           done
246         touch $@
247
248 CLEANFILES = targ-include stmp-targ-include
249
250 install-data-local:     install-toollibLIBRARIES
251 if USE_LIBTOOL
252 else
253         rm -f $(DESTDIR)$(toollibdir)/libg.a
254         ln $(DESTDIR)$(toollibdir)/libc.a $(DESTDIR)$(toollibdir)/libg.a >/dev/null 2>/dev/null || cp $(DESTDIR)$(toollibdir)/libc.a $(DESTDIR)$(toollibdir)/libg.a
255 endif
256         $(MULTIDO) $(AM_MAKEFLAGS) DO=install multi-do # $(MAKE)
257         -if [ -z "$(MULTISUBDIR)" ]; then \
258           $(mkinstalldirs) $(DESTDIR)$(tooldir)/include; \
259           for i in $(srcdir)/libc/include/*.h; do \
260            $(INSTALL_DATA) $$i $(DESTDIR)$(tooldir)/include/`basename $$i`; \
261           done; \
262           $(INSTALL_DATA) newlib.h $(DESTDIR)$(tooldir)/include/newlib.h; \
263           $(mkinstalldirs) $(DESTDIR)$(tooldir)/include/machine; \
264           for i in $(srcdir)/libc/include/machine/*.h; do \
265            $(INSTALL_DATA) $$i $(DESTDIR)$(tooldir)/include/machine/`basename $$i`; \
266           done; \
267           for i in $(srcdir)/libc/machine/$(machine_dir)/machine/*.h; do \
268             if [ -f $$i ]; then \
269              $(INSTALL_DATA) $$i $(DESTDIR)$(tooldir)/include/machine/`basename $$i`; \
270             else true; fi ; \
271           done; \
272           $(mkinstalldirs) $(DESTDIR)$(tooldir)/include/sys; \
273           for i in $(srcdir)/libc/include/sys/*.h; do \
274            $(INSTALL_DATA) $$i $(DESTDIR)$(tooldir)/include/sys/`basename $$i`; \
275           done; \
276           for i in $(srcdir)/libc/machine/$(machine_dir)/sys/*.h; do \
277             if [ -f $$i ]; then \
278              $(INSTALL_DATA) $$i $(DESTDIR)$(tooldir)/include/sys/`basename $$i`; \
279             else true; fi ; \
280           done ; \
281           for i in $(srcdir)/libc/machine/$(machine_dir)/include/*.h; do \
282             if [ -f $$i ]; then \
283              $(INSTALL_DATA) $$i $(DESTDIR)$(tooldir)/include/`basename $$i`; \
284             else true; fi ; \
285           done ; \
286           for i in $(srcdir)/libc/sys/$(sys_dir)/sys/*.h; do \
287             if [ -f $$i ]; then \
288              $(INSTALL_DATA) $$i $(DESTDIR)$(tooldir)/include/sys/`basename $$i`; \
289             else true; fi ; \
290           done ; \
291           $(mkinstalldirs) $(DESTDIR)$(tooldir)/include/bits; \
292           for i in $(srcdir)/libc/sys/$(sys_dir)/bits/*.h; do \
293             if [ -f $$i ]; then \
294              $(INSTALL_DATA) $$i $(DESTDIR)$(tooldir)/include/bits/`basename $$i`; \
295             else true; fi ; \
296           done ; \
297           for i in $(srcdir)/libc/sys/$(sys_dir)/machine/*.h; do \
298             if [ -f $$i ]; then \
299              $(INSTALL_DATA) $$i $(DESTDIR)$(tooldir)/include/machine/`basename $$i`; \
300             else true; fi ; \
301           done ; \
302           for i in $(srcdir)/libc/sys/$(sys_dir)/include/*.h; do \
303             if [ -f $$i ]; then \
304              $(INSTALL_DATA) $$i $(DESTDIR)$(tooldir)/include/`basename $$i`; \
305             else true; fi ; \
306           done ; \
307           for i in $(srcdir)/libc/sys/$(sys_dir)/machine/$(machine_dir)/include/*.h; do \
308             if [ -f $$i ]; then \
309              $(INSTALL_DATA) $$i $(DESTDIR)$(tooldir)/include/machine/`basename $$i`; \
310             else true; fi ; \
311           done ; \
312         else true; fi
313
314 # Force makedoc to be built before building info files.
315 info-recursive: doc/makedoc
316 dvi-recursive: doc/makedoc
317 doc/makedoc:
318         cd doc && $(MAKE) all
319
320 CONFIG_STATUS_DEPENDENCIES = $(newlib_basedir)/configure.host
321
322 # Multilib support.
323 .PHONY: all-multi check-multi mostlyclean-multi clean-multi distclean-multi \
324         maintainer-clean-multi
325
326 all-recursive: all-multi
327 check-recursive: check-multi
328 mostlyclean-recursive: mostlyclean-multi
329 clean-recursive: clean-multi
330 distclean-recursive: distclean-multi
331 maintainer-clean-recursive: maintainer-clean-multi
332
333 # The $(MAKE) comments below are to enable parallel building.
334 all-multi:
335         $(MULTIDO) $(AM_MAKEFLAGS) DO=all multi-do # $(MAKE)
336 check-multi:
337         $(MULTIDO) $(AM_MAKEFLAGS) DO=check multi-do # $(MAKE)
338 mostlyclean-multi:
339         $(MULTICLEAN) $(AM_MAKEFLAGS) DO=mostlyclean multi-clean # $(MAKE)
340 clean-multi:
341         $(MULTICLEAN) $(AM_MAKEFLAGS) DO=clean multi-clean # $(MAKE)
342 distclean-multi:
343         $(MULTICLEAN) $(AM_MAKEFLAGS) DO=distclean multi-clean # $(MAKE)
344 maintainer-clean-multi:
345         $(MULTICLEAN) $(AM_MAKEFLAGS) DO=maintainer-clean multi-clean # $(MAKE)
346
347 MAKEOVERRIDES=
348
349 # dejagnu support
350
351 RUNTESTFLAGS=
352
353 site.exp: Makefile
354         @echo 'Making a new site.exp file...'
355         @test ! -f site.bak || rm -f site.bak
356         @echo '## these variables are automatically generated by make ##' > $@-t
357         @echo '# Do not edit here.  If you wish to override these values' >> $@-t
358         @echo '# edit the last section' >> $@-t
359         @echo 'set tool $(DEJATOOL)' >> $@-t
360         @echo 'set tool_version $(VERSION)' >> $@-t
361         @echo 'set srcdir $(srcdir)/testsuite' >> $@-t
362         @echo 'set objdir' `pwd` >> $@-t
363         @echo 'set tmpdir' `pwd`/testsuite >> $@-t
364         @echo 'set multibuildtop ./$(MULTIBUILDTOP)' >> $@-t
365         @echo 'set host_alias $(build_alias)' >> $@-t
366         @echo 'set host_triplet $(build_triplet)' >> $@-t
367         @echo 'set target_alias $(host_alias)' >> $@-t
368         @echo 'set target_triplet $(host_triplet)' >> $@-t
369         @echo '## All variables above are generated by configure. Do Not Edit ##' >> $@-t
370         @test ! -f site.exp || sed '1,/^## All variables above are.*##/ d' site.exp >> $@-t
371         @test ! -f site.exp || mv site.exp site.bak
372         @mv $@-t site.exp
373
374 check-DEJAGNU: site.exp
375         @if [ -d testsuite ] ; then \
376           true ; \
377         else \
378           mkdir testsuite ; \
379         fi
380         @rm -f testsuite/site.exp
381         @cp site.exp testsuite/site.exp
382         @rootme=`pwd` ; \
383         export rootme ; \
384         srcdir=`cd ${srcdir}; pwd` ; \
385         export srcdir ; \
386         EXPECT=`if [ -f $${rootme}/${MULTIBUILDTOP}../../expect/expect ] ; then \
387                   echo $${rootme}/${MULTIBUILDTOP}../../expect/expect ; \
388                 else \
389                   echo expect ; \
390                 fi` ; \
391         export EXPECT ; \
392         echo "Found expect: $${EXPECT}" ; \
393         if [ -f $(top_builddir)/$(MULTIBUILDTOP)../../expect/expect ] ; then \
394           TCL_LIBRARY=`cd $(top_srcdir)/../tcl/library && pwd` ; \
395           export TCL_LIBRARY ; \
396           echo "Found TCL library directory: $${TCL_LIBRARY}" ; \
397         fi ; \
398         RUNTEST=`if [ -f $${srcdir}/../dejagnu/runtest ] ; then \
399                    echo $${srcdir}/../dejagnu/runtest ; \
400                  else \
401                    echo runtest ; \
402                  fi` ; \
403         export RUNTEST ; \
404         echo "Found runtest: $${RUNTEST}" ; \
405         cd testsuite ; \
406         if $(SHELL) -c "$$RUNTEST --version" > /dev/null 2>&1 ; then \
407            $$RUNTEST --tool $(DEJATOOL) --srcdir $${srcdir}/testsuite $(RUNTESTFLAGS) ; \
408            : ; \
409         else \
410            echo "WARNING: could not find \`runtest'" 1>&2 ; \
411         fi