]>
Commit | Line | Data |
---|---|---|
b2dad0e3 BK |
1 | ## Makefile for the src subdirectory of the GNU C++ Standard library. |
2 | ## | |
7ec3af37 | 3 | ## Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003 |
530539d9 | 4 | ## Free Software Foundation, Inc. |
b2dad0e3 BK |
5 | ## |
6 | ## This file is part of the libstdc++ version 3 distribution. | |
7 | ## Process this file with automake to produce Makefile.in. | |
8 | ||
9 | ## This file is part of the GNU ISO C++ Library. This library is free | |
10 | ## software; you can redistribute it and/or modify it under the | |
11 | ## terms of the GNU General Public License as published by the | |
12 | ## Free Software Foundation; either version 2, or (at your option) | |
13 | ## any later version. | |
14 | ||
15 | ## This library is distributed in the hope that it will be useful, | |
16 | ## but WITHOUT ANY WARRANTY; without even the implied warranty of | |
17 | ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
18 | ## GNU General Public License for more details. | |
19 | ||
20 | ## You should have received a copy of the GNU General Public License along | |
21 | ## with this library; see the file COPYING. If not, write to the Free | |
22 | ## Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, | |
23 | ## USA. | |
24 | ||
0df3f383 | 25 | include $(top_srcdir)/fragment.am |
ae9dc931 | 26 | |
714e9334 | 27 | # Cross compiler support. |
b2dad0e3 BK |
28 | toolexeclib_LTLIBRARIES = libstdc++.la |
29 | ||
6aa43d99 | 30 | # Symbol versioning for shared libraries. |
a9fdd472 | 31 | if ENABLE_SYMVERS_GNU |
6aa43d99 | 32 | version_arg = -Wl,--version-script=libstdc++-symbol.ver |
7b865c36 | 33 | version_dep = libstdc++-symbol.ver |
0df3f383 PE |
34 | libstdc++-symbol.ver: ${glibcxx_srcdir}/$(SYMVER_MAP) |
35 | cp ${glibcxx_srcdir}/$(SYMVER_MAP) ./libstdc++-symbol.ver | |
36 | if test "x$(port_specific_symbol_files)" != x; then \ | |
e6b7a69a PE |
37 | sed -n '1,/DO NOT DELETE/p' $@ > tmp.top; \ |
38 | sed -n '/DO NOT DELETE/,$$p' $@ > tmp.bottom; \ | |
0df3f383 | 39 | cat tmp.top $(port_specific_symbol_files) tmp.bottom > $@; \ |
e6b7a69a PE |
40 | rm tmp.top tmp.bottom; \ |
41 | fi | |
6aa43d99 | 42 | else |
a9fdd472 GK |
43 | if ENABLE_SYMVERS_DARWIN_EXPORT |
44 | version_arg = -Wl,-exported_symbols_list,libstdc++-symbol.explist | |
45 | version_dep = libstdc++-symbol.explist | |
46 | libstdc++-symbol.explist : ${glibcxx_srcdir}/$(SYMVER_MAP) \ | |
47 | ${glibcxx_srcdir}/scripts/make_exports.pl \ | |
48 | $(libstdc___la_OBJECTS) $(libstdc___la_LIBADD) | |
49 | perl ${glibcxx_srcdir}/scripts/make_exports.pl \ | |
50 | ${glibcxx_srcdir}/$(SYMVER_MAP) \ | |
51 | $(libstdc___la_OBJECTS:%.lo=.libs/%.o) \ | |
52 | `echo $(libstdc___la_LIBADD) | \ | |
53 | sed 's,/\([^/.]*\)\.la,/.libs/\1.a,g'` \ | |
54 | > $@ || (rm -f $@ ; exit 1) | |
55 | else | |
6aa43d99 | 56 | version_arg = |
7b865c36 | 57 | version_dep = |
6aa43d99 | 58 | endif |
a9fdd472 | 59 | endif |
6aa43d99 | 60 | |
5b80666b | 61 | |
6aa43d99 | 62 | # Source files linked in via configuration/make substitution for a |
a30335e9 BK |
63 | # particular host. |
64 | host_sources = \ | |
2c5d0ae8 | 65 | atomicity.cc \ |
38cca750 BK |
66 | codecvt_members.cc \ |
67 | collate_members.cc \ | |
68 | ctype_members.cc \ | |
69 | messages_members.cc \ | |
70 | monetary_members.cc \ | |
71 | numeric_members.cc \ | |
2c5d0ae8 | 72 | time_members.cc |
38cca750 | 73 | |
ca618b60 PE |
74 | codecvt_members.cc: ${glibcxx_srcdir}/$(CCODECVT_CC) |
75 | $(LN_S) ${glibcxx_srcdir}/$(CCODECVT_CC) . || true | |
6aa43d99 | 76 | |
ca618b60 PE |
77 | collate_members.cc: ${glibcxx_srcdir}/$(CCOLLATE_CC) |
78 | $(LN_S) ${glibcxx_srcdir}/$(CCOLLATE_CC) . || true | |
6aa43d99 | 79 | |
ca618b60 PE |
80 | ctype_members.cc: ${glibcxx_srcdir}/$(CCTYPE_CC) |
81 | $(LN_S) ${glibcxx_srcdir}/$(CCTYPE_CC) . || true | |
6aa43d99 | 82 | |
ca618b60 PE |
83 | messages_members.cc: ${glibcxx_srcdir}/$(CMESSAGES_CC) |
84 | $(LN_S) ${glibcxx_srcdir}/$(CMESSAGES_CC) . || true | |
6aa43d99 | 85 | |
ca618b60 PE |
86 | monetary_members.cc: ${glibcxx_srcdir}/$(CMONEY_CC) |
87 | $(LN_S) ${glibcxx_srcdir}/$(CMONEY_CC) . || true | |
6aa43d99 | 88 | |
ca618b60 PE |
89 | numeric_members.cc: ${glibcxx_srcdir}/$(CNUMERIC_CC) |
90 | $(LN_S) ${glibcxx_srcdir}/$(CNUMERIC_CC) . || true | |
6aa43d99 | 91 | |
ca618b60 PE |
92 | time_members.cc: ${glibcxx_srcdir}/$(CTIME_CC) |
93 | $(LN_S) ${glibcxx_srcdir}/$(CTIME_CC) . || true | |
6aa43d99 | 94 | |
2c5d0ae8 BK |
95 | atomicity_file = ${glibcxx_srcdir}/$(ATOMICITY_SRCDIR)/atomicity.h |
96 | atomicity.cc: ${atomicity_file} | |
97 | $(LN_S) ${atomicity_file} ./atomicity.cc || true | |
98 | ||
6aa43d99 | 99 | # Source files linked in via configuration/make substitution for a |
a30335e9 BK |
100 | # particular host, but with ad hoc naming rules. |
101 | host_sources_extra = \ | |
7f2e0dff | 102 | basic_file.cc \ |
e6b7a69a | 103 | c++locale.cc |
38cca750 | 104 | |
ca618b60 PE |
105 | c++locale.cc: ${glibcxx_srcdir}/$(CLOCALE_CC) |
106 | $(LN_S) ${glibcxx_srcdir}/$(CLOCALE_CC) ./$@ || true | |
6aa43d99 | 107 | |
ca618b60 PE |
108 | basic_file.cc: ${glibcxx_srcdir}/$(BASIC_FILE_CC) |
109 | $(LN_S) ${glibcxx_srcdir}/$(BASIC_FILE_CC) ./$@ || true | |
6aa43d99 | 110 | |
38cca750 BK |
111 | # Sources present in the src directory. |
112 | sources = \ | |
1399eca1 | 113 | bitmap_allocator.cc \ |
8bfd0a46 BK |
114 | pool_allocator.cc \ |
115 | mt_allocator.cc \ | |
7f2e0dff | 116 | codecvt.cc \ |
bb2b2a24 | 117 | compatibility.cc \ |
7f2e0dff | 118 | complex_io.cc \ |
7f2e0dff | 119 | ctype.cc \ |
285b36d6 | 120 | debug.cc \ |
390e4c0d | 121 | debug_list.cc \ |
7f2e0dff | 122 | functexcept.cc \ |
c755e77d BK |
123 | globals_locale.cc \ |
124 | globals_io.cc \ | |
7f2e0dff | 125 | ios.cc \ |
93d04686 | 126 | ios_failure.cc \ |
c755e77d BK |
127 | ios_init.cc \ |
128 | ios_locale.cc \ | |
7f2e0dff | 129 | limits.cc \ |
e135a038 | 130 | list.cc \ |
7f2e0dff | 131 | locale.cc \ |
c755e77d BK |
132 | locale_init.cc \ |
133 | locale_facets.cc \ | |
7f2e0dff | 134 | localename.cc \ |
c755e77d | 135 | stdexcept.cc \ |
c755e77d | 136 | strstream.cc \ |
e135a038 | 137 | tree.cc \ |
c755e77d BK |
138 | allocator-inst.cc \ |
139 | concept-inst.cc \ | |
140 | fstream-inst.cc \ | |
141 | ext-inst.cc \ | |
142 | io-inst.cc \ | |
143 | istream-inst.cc \ | |
adb31ad6 | 144 | istream.cc \ |
c755e77d BK |
145 | locale-inst.cc \ |
146 | locale-misc-inst.cc \ | |
7f2e0dff | 147 | misc-inst.cc \ |
7f2e0dff PE |
148 | ostream-inst.cc \ |
149 | sstream-inst.cc \ | |
7f2e0dff | 150 | streambuf-inst.cc \ |
2bf8accc | 151 | streambuf.cc \ |
7f2e0dff | 152 | string-inst.cc \ |
7f2e0dff | 153 | valarray-inst.cc \ |
c755e77d | 154 | wlocale-inst.cc \ |
38cca750 | 155 | wstring-inst.cc \ |
a30335e9 BK |
156 | ${host_sources} \ |
157 | ${host_sources_extra} | |
b2dad0e3 | 158 | |
74a3070f | 159 | VPATH = $(top_srcdir)/src:$(top_srcdir) |
b2dad0e3 | 160 | |
b2dad0e3 BK |
161 | libstdc___la_SOURCES = $(sources) |
162 | ||
5d89258a | 163 | libstdc___la_LIBADD = \ |
58ac1d7f | 164 | $(top_builddir)/libmath/libmath.la \ |
6aa43d99 | 165 | $(top_builddir)/libsupc++/libsupc++convenience.la |
b2dad0e3 | 166 | |
7b865c36 | 167 | libstdc___la_DEPENDENCIES = ${version_dep} $(libstdc___la_LIBADD) |
b2dad0e3 | 168 | |
263c6fa8 | 169 | libstdc___la_LDFLAGS = \ |
86025553 | 170 | -version-info $(libtool_VERSION) ${version_arg} -lm |
5d89258a | 171 | |
b2dad0e3 | 172 | |
e08838ac BK |
173 | # Use special rules for the deprecated source files so that they find |
174 | # deprecated include files. | |
ca618b60 | 175 | GLIBCXX_INCLUDE_DIR=$(glibcxx_builddir)/include |
e08838ac | 176 | strstream.lo: strstream.cc |
3d7c150e | 177 | $(LTCXXCOMPILE) -I$(GLIBCXX_INCLUDE_DIR)/backward -Wno-deprecated -c $< |
e08838ac | 178 | strstream.o: strstream.cc |
3d7c150e | 179 | $(CXXCOMPILE) -I$(GLIBCXX_INCLUDE_DIR)/backward -Wno-deprecated -c $< |
e08838ac | 180 | |
4d16bdbb PE |
181 | # Use special rules for the concept-checking instantiations so that all |
182 | # the generated template functions are also instantiated. Force the checks | |
183 | # to be on so that the instantiations are actually seen. | |
184 | concept-inst.lo: concept-inst.cc | |
3d7c150e | 185 | $(LTCXXCOMPILE) -D_GLIBCXX_CONCEPT_CHECKS -fimplicit-templates -c $< |
4d16bdbb | 186 | concept-inst.o: concept-inst.cc |
3d7c150e | 187 | $(CXXCOMPILE) -D_GLIBCXX_CONCEPT_CHECKS -fimplicit-templates -c $< |
4d16bdbb | 188 | |
0b8e0cf3 | 189 | # AM_CXXFLAGS needs to be in each subdirectory so that it can be |
a9117427 BK |
190 | # modified in a per-library or per-sub-library way. Need to manually |
191 | # set this option because CONFIG_CXXFLAGS has to be after | |
192 | # OPTIMIZE_CXXFLAGS on the compile line so that -O2 can be overridden | |
e6b7a69a | 193 | # as the occasion calls for it. |
0b8e0cf3 | 194 | AM_CXXFLAGS = \ |
47e982b2 | 195 | -fno-implicit-templates \ |
0b8e0cf3 BK |
196 | $(WARN_CXXFLAGS) \ |
197 | $(OPTIMIZE_CXXFLAGS) \ | |
e6b7a69a | 198 | $(CONFIG_CXXFLAGS) |
0b8e0cf3 | 199 | |
e974e9cc | 200 | |
a9117427 BK |
201 | # libstdc++ libtool notes |
202 | ||
203 | # 1) Need to explicitly set LTCXXCOMPILE so that AM_CXXFLAGS is | |
204 | # last. (That way, things like -O2 passed down from the toplevel can | |
205 | # be overridden by --enable-debug.) | |
206 | ||
207 | # 2) In general, libtool expects an argument such as `--tag=CXX' when | |
208 | # using the C++ compiler, because that will enable the settings | |
209 | # detected when C++ support was being configured. However, when no | |
210 | # such flag is given in the command line, libtool attempts to figure | |
211 | # it out by matching the compiler name in each configuration section | |
212 | # against a prefix of the command line. The problem is that, if the | |
213 | # compiler name and its initial flags stored in the libtool | |
214 | # configuration file don't match those in the command line, libtool | |
215 | # can't decide which configuration to use, and it gives up. The | |
216 | # correct solution is to add `--tag CXX' to LTCXXCOMPILE and maybe | |
217 | # CXXLINK, just after $(LIBTOOL), so that libtool doesn't have to | |
218 | # attempt to infer which configuration to use | |
219 | LTCXXCOMPILE = $(LIBTOOL) --tag CXX --mode=compile $(CXX) $(INCLUDES) \ | |
e6b7a69a | 220 | $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(AM_CXXFLAGS) |
e974e9cc | 221 | |
787d2fb7 AO |
222 | # 3) We'd have a problem when building the shared libstdc++ object if |
223 | # the rules automake generates would be used. We cannot allow g++ to | |
224 | # be used since this would add -lstdc++ to the link line which of | |
225 | # course is problematic at this point. So, we get the top-level | |
226 | # directory to configure libstdc++-v3 to use gcc as the C++ | |
227 | # compilation driver. | |
228 | CXXLINK = $(LIBTOOL) --tag CXX --mode=link $(CXX) \ | |
ca618b60 | 229 | $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LDFLAGS) -o $@ |
6aa43d99 BK |
230 | |
231 | ||
232 | # Added bits to build debug library. | |
3d7c150e | 233 | if GLIBCXX_BUILD_DEBUG |
6aa43d99 BK |
234 | all-local: build_debug |
235 | install-data-local: install_debug | |
236 | else | |
237 | all-local: | |
e6b7a69a | 238 | install-data-local: |
6aa43d99 BK |
239 | endif |
240 | ||
241 | debugdir = debug | |
242 | ||
243 | # Build parallel set of debug objects here. | |
e6b7a69a | 244 | stamp-debug: |
6aa43d99 BK |
245 | if test ! -d ${debugdir}; then \ |
246 | mkdir -p ${debugdir}; \ | |
247 | (cd ${debugdir}; \ | |
7ec3af37 BK |
248 | sed -e 's/top_builddir = \.\./top_builddir = ..\/../' \ |
249 | -e 's/srcdir = \.\./srcdir = ..\/../' \ | |
3d7c150e | 250 | -e 's/glibcxx_basedir = \.\./glibcxx_basedir = ..\/../' \ |
7ec3af37 BK |
251 | -e 's/all-local: build_debug/all-local:/' \ |
252 | -e 's/install-data-local: install_debug/install-data-local:/' \ | |
253 | < ../Makefile > Makefile) ; \ | |
6aa43d99 | 254 | fi; \ |
e6b7a69a | 255 | echo `date` > stamp-debug; |
6aa43d99 BK |
256 | |
257 | build_debug: stamp-debug | |
ca618b60 | 258 | (cd ${debugdir} && $(MAKE) CXXFLAGS='$(DEBUG_FLAGS)' all) |
6aa43d99 BK |
259 | |
260 | # Install debug library here. | |
e6b7a69a | 261 | install_debug: |
6aa43d99 | 262 | (cd ${debugdir} && $(MAKE) \ |
ca618b60 | 263 | toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install) |