]>
Commit | Line | Data |
---|---|---|
b2dad0e3 BK |
1 | ## Makefile for the src subdirectory of the GNU C++ Standard library. |
2 | ## | |
5fb0445d | 3 | ## Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 |
240c7f7f | 4 | ## 2006, 2007, 2008, 2009, 2010 |
530539d9 | 5 | ## Free Software Foundation, Inc. |
b2dad0e3 BK |
6 | ## |
7 | ## This file is part of the libstdc++ version 3 distribution. | |
8 | ## Process this file with automake to produce Makefile.in. | |
9 | ||
10 | ## This file is part of the GNU ISO C++ Library. This library is free | |
11 | ## software; you can redistribute it and/or modify it under the | |
12 | ## terms of the GNU General Public License as published by the | |
748086b7 | 13 | ## Free Software Foundation; either version 3, or (at your option) |
b2dad0e3 BK |
14 | ## any later version. |
15 | ||
16 | ## This library is distributed in the hope that it will be useful, | |
17 | ## but WITHOUT ANY WARRANTY; without even the implied warranty of | |
18 | ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
19 | ## GNU General Public License for more details. | |
20 | ||
21 | ## You should have received a copy of the GNU General Public License along | |
748086b7 JJ |
22 | ## with this library; see the file COPYING3. If not see |
23 | ## <http://www.gnu.org/licenses/>. | |
b2dad0e3 | 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. |
fb5c309d BK |
31 | if ENABLE_SYMVERS |
32 | libstdc++-symbols.ver: ${glibcxx_srcdir}/$(SYMVER_FILE) \ | |
f9314d01 | 33 | $(port_specific_symbol_files) |
fb5c309d | 34 | cp ${glibcxx_srcdir}/$(SYMVER_FILE) ./libstdc++-symbols.ver |
593124a7 | 35 | chmod +w ./libstdc++-symbols.ver |
0df3f383 | 36 | if test "x$(port_specific_symbol_files)" != x; then \ |
6defecc2 JJ |
37 | if grep '^# Appended to version file.' \ |
38 | $(port_specific_symbol_files) /dev/null > /dev/null 2>&1; then \ | |
39 | cat $(port_specific_symbol_files) >> $@; \ | |
40 | else \ | |
41 | sed -n '1,/DO NOT DELETE/p' $@ > tmp.top; \ | |
42 | sed -n '/DO NOT DELETE/,$$p' $@ > tmp.bottom; \ | |
43 | cat tmp.top $(port_specific_symbol_files) tmp.bottom > $@; \ | |
44 | rm tmp.top tmp.bottom; \ | |
45 | fi; \ | |
e6b7a69a | 46 | fi |
f9314d01 | 47 | |
c18dc5cc RO |
48 | CLEANFILES = libstdc++-symbols.ver |
49 | ||
f9314d01 | 50 | if ENABLE_SYMVERS_GNU |
c18dc5cc RO |
51 | if ENABLE_SYMVERS_SOL2 |
52 | version_arg = -Wl,--version-script,libstdc++-symbols.ver-sol2 | |
53 | version_dep = libstdc++-symbols.ver-sol2 | |
54 | libstdc++-symbols.ver-sol2 : libstdc++-symbols.ver | |
55 | sed -e '/^#ifdef HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT/,/^#endif/d' $< \ | |
56 | > $@ || (rm -f $@ ; exit 1) | |
57 | else | |
fb5c309d BK |
58 | version_arg = -Wl,--version-script=libstdc++-symbols.ver |
59 | version_dep = libstdc++-symbols.ver | |
60 | endif | |
c18dc5cc | 61 | endif |
3cbc7af0 BK |
62 | if ENABLE_SYMVERS_GNU_NAMESPACE |
63 | version_arg = -Wl,--version-script=libstdc++-symbols.ver | |
64 | version_dep = libstdc++-symbols.ver | |
65 | endif | |
c18dc5cc RO |
66 | if ENABLE_SYMVERS_SUN |
67 | version_arg = -Wl,-M,libstdc++-symbols.ver-sun | |
68 | version_dep = libstdc++-symbols.ver-sun | |
69 | libstdc++-symbols.ver-sun : libstdc++-symbols.ver \ | |
70 | $(toplevel_srcdir)/contrib/make_sunver.pl \ | |
71 | $(libstdc___la_OBJECTS) $(libstdc___la_LIBADD) | |
72 | CXXFILT="$(CXXFILT)"; export CXXFILT; \ | |
73 | perl $(toplevel_srcdir)/contrib/make_sunver.pl \ | |
74 | libstdc++-symbols.ver \ | |
75 | $(libstdc___la_OBJECTS:%.lo=.libs/%.o) \ | |
76 | `echo $(libstdc___la_LIBADD) | \ | |
77 | sed 's,/\([^/.]*\)\.la,/.libs/\1.a,g'` \ | |
78 | > $@ || (rm -f $@ ; exit 1) | |
79 | endif | |
fb5c309d BK |
80 | if ENABLE_SYMVERS_DARWIN |
81 | version_arg = -Wl,-exported_symbols_list,libstdc++-symbols.explist | |
82 | version_dep = libstdc++-symbols.explist | |
83 | libstdc++-symbols.explist : libstdc++-symbols.ver \ | |
a9fdd472 GK |
84 | ${glibcxx_srcdir}/scripts/make_exports.pl \ |
85 | $(libstdc___la_OBJECTS) $(libstdc___la_LIBADD) | |
86 | perl ${glibcxx_srcdir}/scripts/make_exports.pl \ | |
fb5c309d | 87 | libstdc++-symbols.ver \ |
a9fdd472 GK |
88 | $(libstdc___la_OBJECTS:%.lo=.libs/%.o) \ |
89 | `echo $(libstdc___la_LIBADD) | \ | |
90 | sed 's,/\([^/.]*\)\.la,/.libs/\1.a,g'` \ | |
91 | > $@ || (rm -f $@ ; exit 1) | |
fb5c309d | 92 | endif |
c18dc5cc RO |
93 | |
94 | CLEANFILES += $(version_dep) | |
a9fdd472 | 95 | else |
6aa43d99 | 96 | version_arg = |
7b865c36 | 97 | version_dep = |
6aa43d99 BK |
98 | endif |
99 | ||
5b80666b | 100 | |
6aa43d99 | 101 | # Source files linked in via configuration/make substitution for a |
a30335e9 BK |
102 | # particular host. |
103 | host_sources = \ | |
2c5d0ae8 | 104 | atomicity.cc \ |
38cca750 BK |
105 | codecvt_members.cc \ |
106 | collate_members.cc \ | |
107 | ctype_members.cc \ | |
108 | messages_members.cc \ | |
109 | monetary_members.cc \ | |
110 | numeric_members.cc \ | |
2c5d0ae8 | 111 | time_members.cc |
38cca750 | 112 | |
ca618b60 PE |
113 | codecvt_members.cc: ${glibcxx_srcdir}/$(CCODECVT_CC) |
114 | $(LN_S) ${glibcxx_srcdir}/$(CCODECVT_CC) . || true | |
6aa43d99 | 115 | |
ca618b60 PE |
116 | collate_members.cc: ${glibcxx_srcdir}/$(CCOLLATE_CC) |
117 | $(LN_S) ${glibcxx_srcdir}/$(CCOLLATE_CC) . || true | |
6aa43d99 | 118 | |
ca618b60 PE |
119 | ctype_members.cc: ${glibcxx_srcdir}/$(CCTYPE_CC) |
120 | $(LN_S) ${glibcxx_srcdir}/$(CCTYPE_CC) . || true | |
6aa43d99 | 121 | |
ca618b60 PE |
122 | messages_members.cc: ${glibcxx_srcdir}/$(CMESSAGES_CC) |
123 | $(LN_S) ${glibcxx_srcdir}/$(CMESSAGES_CC) . || true | |
6aa43d99 | 124 | |
ca618b60 PE |
125 | monetary_members.cc: ${glibcxx_srcdir}/$(CMONEY_CC) |
126 | $(LN_S) ${glibcxx_srcdir}/$(CMONEY_CC) . || true | |
6aa43d99 | 127 | |
ca618b60 PE |
128 | numeric_members.cc: ${glibcxx_srcdir}/$(CNUMERIC_CC) |
129 | $(LN_S) ${glibcxx_srcdir}/$(CNUMERIC_CC) . || true | |
6aa43d99 | 130 | |
ca618b60 PE |
131 | time_members.cc: ${glibcxx_srcdir}/$(CTIME_CC) |
132 | $(LN_S) ${glibcxx_srcdir}/$(CTIME_CC) . || true | |
6aa43d99 | 133 | |
2c5d0ae8 BK |
134 | atomicity_file = ${glibcxx_srcdir}/$(ATOMICITY_SRCDIR)/atomicity.h |
135 | atomicity.cc: ${atomicity_file} | |
136 | $(LN_S) ${atomicity_file} ./atomicity.cc || true | |
137 | ||
6aa43d99 | 138 | # Source files linked in via configuration/make substitution for a |
a30335e9 BK |
139 | # particular host, but with ad hoc naming rules. |
140 | host_sources_extra = \ | |
c2ba9709 | 141 | basic_file.cc c++locale.cc ${ldbl_compat_sources} ${parallel_sources} |
38cca750 | 142 | |
ca618b60 PE |
143 | c++locale.cc: ${glibcxx_srcdir}/$(CLOCALE_CC) |
144 | $(LN_S) ${glibcxx_srcdir}/$(CLOCALE_CC) ./$@ || true | |
6aa43d99 | 145 | |
ca618b60 PE |
146 | basic_file.cc: ${glibcxx_srcdir}/$(BASIC_FILE_CC) |
147 | $(LN_S) ${glibcxx_srcdir}/$(BASIC_FILE_CC) ./$@ || true | |
6aa43d99 | 148 | |
c2ba9709 | 149 | if ENABLE_PARALLEL |
12ffa228 BK |
150 | parallel_sources = parallel_settings.cc \ |
151 | compatibility-parallel_list.cc \ | |
152 | compatibility-parallel_list-2.cc | |
c2ba9709 JS |
153 | else |
154 | parallel_sources = | |
155 | endif | |
156 | ||
6defecc2 JJ |
157 | if GLIBCXX_LDBL_COMPAT |
158 | ldbl_compat_sources = compatibility-ldbl.cc | |
159 | else | |
160 | ldbl_compat_sources = | |
161 | endif | |
162 | ||
38cca750 BK |
163 | # Sources present in the src directory. |
164 | sources = \ | |
d466a7e2 | 165 | atomic.cc \ |
1399eca1 | 166 | bitmap_allocator.cc \ |
8bfd0a46 BK |
167 | pool_allocator.cc \ |
168 | mt_allocator.cc \ | |
7f2e0dff | 169 | codecvt.cc \ |
bb2b2a24 | 170 | compatibility.cc \ |
4a85780b | 171 | compatibility-c++0x.cc \ |
240c7f7f | 172 | compatibility-debug_list.cc \ |
12ffa228 | 173 | compatibility-debug_list-2.cc \ |
240c7f7f | 174 | compatibility-list.cc \ |
12ffa228 | 175 | compatibility-list-2.cc \ |
7f2e0dff | 176 | complex_io.cc \ |
7f2e0dff | 177 | ctype.cc \ |
285b36d6 | 178 | debug.cc \ |
7f2e0dff | 179 | functexcept.cc \ |
c755e77d | 180 | globals_io.cc \ |
15d81a3c PC |
181 | hash_c++0x.cc \ |
182 | hash_tr1.cc \ | |
eeb77d99 | 183 | hashtable_c++0x.cc \ |
15d81a3c | 184 | hashtable_tr1.cc \ |
7f2e0dff | 185 | ios.cc \ |
93d04686 | 186 | ios_failure.cc \ |
c755e77d BK |
187 | ios_init.cc \ |
188 | ios_locale.cc \ | |
7f2e0dff | 189 | limits.cc \ |
e135a038 | 190 | list.cc \ |
7f2e0dff | 191 | locale.cc \ |
c755e77d BK |
192 | locale_init.cc \ |
193 | locale_facets.cc \ | |
7f2e0dff | 194 | localename.cc \ |
7d4260a3 | 195 | math_stubs_float.cc \ |
1457ddca | 196 | math_stubs_long_double.cc \ |
c755e77d | 197 | stdexcept.cc \ |
c755e77d | 198 | strstream.cc \ |
0646d8a3 | 199 | system_error.cc \ |
e135a038 | 200 | tree.cc \ |
c755e77d BK |
201 | allocator-inst.cc \ |
202 | concept-inst.cc \ | |
203 | fstream-inst.cc \ | |
204 | ext-inst.cc \ | |
6fbcd2e5 BK |
205 | ios-inst.cc \ |
206 | iostream-inst.cc \ | |
c755e77d | 207 | istream-inst.cc \ |
adb31ad6 | 208 | istream.cc \ |
c755e77d | 209 | locale-inst.cc \ |
7f2e0dff | 210 | misc-inst.cc \ |
7f2e0dff | 211 | ostream-inst.cc \ |
4192922c | 212 | placeholders.cc \ |
7f2e0dff | 213 | sstream-inst.cc \ |
7f2e0dff | 214 | streambuf-inst.cc \ |
2bf8accc | 215 | streambuf.cc \ |
7f2e0dff | 216 | string-inst.cc \ |
7f2e0dff | 217 | valarray-inst.cc \ |
c755e77d | 218 | wlocale-inst.cc \ |
38cca750 | 219 | wstring-inst.cc \ |
68a97d24 BK |
220 | mutex.cc \ |
221 | condition_variable.cc \ | |
15e38d0d | 222 | chrono.cc \ |
46e113bf | 223 | thread.cc \ |
c910ceff | 224 | future.cc \ |
a30335e9 | 225 | ${host_sources} \ |
c2ba9709 | 226 | ${host_sources_extra} |
b2dad0e3 | 227 | |
d683ec81 PB |
228 | vpath % $(top_srcdir)/src |
229 | vpath % $(top_srcdir) | |
b2dad0e3 | 230 | |
b2dad0e3 BK |
231 | libstdc___la_SOURCES = $(sources) |
232 | ||
5d89258a | 233 | libstdc___la_LIBADD = \ |
ec6fa56a | 234 | $(GLIBCXX_LIBS) \ |
6aa43d99 | 235 | $(top_builddir)/libsupc++/libsupc++convenience.la |
b2dad0e3 | 236 | |
ec6fa56a PB |
237 | libstdc___la_DEPENDENCIES = \ |
238 | ${version_dep} \ | |
ec6fa56a | 239 | $(top_builddir)/libsupc++/libsupc++convenience.la |
b2dad0e3 | 240 | |
263c6fa8 | 241 | libstdc___la_LDFLAGS = \ |
86025553 | 242 | -version-info $(libtool_VERSION) ${version_arg} -lm |
5d89258a | 243 | |
878f62e5 RW |
244 | libstdc___la_LINK = $(CXXLINK) $(libstdc___la_LDFLAGS) |
245 | ||
e08838ac BK |
246 | # Use special rules for the deprecated source files so that they find |
247 | # deprecated include files. | |
ca618b60 | 248 | GLIBCXX_INCLUDE_DIR=$(glibcxx_builddir)/include |
e08838ac | 249 | strstream.lo: strstream.cc |
3d7c150e | 250 | $(LTCXXCOMPILE) -I$(GLIBCXX_INCLUDE_DIR)/backward -Wno-deprecated -c $< |
e08838ac | 251 | strstream.o: strstream.cc |
3d7c150e | 252 | $(CXXCOMPILE) -I$(GLIBCXX_INCLUDE_DIR)/backward -Wno-deprecated -c $< |
e08838ac | 253 | |
4d16bdbb PE |
254 | # Use special rules for the concept-checking instantiations so that all |
255 | # the generated template functions are also instantiated. Force the checks | |
256 | # to be on so that the instantiations are actually seen. | |
257 | concept-inst.lo: concept-inst.cc | |
3d7c150e | 258 | $(LTCXXCOMPILE) -D_GLIBCXX_CONCEPT_CHECKS -fimplicit-templates -c $< |
4d16bdbb | 259 | concept-inst.o: concept-inst.cc |
3d7c150e | 260 | $(CXXCOMPILE) -D_GLIBCXX_CONCEPT_CHECKS -fimplicit-templates -c $< |
4d16bdbb | 261 | |
847eb551 BK |
262 | # Use special rules for parallel mode compilation. |
263 | PARALLEL_FLAGS = -fopenmp -D_GLIBCXX_PARALLEL -I$(glibcxx_builddir)/../libgomp | |
ee1b5fc5 BK |
264 | parallel_settings.lo: parallel_settings.cc |
265 | $(LTCXXCOMPILE) $(PARALLEL_FLAGS) -c $< | |
266 | parallel_settings.o: parallel_settings.cc | |
267 | $(CXXCOMPILE) $(PARALLEL_FLAGS) -c $< | |
268 | ||
240c7f7f | 269 | compatibility-parallel_list.lo: compatibility-parallel_list.cc |
12ffa228 | 270 | $(LTCXXCOMPILE) -c $< |
240c7f7f | 271 | compatibility-parallel_list.o: compatibility-parallel_list.cc |
12ffa228 BK |
272 | $(CXXCOMPILE) -c $< |
273 | ||
274 | compatibility-parallel_list-2.lo: compatibility-parallel_list-2.cc | |
275 | $(LTCXXCOMPILE) -c $< | |
276 | compatibility-parallel_list-2.o: compatibility-parallel_list-2.cc | |
277 | $(CXXCOMPILE) -c $< | |
240c7f7f | 278 | |
0646d8a3 | 279 | # Use special rules for the C++0x sources so that the proper flags are passed. |
68a97d24 BK |
280 | functexcept.lo: functexcept.cc |
281 | $(LTCXXCOMPILE) -std=gnu++0x -c $< | |
282 | functexcept.o: functexcept.cc | |
283 | $(CXXCOMPILE) -std=gnu++0x -c $< | |
284 | ||
0646d8a3 BK |
285 | system_error.lo: system_error.cc |
286 | $(LTCXXCOMPILE) -std=gnu++0x -c $< | |
287 | system_error.o: system_error.cc | |
288 | $(CXXCOMPILE) -std=gnu++0x -c $< | |
289 | ||
68a97d24 BK |
290 | mutex.lo: mutex.cc |
291 | $(LTCXXCOMPILE) -std=gnu++0x -c $< | |
292 | mutex.o: mutex.cc | |
293 | $(CXXCOMPILE) -std=gnu++0x -c $< | |
294 | ||
295 | condition_variable.lo: condition_variable.cc | |
296 | $(LTCXXCOMPILE) -std=gnu++0x -c $< | |
297 | condition_variable.o: condition_variable.cc | |
298 | $(CXXCOMPILE) -std=gnu++0x -c $< | |
299 | ||
4a85780b | 300 | compatibility-c++0x.lo: compatibility-c++0x.cc |
9adfc73c | 301 | $(LTCXXCOMPILE) -std=gnu++0x -c $< |
4a85780b | 302 | compatibility-c++0x.o: compatibility-c++0x.cc |
9adfc73c BK |
303 | $(CXXCOMPILE) -std=gnu++0x -c $< |
304 | ||
15d81a3c PC |
305 | hash_c++0x.lo: hash_c++0x.cc |
306 | $(LTCXXCOMPILE) -std=gnu++0x -c $< | |
307 | hash_c++0x.o: hash_c++0x.cc | |
308 | $(CXXCOMPILE) -std=gnu++0x -c $< | |
309 | ||
4d007574 PC |
310 | hashtable_c++0x.lo: hashtable_c++0x.cc |
311 | $(LTCXXCOMPILE) -std=gnu++0x -c $< | |
312 | hashtable_c++0x.o: hashtable_c++0x.cc | |
313 | $(CXXCOMPILE) -std=gnu++0x -c $< | |
314 | ||
240c7f7f | 315 | limits.lo: limits.cc |
5fb0445d | 316 | $(LTCXXCOMPILE) -std=gnu++0x -c $< |
240c7f7f | 317 | limits.o: limits.cc |
5fb0445d PC |
318 | $(CXXCOMPILE) -std=gnu++0x -c $< |
319 | ||
d466a7e2 | 320 | atomic.lo: atomic.cc |
7581b88a | 321 | $(LTCXXCOMPILE) -std=gnu++0x -c $< |
d466a7e2 | 322 | atomic.o: atomic.cc |
7581b88a | 323 | $(CXXCOMPILE) -std=gnu++0x -c $< |
d466a7e2 | 324 | |
41bc3c4a JW |
325 | fstream-inst.lo: fstream-inst.cc |
326 | $(LTCXXCOMPILE) -std=gnu++0x -c $< | |
327 | fstream-inst.o: fstream-inst.cc | |
328 | $(CXXCOMPILE) -std=gnu++0x -c $< | |
329 | ||
988499f4 JM |
330 | string-inst.lo: string-inst.cc |
331 | $(LTCXXCOMPILE) -std=gnu++0x -c $< | |
332 | string-inst.o: string-inst.cc | |
333 | $(CXXCOMPILE) -std=gnu++0x -c $< | |
334 | ||
335 | wstring-inst.lo: wstring-inst.cc | |
336 | $(LTCXXCOMPILE) -std=gnu++0x -c $< | |
337 | wstring-inst.o: wstring-inst.cc | |
338 | $(CXXCOMPILE) -std=gnu++0x -c $< | |
339 | ||
15e38d0d CF |
340 | chrono.lo: chrono.cc |
341 | $(LTCXXCOMPILE) -std=gnu++0x -c $< | |
342 | chrono.o: chrono.cc | |
343 | $(CXXCOMPILE) -std=gnu++0x -c $< | |
344 | ||
46e113bf CF |
345 | thread.lo: thread.cc |
346 | $(LTCXXCOMPILE) -std=gnu++0x -c $< | |
347 | thread.o: thread.cc | |
348 | $(CXXCOMPILE) -std=gnu++0x -c $< | |
349 | ||
c910ceff JW |
350 | future.lo: future.cc |
351 | $(LTCXXCOMPILE) -std=gnu++0x -c $< | |
352 | future.o: future.cc | |
353 | $(CXXCOMPILE) -std=gnu++0x -c $< | |
354 | ||
afe96d41 FD |
355 | debug.lo: debug.cc |
356 | $(LTCXXCOMPILE) -std=gnu++0x -c $< | |
357 | debug.o: debug.cc | |
358 | $(CXXCOMPILE) -std=gnu++0x -c $< | |
359 | ||
4192922c PC |
360 | placeholders.lo: placeholders.cc |
361 | $(LTCXXCOMPILE) -std=gnu++0x -c $< | |
362 | placeholders.o: placeholders.cc | |
363 | $(CXXCOMPILE) -std=gnu++0x -c $< | |
364 | ||
6defecc2 JJ |
365 | if GLIBCXX_LDBL_COMPAT |
366 | # Use special rules for compatibility-ldbl.cc compilation, as we need to | |
367 | # pass -mlong-double-64. | |
368 | compatibility-ldbl.lo: compatibility-ldbl.cc | |
369 | $(LTCXXCOMPILE) -mlong-double-64 -c $< | |
370 | compatibility-ldbl.o: compatibility-ldbl.cc | |
371 | $(CXXCOMPILE) -mlong-double-64 -c $< | |
372 | endif | |
373 | ||
0b8e0cf3 | 374 | # AM_CXXFLAGS needs to be in each subdirectory so that it can be |
a9117427 BK |
375 | # modified in a per-library or per-sub-library way. Need to manually |
376 | # set this option because CONFIG_CXXFLAGS has to be after | |
377 | # OPTIMIZE_CXXFLAGS on the compile line so that -O2 can be overridden | |
e6b7a69a | 378 | # as the occasion calls for it. |
0b8e0cf3 | 379 | AM_CXXFLAGS = \ |
47e982b2 | 380 | -fno-implicit-templates \ |
0b8e0cf3 BK |
381 | $(WARN_CXXFLAGS) \ |
382 | $(OPTIMIZE_CXXFLAGS) \ | |
e6b7a69a | 383 | $(CONFIG_CXXFLAGS) |
0b8e0cf3 | 384 | |
e974e9cc | 385 | |
a9117427 BK |
386 | # libstdc++ libtool notes |
387 | ||
388 | # 1) Need to explicitly set LTCXXCOMPILE so that AM_CXXFLAGS is | |
389 | # last. (That way, things like -O2 passed down from the toplevel can | |
390 | # be overridden by --enable-debug.) | |
391 | ||
392 | # 2) In general, libtool expects an argument such as `--tag=CXX' when | |
393 | # using the C++ compiler, because that will enable the settings | |
394 | # detected when C++ support was being configured. However, when no | |
395 | # such flag is given in the command line, libtool attempts to figure | |
396 | # it out by matching the compiler name in each configuration section | |
397 | # against a prefix of the command line. The problem is that, if the | |
398 | # compiler name and its initial flags stored in the libtool | |
399 | # configuration file don't match those in the command line, libtool | |
400 | # can't decide which configuration to use, and it gives up. The | |
401 | # correct solution is to add `--tag CXX' to LTCXXCOMPILE and maybe | |
402 | # CXXLINK, just after $(LIBTOOL), so that libtool doesn't have to | |
403 | # attempt to infer which configuration to use | |
84fec8a5 RW |
404 | LTCXXCOMPILE = $(LIBTOOL) --tag CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile \ |
405 | $(CXX) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) | |
e974e9cc | 406 | |
d79e6356 MM |
407 | LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS)) |
408 | ||
787d2fb7 AO |
409 | # 3) We'd have a problem when building the shared libstdc++ object if |
410 | # the rules automake generates would be used. We cannot allow g++ to | |
411 | # be used since this would add -lstdc++ to the link line which of | |
412 | # course is problematic at this point. So, we get the top-level | |
413 | # directory to configure libstdc++-v3 to use gcc as the C++ | |
414 | # compilation driver. | |
84fec8a5 RW |
415 | CXXLINK = $(LIBTOOL) --tag CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ |
416 | $(CXX) $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@ | |
6aa43d99 BK |
417 | |
418 | ||
419 | # Added bits to build debug library. | |
3d7c150e | 420 | if GLIBCXX_BUILD_DEBUG |
6aa43d99 BK |
421 | all-local: build_debug |
422 | install-data-local: install_debug | |
423 | else | |
424 | all-local: | |
e6b7a69a | 425 | install-data-local: |
6aa43d99 BK |
426 | endif |
427 | ||
428 | debugdir = debug | |
429 | ||
9adfc73c | 430 | # Build a set of debug objects here. |
8d03ad01 | 431 | # Take care to fix all possibly-relative paths. |
e6b7a69a | 432 | stamp-debug: |
6aa43d99 BK |
433 | if test ! -d ${debugdir}; then \ |
434 | mkdir -p ${debugdir}; \ | |
435 | (cd ${debugdir}; \ | |
7ec3af37 | 436 | sed -e 's/top_builddir = \.\./top_builddir = ..\/../' \ |
8d03ad01 | 437 | -e 's/top_build_prefix = \.\./top_build_prefix = ..\/../' \ |
7ec3af37 | 438 | -e 's/srcdir = \.\./srcdir = ..\/../' \ |
9606fadb | 439 | -e 's/VPATH = \.\./VPATH = ..\/../' \ |
3d7c150e | 440 | -e 's/glibcxx_basedir = \.\./glibcxx_basedir = ..\/../' \ |
8d03ad01 | 441 | -e 's/MKDIR_P = \.\./MKDIR_P = ..\/../' \ |
7ec3af37 BK |
442 | -e 's/all-local: build_debug/all-local:/' \ |
443 | -e 's/install-data-local: install_debug/install-data-local:/' \ | |
444 | < ../Makefile > Makefile) ; \ | |
6aa43d99 | 445 | fi; \ |
e6b7a69a | 446 | echo `date` > stamp-debug; |
6aa43d99 BK |
447 | |
448 | build_debug: stamp-debug | |
ca618b60 | 449 | (cd ${debugdir} && $(MAKE) CXXFLAGS='$(DEBUG_FLAGS)' all) |
6aa43d99 BK |
450 | |
451 | # Install debug library here. | |
e6b7a69a | 452 | install_debug: |
6aa43d99 | 453 | (cd ${debugdir} && $(MAKE) \ |
ca618b60 | 454 | toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install) |