]>
Commit | Line | Data |
---|---|---|
b2dad0e3 BK |
1 | ## Makefile for the src subdirectory of the GNU C++ Standard library. |
2 | ## | |
5fb0445d PC |
3 | ## Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 |
4 | ## 2006, 2007, 2008 | |
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 | |
13 | ## Free Software Foundation; either version 2, or (at your option) | |
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 | |
22 | ## with this library; see the file COPYING. If not, write to the Free | |
83f51799 | 23 | ## Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, |
b2dad0e3 BK |
24 | ## USA. |
25 | ||
0df3f383 | 26 | include $(top_srcdir)/fragment.am |
ae9dc931 | 27 | |
714e9334 | 28 | # Cross compiler support. |
b2dad0e3 BK |
29 | toolexeclib_LTLIBRARIES = libstdc++.la |
30 | ||
6aa43d99 | 31 | # Symbol versioning for shared libraries. |
fb5c309d BK |
32 | if ENABLE_SYMVERS |
33 | libstdc++-symbols.ver: ${glibcxx_srcdir}/$(SYMVER_FILE) \ | |
f9314d01 | 34 | $(port_specific_symbol_files) |
fb5c309d | 35 | cp ${glibcxx_srcdir}/$(SYMVER_FILE) ./libstdc++-symbols.ver |
593124a7 | 36 | chmod +w ./libstdc++-symbols.ver |
0df3f383 | 37 | if test "x$(port_specific_symbol_files)" != x; then \ |
6defecc2 JJ |
38 | if grep '^# Appended to version file.' \ |
39 | $(port_specific_symbol_files) /dev/null > /dev/null 2>&1; then \ | |
40 | cat $(port_specific_symbol_files) >> $@; \ | |
41 | else \ | |
42 | sed -n '1,/DO NOT DELETE/p' $@ > tmp.top; \ | |
43 | sed -n '/DO NOT DELETE/,$$p' $@ > tmp.bottom; \ | |
44 | cat tmp.top $(port_specific_symbol_files) tmp.bottom > $@; \ | |
45 | rm tmp.top tmp.bottom; \ | |
46 | fi; \ | |
e6b7a69a | 47 | fi |
f9314d01 GK |
48 | |
49 | if ENABLE_SYMVERS_GNU | |
fb5c309d BK |
50 | version_arg = -Wl,--version-script=libstdc++-symbols.ver |
51 | version_dep = libstdc++-symbols.ver | |
52 | endif | |
3cbc7af0 BK |
53 | if ENABLE_SYMVERS_GNU_NAMESPACE |
54 | version_arg = -Wl,--version-script=libstdc++-symbols.ver | |
55 | version_dep = libstdc++-symbols.ver | |
56 | endif | |
fb5c309d BK |
57 | if ENABLE_SYMVERS_DARWIN |
58 | version_arg = -Wl,-exported_symbols_list,libstdc++-symbols.explist | |
59 | version_dep = libstdc++-symbols.explist | |
60 | libstdc++-symbols.explist : libstdc++-symbols.ver \ | |
a9fdd472 GK |
61 | ${glibcxx_srcdir}/scripts/make_exports.pl \ |
62 | $(libstdc___la_OBJECTS) $(libstdc___la_LIBADD) | |
63 | perl ${glibcxx_srcdir}/scripts/make_exports.pl \ | |
fb5c309d | 64 | libstdc++-symbols.ver \ |
a9fdd472 GK |
65 | $(libstdc___la_OBJECTS:%.lo=.libs/%.o) \ |
66 | `echo $(libstdc___la_LIBADD) | \ | |
67 | sed 's,/\([^/.]*\)\.la,/.libs/\1.a,g'` \ | |
68 | > $@ || (rm -f $@ ; exit 1) | |
fb5c309d | 69 | endif |
a9fdd472 | 70 | else |
6aa43d99 | 71 | version_arg = |
7b865c36 | 72 | version_dep = |
6aa43d99 BK |
73 | endif |
74 | ||
5b80666b | 75 | |
6aa43d99 | 76 | # Source files linked in via configuration/make substitution for a |
a30335e9 BK |
77 | # particular host. |
78 | host_sources = \ | |
2c5d0ae8 | 79 | atomicity.cc \ |
38cca750 BK |
80 | codecvt_members.cc \ |
81 | collate_members.cc \ | |
82 | ctype_members.cc \ | |
83 | messages_members.cc \ | |
84 | monetary_members.cc \ | |
85 | numeric_members.cc \ | |
2c5d0ae8 | 86 | time_members.cc |
38cca750 | 87 | |
ca618b60 PE |
88 | codecvt_members.cc: ${glibcxx_srcdir}/$(CCODECVT_CC) |
89 | $(LN_S) ${glibcxx_srcdir}/$(CCODECVT_CC) . || true | |
6aa43d99 | 90 | |
ca618b60 PE |
91 | collate_members.cc: ${glibcxx_srcdir}/$(CCOLLATE_CC) |
92 | $(LN_S) ${glibcxx_srcdir}/$(CCOLLATE_CC) . || true | |
6aa43d99 | 93 | |
ca618b60 PE |
94 | ctype_members.cc: ${glibcxx_srcdir}/$(CCTYPE_CC) |
95 | $(LN_S) ${glibcxx_srcdir}/$(CCTYPE_CC) . || true | |
6aa43d99 | 96 | |
ca618b60 PE |
97 | messages_members.cc: ${glibcxx_srcdir}/$(CMESSAGES_CC) |
98 | $(LN_S) ${glibcxx_srcdir}/$(CMESSAGES_CC) . || true | |
6aa43d99 | 99 | |
ca618b60 PE |
100 | monetary_members.cc: ${glibcxx_srcdir}/$(CMONEY_CC) |
101 | $(LN_S) ${glibcxx_srcdir}/$(CMONEY_CC) . || true | |
6aa43d99 | 102 | |
ca618b60 PE |
103 | numeric_members.cc: ${glibcxx_srcdir}/$(CNUMERIC_CC) |
104 | $(LN_S) ${glibcxx_srcdir}/$(CNUMERIC_CC) . || true | |
6aa43d99 | 105 | |
ca618b60 PE |
106 | time_members.cc: ${glibcxx_srcdir}/$(CTIME_CC) |
107 | $(LN_S) ${glibcxx_srcdir}/$(CTIME_CC) . || true | |
6aa43d99 | 108 | |
2c5d0ae8 BK |
109 | atomicity_file = ${glibcxx_srcdir}/$(ATOMICITY_SRCDIR)/atomicity.h |
110 | atomicity.cc: ${atomicity_file} | |
111 | $(LN_S) ${atomicity_file} ./atomicity.cc || true | |
112 | ||
6aa43d99 | 113 | # Source files linked in via configuration/make substitution for a |
a30335e9 BK |
114 | # particular host, but with ad hoc naming rules. |
115 | host_sources_extra = \ | |
c2ba9709 | 116 | basic_file.cc c++locale.cc ${ldbl_compat_sources} ${parallel_sources} |
38cca750 | 117 | |
ca618b60 PE |
118 | c++locale.cc: ${glibcxx_srcdir}/$(CLOCALE_CC) |
119 | $(LN_S) ${glibcxx_srcdir}/$(CLOCALE_CC) ./$@ || true | |
6aa43d99 | 120 | |
ca618b60 PE |
121 | basic_file.cc: ${glibcxx_srcdir}/$(BASIC_FILE_CC) |
122 | $(LN_S) ${glibcxx_srcdir}/$(BASIC_FILE_CC) ./$@ || true | |
6aa43d99 | 123 | |
c2ba9709 | 124 | if ENABLE_PARALLEL |
ee1b5fc5 | 125 | parallel_sources = parallel_list.cc parallel_settings.cc |
c2ba9709 JS |
126 | else |
127 | parallel_sources = | |
128 | endif | |
129 | ||
6defecc2 JJ |
130 | if GLIBCXX_LDBL_COMPAT |
131 | ldbl_compat_sources = compatibility-ldbl.cc | |
132 | else | |
133 | ldbl_compat_sources = | |
134 | endif | |
135 | ||
38cca750 BK |
136 | # Sources present in the src directory. |
137 | sources = \ | |
d466a7e2 | 138 | atomic.cc \ |
1399eca1 | 139 | bitmap_allocator.cc \ |
8bfd0a46 BK |
140 | pool_allocator.cc \ |
141 | mt_allocator.cc \ | |
7f2e0dff | 142 | codecvt.cc \ |
bb2b2a24 | 143 | compatibility.cc \ |
7f2e0dff | 144 | complex_io.cc \ |
7f2e0dff | 145 | ctype.cc \ |
285b36d6 | 146 | debug.cc \ |
7f2e0dff | 147 | functexcept.cc \ |
9adfc73c BK |
148 | hash.cc \ |
149 | hash_c++0x.cc \ | |
c755e77d | 150 | globals_io.cc \ |
4d007574 | 151 | hashtable.cc \ |
eeb77d99 | 152 | hashtable_c++0x.cc \ |
7f2e0dff | 153 | ios.cc \ |
93d04686 | 154 | ios_failure.cc \ |
c755e77d BK |
155 | ios_init.cc \ |
156 | ios_locale.cc \ | |
7f2e0dff | 157 | limits.cc \ |
5fb0445d | 158 | limits_c++0x.cc \ |
e135a038 | 159 | list.cc \ |
c2ba9709 | 160 | debug_list.cc \ |
7f2e0dff | 161 | locale.cc \ |
c755e77d BK |
162 | locale_init.cc \ |
163 | locale_facets.cc \ | |
7f2e0dff | 164 | localename.cc \ |
c755e77d | 165 | stdexcept.cc \ |
c755e77d | 166 | strstream.cc \ |
0646d8a3 | 167 | system_error.cc \ |
e135a038 | 168 | tree.cc \ |
c755e77d BK |
169 | allocator-inst.cc \ |
170 | concept-inst.cc \ | |
171 | fstream-inst.cc \ | |
172 | ext-inst.cc \ | |
6fbcd2e5 BK |
173 | ios-inst.cc \ |
174 | iostream-inst.cc \ | |
c755e77d | 175 | istream-inst.cc \ |
adb31ad6 | 176 | istream.cc \ |
c755e77d | 177 | locale-inst.cc \ |
7f2e0dff | 178 | misc-inst.cc \ |
7f2e0dff PE |
179 | ostream-inst.cc \ |
180 | sstream-inst.cc \ | |
7f2e0dff | 181 | streambuf-inst.cc \ |
2bf8accc | 182 | streambuf.cc \ |
7f2e0dff | 183 | string-inst.cc \ |
7f2e0dff | 184 | valarray-inst.cc \ |
c755e77d | 185 | wlocale-inst.cc \ |
38cca750 | 186 | wstring-inst.cc \ |
68a97d24 BK |
187 | mutex.cc \ |
188 | condition_variable.cc \ | |
15e38d0d | 189 | chrono.cc \ |
46e113bf | 190 | thread.cc \ |
a30335e9 | 191 | ${host_sources} \ |
c2ba9709 | 192 | ${host_sources_extra} |
b2dad0e3 | 193 | |
d683ec81 PB |
194 | vpath % $(top_srcdir)/src |
195 | vpath % $(top_srcdir) | |
b2dad0e3 | 196 | |
b2dad0e3 BK |
197 | libstdc___la_SOURCES = $(sources) |
198 | ||
5d89258a | 199 | libstdc___la_LIBADD = \ |
ec6fa56a | 200 | $(GLIBCXX_LIBS) \ |
58ac1d7f | 201 | $(top_builddir)/libmath/libmath.la \ |
6aa43d99 | 202 | $(top_builddir)/libsupc++/libsupc++convenience.la |
b2dad0e3 | 203 | |
ec6fa56a PB |
204 | libstdc___la_DEPENDENCIES = \ |
205 | ${version_dep} \ | |
206 | $(top_builddir)/libmath/libmath.la \ | |
207 | $(top_builddir)/libsupc++/libsupc++convenience.la | |
b2dad0e3 | 208 | |
263c6fa8 | 209 | libstdc___la_LDFLAGS = \ |
86025553 | 210 | -version-info $(libtool_VERSION) ${version_arg} -lm |
5d89258a | 211 | |
e08838ac BK |
212 | # Use special rules for the deprecated source files so that they find |
213 | # deprecated include files. | |
ca618b60 | 214 | GLIBCXX_INCLUDE_DIR=$(glibcxx_builddir)/include |
e08838ac | 215 | strstream.lo: strstream.cc |
3d7c150e | 216 | $(LTCXXCOMPILE) -I$(GLIBCXX_INCLUDE_DIR)/backward -Wno-deprecated -c $< |
e08838ac | 217 | strstream.o: strstream.cc |
3d7c150e | 218 | $(CXXCOMPILE) -I$(GLIBCXX_INCLUDE_DIR)/backward -Wno-deprecated -c $< |
e08838ac | 219 | |
4d16bdbb PE |
220 | # Use special rules for the concept-checking instantiations so that all |
221 | # the generated template functions are also instantiated. Force the checks | |
222 | # to be on so that the instantiations are actually seen. | |
223 | concept-inst.lo: concept-inst.cc | |
3d7c150e | 224 | $(LTCXXCOMPILE) -D_GLIBCXX_CONCEPT_CHECKS -fimplicit-templates -c $< |
4d16bdbb | 225 | concept-inst.o: concept-inst.cc |
3d7c150e | 226 | $(CXXCOMPILE) -D_GLIBCXX_CONCEPT_CHECKS -fimplicit-templates -c $< |
4d16bdbb | 227 | |
847eb551 BK |
228 | # Use special rules for parallel mode compilation. |
229 | PARALLEL_FLAGS = -fopenmp -D_GLIBCXX_PARALLEL -I$(glibcxx_builddir)/../libgomp | |
c2ba9709 | 230 | parallel_list.lo: parallel_list.cc |
847eb551 | 231 | $(LTCXXCOMPILE) $(PARALLEL_FLAGS) -c $< |
c2ba9709 | 232 | parallel_list.o: parallel_list.cc |
847eb551 | 233 | $(CXXCOMPILE) $(PARALLEL_FLAGS) -c $< |
c2ba9709 | 234 | |
ee1b5fc5 BK |
235 | parallel_settings.lo: parallel_settings.cc |
236 | $(LTCXXCOMPILE) $(PARALLEL_FLAGS) -c $< | |
237 | parallel_settings.o: parallel_settings.cc | |
238 | $(CXXCOMPILE) $(PARALLEL_FLAGS) -c $< | |
239 | ||
0646d8a3 | 240 | # Use special rules for the C++0x sources so that the proper flags are passed. |
68a97d24 BK |
241 | functexcept.lo: functexcept.cc |
242 | $(LTCXXCOMPILE) -std=gnu++0x -c $< | |
243 | functexcept.o: functexcept.cc | |
244 | $(CXXCOMPILE) -std=gnu++0x -c $< | |
245 | ||
0646d8a3 BK |
246 | system_error.lo: system_error.cc |
247 | $(LTCXXCOMPILE) -std=gnu++0x -c $< | |
248 | system_error.o: system_error.cc | |
249 | $(CXXCOMPILE) -std=gnu++0x -c $< | |
250 | ||
68a97d24 BK |
251 | mutex.lo: mutex.cc |
252 | $(LTCXXCOMPILE) -std=gnu++0x -c $< | |
253 | mutex.o: mutex.cc | |
254 | $(CXXCOMPILE) -std=gnu++0x -c $< | |
255 | ||
256 | condition_variable.lo: condition_variable.cc | |
257 | $(LTCXXCOMPILE) -std=gnu++0x -c $< | |
258 | condition_variable.o: condition_variable.cc | |
259 | $(CXXCOMPILE) -std=gnu++0x -c $< | |
260 | ||
9adfc73c BK |
261 | hash_c++0x.lo: hash_c++0x.cc |
262 | $(LTCXXCOMPILE) -std=gnu++0x -c $< | |
263 | hash_c++0x.o: hash_c++0x.cc | |
264 | $(CXXCOMPILE) -std=gnu++0x -c $< | |
265 | ||
4d007574 PC |
266 | hashtable_c++0x.lo: hashtable_c++0x.cc |
267 | $(LTCXXCOMPILE) -std=gnu++0x -c $< | |
268 | hashtable_c++0x.o: hashtable_c++0x.cc | |
269 | $(CXXCOMPILE) -std=gnu++0x -c $< | |
270 | ||
5fb0445d PC |
271 | limits_c++0x.lo: limits_c++0x.cc |
272 | $(LTCXXCOMPILE) -std=gnu++0x -c $< | |
273 | limits_c++0x.o: limits_c++0x.cc | |
274 | $(CXXCOMPILE) -std=gnu++0x -c $< | |
275 | ||
d466a7e2 BK |
276 | atomic.lo: atomic.cc |
277 | $(LTCXXCOMPILE) -x c++ -std=gnu++0x -c $< | |
278 | atomic.o: atomic.cc | |
279 | $(CXXCOMPILE) -x c++ -std=gnu++0x -c $< | |
280 | ||
988499f4 JM |
281 | string-inst.lo: string-inst.cc |
282 | $(LTCXXCOMPILE) -std=gnu++0x -c $< | |
283 | string-inst.o: string-inst.cc | |
284 | $(CXXCOMPILE) -std=gnu++0x -c $< | |
285 | ||
286 | wstring-inst.lo: wstring-inst.cc | |
287 | $(LTCXXCOMPILE) -std=gnu++0x -c $< | |
288 | wstring-inst.o: wstring-inst.cc | |
289 | $(CXXCOMPILE) -std=gnu++0x -c $< | |
290 | ||
15e38d0d CF |
291 | chrono.lo: chrono.cc |
292 | $(LTCXXCOMPILE) -std=gnu++0x -c $< | |
293 | chrono.o: chrono.cc | |
294 | $(CXXCOMPILE) -std=gnu++0x -c $< | |
295 | ||
46e113bf CF |
296 | thread.lo: thread.cc |
297 | $(LTCXXCOMPILE) -std=gnu++0x -c $< | |
298 | thread.o: thread.cc | |
299 | $(CXXCOMPILE) -std=gnu++0x -c $< | |
300 | ||
6defecc2 JJ |
301 | if GLIBCXX_LDBL_COMPAT |
302 | # Use special rules for compatibility-ldbl.cc compilation, as we need to | |
303 | # pass -mlong-double-64. | |
304 | compatibility-ldbl.lo: compatibility-ldbl.cc | |
305 | $(LTCXXCOMPILE) -mlong-double-64 -c $< | |
306 | compatibility-ldbl.o: compatibility-ldbl.cc | |
307 | $(CXXCOMPILE) -mlong-double-64 -c $< | |
308 | endif | |
309 | ||
0b8e0cf3 | 310 | # AM_CXXFLAGS needs to be in each subdirectory so that it can be |
a9117427 BK |
311 | # modified in a per-library or per-sub-library way. Need to manually |
312 | # set this option because CONFIG_CXXFLAGS has to be after | |
313 | # OPTIMIZE_CXXFLAGS on the compile line so that -O2 can be overridden | |
e6b7a69a | 314 | # as the occasion calls for it. |
0b8e0cf3 | 315 | AM_CXXFLAGS = \ |
47e982b2 | 316 | -fno-implicit-templates \ |
0b8e0cf3 BK |
317 | $(WARN_CXXFLAGS) \ |
318 | $(OPTIMIZE_CXXFLAGS) \ | |
e6b7a69a | 319 | $(CONFIG_CXXFLAGS) |
0b8e0cf3 | 320 | |
e974e9cc | 321 | |
a9117427 BK |
322 | # libstdc++ libtool notes |
323 | ||
324 | # 1) Need to explicitly set LTCXXCOMPILE so that AM_CXXFLAGS is | |
325 | # last. (That way, things like -O2 passed down from the toplevel can | |
326 | # be overridden by --enable-debug.) | |
327 | ||
328 | # 2) In general, libtool expects an argument such as `--tag=CXX' when | |
329 | # using the C++ compiler, because that will enable the settings | |
330 | # detected when C++ support was being configured. However, when no | |
331 | # such flag is given in the command line, libtool attempts to figure | |
332 | # it out by matching the compiler name in each configuration section | |
333 | # against a prefix of the command line. The problem is that, if the | |
334 | # compiler name and its initial flags stored in the libtool | |
335 | # configuration file don't match those in the command line, libtool | |
336 | # can't decide which configuration to use, and it gives up. The | |
337 | # correct solution is to add `--tag CXX' to LTCXXCOMPILE and maybe | |
338 | # CXXLINK, just after $(LIBTOOL), so that libtool doesn't have to | |
339 | # attempt to infer which configuration to use | |
340 | LTCXXCOMPILE = $(LIBTOOL) --tag CXX --mode=compile $(CXX) $(INCLUDES) \ | |
b967bf25 | 341 | $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) |
e974e9cc | 342 | |
d79e6356 MM |
343 | LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS)) |
344 | ||
787d2fb7 AO |
345 | # 3) We'd have a problem when building the shared libstdc++ object if |
346 | # the rules automake generates would be used. We cannot allow g++ to | |
347 | # be used since this would add -lstdc++ to the link line which of | |
348 | # course is problematic at this point. So, we get the top-level | |
349 | # directory to configure libstdc++-v3 to use gcc as the C++ | |
350 | # compilation driver. | |
351 | CXXLINK = $(LIBTOOL) --tag CXX --mode=link $(CXX) \ | |
d79e6356 | 352 | $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@ |
6aa43d99 BK |
353 | |
354 | ||
355 | # Added bits to build debug library. | |
3d7c150e | 356 | if GLIBCXX_BUILD_DEBUG |
6aa43d99 BK |
357 | all-local: build_debug |
358 | install-data-local: install_debug | |
359 | else | |
360 | all-local: | |
e6b7a69a | 361 | install-data-local: |
6aa43d99 BK |
362 | endif |
363 | ||
364 | debugdir = debug | |
365 | ||
9adfc73c | 366 | # Build a set of debug objects here. |
e6b7a69a | 367 | stamp-debug: |
6aa43d99 BK |
368 | if test ! -d ${debugdir}; then \ |
369 | mkdir -p ${debugdir}; \ | |
370 | (cd ${debugdir}; \ | |
7ec3af37 BK |
371 | sed -e 's/top_builddir = \.\./top_builddir = ..\/../' \ |
372 | -e 's/srcdir = \.\./srcdir = ..\/../' \ | |
3d7c150e | 373 | -e 's/glibcxx_basedir = \.\./glibcxx_basedir = ..\/../' \ |
7ec3af37 BK |
374 | -e 's/all-local: build_debug/all-local:/' \ |
375 | -e 's/install-data-local: install_debug/install-data-local:/' \ | |
376 | < ../Makefile > Makefile) ; \ | |
6aa43d99 | 377 | fi; \ |
e6b7a69a | 378 | echo `date` > stamp-debug; |
6aa43d99 BK |
379 | |
380 | build_debug: stamp-debug | |
ca618b60 | 381 | (cd ${debugdir} && $(MAKE) CXXFLAGS='$(DEBUG_FLAGS)' all) |
6aa43d99 BK |
382 | |
383 | # Install debug library here. | |
e6b7a69a | 384 | install_debug: |
6aa43d99 | 385 | (cd ${debugdir} && $(MAKE) \ |
ca618b60 | 386 | toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install) |