OSDN Git Service

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