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