OSDN Git Service

* Makefile.shared: New file.
[pf3gnuchains/pf3gnuchains3x.git] / newlib / Makefile.am
1 ## Process this file with automake to generate Makefile.in
2
3 AUTOMAKE_OPTIONS = cygnus
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         "AR=$(AR)" \
47         "AS=$(AS)" \
48         "CC=$(CC)" \
49         "LD=$(LD)" \
50         "LIBCFLAGS=$(LIBCFLAGS)" \
51         "NM=$(NM)" \
52         "PICFLAG=$(PICFLAG)" \
53         "RANLIB=$(RANLIB)" \
54         "DESTDIR=$(DESTDIR)"
55
56 FLAGS_TO_PASS=$(AM_MAKEFLAGS)
57
58 if HAVE_DOC
59 DOCDIR = doc
60 endif
61
62 SUBDIRS = libc libm $(DOCDIR) .
63
64 tooldir = $(exec_prefix)/$(host_alias)
65 toollibdir = $(tooldir)/lib$(MULTISUBDIR)
66
67 AR_FLAGS = rc
68
69 if USE_LIBTOOL
70 toollib_LTLIBRARIES = libm.la libc.la
71 else
72 toollib_LIBRARIES = libm.a libc.a
73 endif
74
75 noinst_DATA = stmp-targ-include
76
77 toollib_DATA = $(CRT0)
78
79
80 # The functions ldexp, frexp and modf are traditionally supplied in
81 # both libc.a and libm.a.  We build them in libm.a and copy them over,
82 # along with some required supporting routines.
83 MATHOBJS_IN_LIBC = \
84         s_isinf.$(oext) sf_isinf.$(oext) \
85         s_isnan.$(oext) sf_isnan.$(oext) \
86         s_ldexp.$(oext) sf_ldexp.$(oext) \
87         s_frexp.$(oext) sf_frexp.$(oext) \
88         s_modf.$(oext) \
89         sf_modf.$(oext) s_scalbn.$(oext) \
90         sf_scalbn.$(oext) \
91         s_finite.$(oext) sf_finite.$(oext) \
92         s_copysign.$(oext) sf_copysign.$(oext) \
93         s_infconst.$(oext)
94
95 LIBC_OBJECTLISTS = \
96         $(POSIX_OBJECTLIST) \
97         $(SIGNAL_OBJECTLIST) \
98         $(SYSCALL_OBJECTLIST) \
99         $(UNIX_OBJECTLIST) \
100         libc/stdlib/objectlist.awk.in \
101         libc/time/objectlist.awk.in \
102         libc/ctype/objectlist.awk.in \
103         libc/string/objectlist.awk.in \
104         libc/locale/objectlist.awk.in \
105         libc/misc/objectlist.awk.in \
106         libc/reent/objectlist.awk.in \
107         libc/errno/objectlist.awk.in \
108         libc/stdio/objectlist.awk.in \
109         $(MACHINE_OBJECTLIST) \
110         $(SYS_OBJECTLIST)
111
112 LIBM_OBJECTLISTS = \
113         libm/$(MATHDIR)/objectlist.awk.in \
114         libm/common/objectlist.awk.in \
115         $(LIBM_MACHINE_OBJECTLIST)
116
117 libm_la_LDFLAGS = -version-info $(LIBTOOL_VERSION_INFO) -release newlib -no-undefined -Xcompiler -nostdlib -Xlinker --version-script=$(srcdir)/libc/sys/linux/shared.ld `cat libm-libtool-objectlist`
118
119 libc_la_LDFLAGS = -version-info $(LIBTOOL_VERSION_INFO) -release newlib -no-undefined -Xcompiler -nostdlib -Xlinker --version-script=$(srcdir)/libc/sys/linux/shared.ld `cat libc-libtool-objectlist`
120
121 if USE_LIBTOOL
122 libm_la_SOURCES =
123 libm_la_DEPENDENCIES = libm-libtool-objectlist
124
125 # objects listed later in LIBM_OBJECTLISTS will override those listed earlier
126 libm-libtool-objectlist: $(LIBM_OBJECTLISTS)
127         cat $(LIBM_OBJECTLISTS) | $(AWK) '{ libm[$$1] = $$2 }; END { for (x in libm) printf ("%s\n", libm[x]) }' > $@
128
129 libc_la_SOURCES =
130 libc_la_DEPENDENCIES = libc-libtool-objectlist
131
132 # objects listed later in LIBM_OBJECTLISTS and LIBC_OBJECTLISTS will override those listed earlier
133 libc-libtool-objectlist: $(LIBM_OBJECTLISTS) $(LIBC_OBJECTLISTS)
134         cat $(LIBM_OBJECTLISTS) $(LIBC_OBJECTLISTS) |  $(AWK) '{ libc[$$1] = $$2 }; END { for (x in libc) printf ("%s\n", libc[x]) }' > $@
135
136 else
137
138 libc.a: libc/libc.a libm.a
139         rm -rf libc.a libg.a tmp
140         mkdir tmp
141         cd tmp; \
142          $(AR) x ../libm.a $(MATHOBJS_IN_LIBC) ; \
143          $(AR) x ../libc/libc.a ; \
144          $(AR) $(AR_FLAGS) ../$@ *.o
145         $(RANLIB) libc.a
146         ln libc.a libg.a >/dev/null 2>/dev/null || cp libc.a libg.a
147         rm -rf tmp
148
149 libc/libc.a: ; @true
150
151 libm.a: libm/libm.a
152         rm -f $@
153         ln libm/libm.a $@ >/dev/null 2>/dev/null || cp libm/libm.a $@
154
155 libm/libm.a: ; @true
156
157 endif # USE_LIBTOOL
158
159 crt0.o: $(CRT0_DIR)/$(CRT0)
160         rm -f $@
161         ln $(CRT0_DIR)/$(CRT0) $@ >/dev/null 2>/dev/null \
162          || cp $(CRT0_DIR)/$(CRT0) $@
163
164 $(CRT0_DIR)/$(CRT0): ; @true
165
166 all-recursive: stmp-targ-include
167
168 # The targ-include directory just holds the includes files for the
169 # particular system and machine we have been configured for.  It is
170 # used while building.
171 stmp-targ-include: config.status
172         -rm -rf targ-include stmp-targ-include
173         mkdir targ-include targ-include/sys targ-include/machine
174         -for i in $(srcdir)/libc/machine/$(machine_dir)/machine/*.h; do \
175             if [ -f $$i ]; then \
176               cp $$i targ-include/machine/`basename $$i`; \
177             else true; fi ; \
178           done
179         -for i in $(srcdir)/libc/sys/$(sys_dir)/include/*.h; do \
180             if [ -f $$i ]; then \
181               cp $$i targ-include/`basename $$i`; \
182             else true; fi ; \
183           done
184         -for i in $(srcdir)/libc/sys/$(sys_dir)/sys/*.h; do \
185             if [ -f $$i ]; then \
186               cp $$i targ-include/sys/`basename $$i`; \
187             else true; fi ; \
188           done
189         touch $@
190
191 CLEANFILES = targ-include stmp-targ-include
192
193 install-data-local:     install-toollibLIBRARIES
194 if USE_LIBTOOL
195 else
196         rm -f $(DESTDIR)$(toollibdir)/libg.a
197         ln $(DESTDIR)$(toollibdir)/libc.a $(DESTDIR)$(toollibdir)/libg.a >/dev/null 2>/dev/null || cp $(DESTDIR)$(toollibdir)/libc.a $(DESTDIR)$(toollibdir)/libg.a
198 endif
199         $(MULTIDO) $(AM_MAKEFLAGS) DO=install multi-do
200         -if [ -z "$(MULTISUBDIR)" ]; then \
201           $(mkinstalldirs) $(DESTDIR)$(tooldir)/include; \
202           for i in $(srcdir)/libc/include/*.h; do \
203            $(INSTALL_DATA) $$i $(DESTDIR)$(tooldir)/include/`basename $$i`; \
204           done; \
205           $(mkinstalldirs) $(DESTDIR)$(tooldir)/include/machine; \
206           for i in $(srcdir)/libc/include/machine/*.h; do \
207            $(INSTALL_DATA) $$i $(DESTDIR)$(tooldir)/include/machine/`basename $$i`; \
208           done; \
209           for i in $(srcdir)/libc/machine/$(machine_dir)/machine/*.h; do \
210             if [ -f $$i ]; then \
211              $(INSTALL_DATA) $$i $(DESTDIR)$(tooldir)/include/machine/`basename $$i`; \
212             else true; fi ; \
213           done; \
214           $(mkinstalldirs) $(DESTDIR)$(tooldir)/include/sys; \
215           for i in $(srcdir)/libc/include/sys/*.h; do \
216            $(INSTALL_DATA) $$i $(DESTDIR)$(tooldir)/include/sys/`basename $$i`; \
217           done; \
218           for i in $(srcdir)/libc/sys/$(sys_dir)/sys/*.h; do \
219             if [ -f $$i ]; then \
220              $(INSTALL_DATA) $$i $(DESTDIR)$(tooldir)/include/sys/`basename $$i`; \
221             else true; fi ; \
222           done ; \
223           for i in $(srcdir)/libc/sys/$(sys_dir)/include/*.h; do \
224             if [ -f $$i ]; then \
225              $(INSTALL_DATA) $$i $(DESTDIR)$(tooldir)/include/`basename $$i`; \
226             else true; fi ; \
227           done ; \
228         else true; fi
229
230 # Force makedoc to be built before building info files.
231 info-recursive: doc/makedoc
232 dvi-recursive: doc/makedoc
233 doc/makedoc:
234         cd doc && $(MAKE) all
235
236 CONFIG_STATUS_DEPENDENCIES = $(newlib_basedir)/configure.host
237
238 # Multilib support.
239 .PHONY: all-multi mostlyclean-multi clean-multi distclean-multi \
240         maintainer-clean-multi
241
242 all-recursive: all-multi
243 mostlyclean-recursive: mostlyclean-multi
244 clean-recursive: clean-multi
245 distclean-recursive: distclean-multi
246 maintainer-clean-recursive: maintainer-clean-multi
247
248 all-multi:
249         $(MULTIDO) $(AM_MAKEFLAGS) DO=all multi-do
250 mostlyclean-multi:
251         $(MULTICLEAN) $(AM_MAKEFLAGS) DO=mostlyclean multi-clean
252 clean-multi:
253         $(MULTICLEAN) $(AM_MAKEFLAGS) DO=clean multi-clean
254 distclean-multi:
255         $(MULTICLEAN) $(AM_MAKEFLAGS) DO=distclean multi-clean
256 maintainer-clean-multi:
257         $(MULTICLEAN) $(AM_MAKEFLAGS) DO=maintainer-clean multi-clean
258
259 MAKEOVERRIDES=