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