]> git.ipfire.org Git - thirdparty/gcc.git/blame - libstdc++-v3/src/Makefile.am
Licensing changes to GPLv3 resp. GPLv3 with GCC Runtime Exception.
[thirdparty/gcc.git] / libstdc++-v3 / src / Makefile.am
CommitLineData
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 25include $(top_srcdir)/fragment.am
ae9dc931 26
714e9334 27# Cross compiler support.
b2dad0e3
BK
28toolexeclib_LTLIBRARIES = libstdc++.la
29
6aa43d99 30# Symbol versioning for shared libraries.
fb5c309d
BK
31if ENABLE_SYMVERS
32libstdc++-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
48if ENABLE_SYMVERS_GNU
fb5c309d
BK
49version_arg = -Wl,--version-script=libstdc++-symbols.ver
50version_dep = libstdc++-symbols.ver
51endif
3cbc7af0
BK
52if ENABLE_SYMVERS_GNU_NAMESPACE
53version_arg = -Wl,--version-script=libstdc++-symbols.ver
54version_dep = libstdc++-symbols.ver
55endif
fb5c309d
BK
56if ENABLE_SYMVERS_DARWIN
57version_arg = -Wl,-exported_symbols_list,libstdc++-symbols.explist
58version_dep = libstdc++-symbols.explist
59libstdc++-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 68endif
a9fdd472 69else
6aa43d99 70version_arg =
7b865c36 71version_dep =
6aa43d99
BK
72endif
73
5b80666b 74
6aa43d99 75# Source files linked in via configuration/make substitution for a
a30335e9
BK
76# particular host.
77host_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
87codecvt_members.cc: ${glibcxx_srcdir}/$(CCODECVT_CC)
88 $(LN_S) ${glibcxx_srcdir}/$(CCODECVT_CC) . || true
6aa43d99 89
ca618b60
PE
90collate_members.cc: ${glibcxx_srcdir}/$(CCOLLATE_CC)
91 $(LN_S) ${glibcxx_srcdir}/$(CCOLLATE_CC) . || true
6aa43d99 92
ca618b60
PE
93ctype_members.cc: ${glibcxx_srcdir}/$(CCTYPE_CC)
94 $(LN_S) ${glibcxx_srcdir}/$(CCTYPE_CC) . || true
6aa43d99 95
ca618b60
PE
96messages_members.cc: ${glibcxx_srcdir}/$(CMESSAGES_CC)
97 $(LN_S) ${glibcxx_srcdir}/$(CMESSAGES_CC) . || true
6aa43d99 98
ca618b60
PE
99monetary_members.cc: ${glibcxx_srcdir}/$(CMONEY_CC)
100 $(LN_S) ${glibcxx_srcdir}/$(CMONEY_CC) . || true
6aa43d99 101
ca618b60
PE
102numeric_members.cc: ${glibcxx_srcdir}/$(CNUMERIC_CC)
103 $(LN_S) ${glibcxx_srcdir}/$(CNUMERIC_CC) . || true
6aa43d99 104
ca618b60
PE
105time_members.cc: ${glibcxx_srcdir}/$(CTIME_CC)
106 $(LN_S) ${glibcxx_srcdir}/$(CTIME_CC) . || true
6aa43d99 107
2c5d0ae8
BK
108atomicity_file = ${glibcxx_srcdir}/$(ATOMICITY_SRCDIR)/atomicity.h
109atomicity.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.
114host_sources_extra = \
c2ba9709 115 basic_file.cc c++locale.cc ${ldbl_compat_sources} ${parallel_sources}
38cca750 116
ca618b60
PE
117c++locale.cc: ${glibcxx_srcdir}/$(CLOCALE_CC)
118 $(LN_S) ${glibcxx_srcdir}/$(CLOCALE_CC) ./$@ || true
6aa43d99 119
ca618b60
PE
120basic_file.cc: ${glibcxx_srcdir}/$(BASIC_FILE_CC)
121 $(LN_S) ${glibcxx_srcdir}/$(BASIC_FILE_CC) ./$@ || true
6aa43d99 122
c2ba9709 123if ENABLE_PARALLEL
ee1b5fc5 124parallel_sources = parallel_list.cc parallel_settings.cc
c2ba9709
JS
125else
126parallel_sources =
127endif
128
6defecc2
JJ
129if GLIBCXX_LDBL_COMPAT
130ldbl_compat_sources = compatibility-ldbl.cc
131else
132ldbl_compat_sources =
133endif
134
38cca750
BK
135# Sources present in the src directory.
136sources = \
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
195vpath % $(top_srcdir)/src
196vpath % $(top_srcdir)
b2dad0e3 197
b2dad0e3
BK
198libstdc___la_SOURCES = $(sources)
199
5d89258a 200libstdc___la_LIBADD = \
ec6fa56a 201 $(GLIBCXX_LIBS) \
6aa43d99 202 $(top_builddir)/libsupc++/libsupc++convenience.la
b2dad0e3 203
ec6fa56a
PB
204libstdc___la_DEPENDENCIES = \
205 ${version_dep} \
ec6fa56a 206 $(top_builddir)/libsupc++/libsupc++convenience.la
b2dad0e3 207
263c6fa8 208libstdc___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 213GLIBCXX_INCLUDE_DIR=$(glibcxx_builddir)/include
e08838ac 214strstream.lo: strstream.cc
3d7c150e 215 $(LTCXXCOMPILE) -I$(GLIBCXX_INCLUDE_DIR)/backward -Wno-deprecated -c $<
e08838ac 216strstream.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.
222concept-inst.lo: concept-inst.cc
3d7c150e 223 $(LTCXXCOMPILE) -D_GLIBCXX_CONCEPT_CHECKS -fimplicit-templates -c $<
4d16bdbb 224concept-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.
228PARALLEL_FLAGS = -fopenmp -D_GLIBCXX_PARALLEL -I$(glibcxx_builddir)/../libgomp
c2ba9709 229parallel_list.lo: parallel_list.cc
847eb551 230 $(LTCXXCOMPILE) $(PARALLEL_FLAGS) -c $<
c2ba9709 231parallel_list.o: parallel_list.cc
847eb551 232 $(CXXCOMPILE) $(PARALLEL_FLAGS) -c $<
c2ba9709 233
ee1b5fc5
BK
234parallel_settings.lo: parallel_settings.cc
235 $(LTCXXCOMPILE) $(PARALLEL_FLAGS) -c $<
236parallel_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
240functexcept.lo: functexcept.cc
241 $(LTCXXCOMPILE) -std=gnu++0x -c $<
242functexcept.o: functexcept.cc
243 $(CXXCOMPILE) -std=gnu++0x -c $<
244
0646d8a3
BK
245system_error.lo: system_error.cc
246 $(LTCXXCOMPILE) -std=gnu++0x -c $<
247system_error.o: system_error.cc
248 $(CXXCOMPILE) -std=gnu++0x -c $<
249
68a97d24
BK
250mutex.lo: mutex.cc
251 $(LTCXXCOMPILE) -std=gnu++0x -c $<
252mutex.o: mutex.cc
253 $(CXXCOMPILE) -std=gnu++0x -c $<
254
255condition_variable.lo: condition_variable.cc
256 $(LTCXXCOMPILE) -std=gnu++0x -c $<
257condition_variable.o: condition_variable.cc
258 $(CXXCOMPILE) -std=gnu++0x -c $<
259
9adfc73c
BK
260hash_c++0x.lo: hash_c++0x.cc
261 $(LTCXXCOMPILE) -std=gnu++0x -c $<
262hash_c++0x.o: hash_c++0x.cc
263 $(CXXCOMPILE) -std=gnu++0x -c $<
264
4d007574
PC
265hashtable_c++0x.lo: hashtable_c++0x.cc
266 $(LTCXXCOMPILE) -std=gnu++0x -c $<
267hashtable_c++0x.o: hashtable_c++0x.cc
268 $(CXXCOMPILE) -std=gnu++0x -c $<
269
5fb0445d
PC
270limits_c++0x.lo: limits_c++0x.cc
271 $(LTCXXCOMPILE) -std=gnu++0x -c $<
272limits_c++0x.o: limits_c++0x.cc
273 $(CXXCOMPILE) -std=gnu++0x -c $<
274
d466a7e2 275atomic.lo: atomic.cc
7581b88a 276 $(LTCXXCOMPILE) -std=gnu++0x -c $<
d466a7e2 277atomic.o: atomic.cc
7581b88a 278 $(CXXCOMPILE) -std=gnu++0x -c $<
d466a7e2 279
988499f4
JM
280string-inst.lo: string-inst.cc
281 $(LTCXXCOMPILE) -std=gnu++0x -c $<
282string-inst.o: string-inst.cc
283 $(CXXCOMPILE) -std=gnu++0x -c $<
284
285wstring-inst.lo: wstring-inst.cc
286 $(LTCXXCOMPILE) -std=gnu++0x -c $<
287wstring-inst.o: wstring-inst.cc
288 $(CXXCOMPILE) -std=gnu++0x -c $<
289
15e38d0d
CF
290chrono.lo: chrono.cc
291 $(LTCXXCOMPILE) -std=gnu++0x -c $<
292chrono.o: chrono.cc
293 $(CXXCOMPILE) -std=gnu++0x -c $<
294
46e113bf
CF
295thread.lo: thread.cc
296 $(LTCXXCOMPILE) -std=gnu++0x -c $<
297thread.o: thread.cc
298 $(CXXCOMPILE) -std=gnu++0x -c $<
299
6defecc2
JJ
300if GLIBCXX_LDBL_COMPAT
301# Use special rules for compatibility-ldbl.cc compilation, as we need to
302# pass -mlong-double-64.
303compatibility-ldbl.lo: compatibility-ldbl.cc
304 $(LTCXXCOMPILE) -mlong-double-64 -c $<
305compatibility-ldbl.o: compatibility-ldbl.cc
306 $(CXXCOMPILE) -mlong-double-64 -c $<
307endif
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 314AM_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
339LTCXXCOMPILE = $(LIBTOOL) --tag CXX --mode=compile $(CXX) $(INCLUDES) \
b967bf25 340 $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
e974e9cc 341
d79e6356
MM
342LTLDFLAGS = $(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.
350CXXLINK = $(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 355if GLIBCXX_BUILD_DEBUG
6aa43d99
BK
356all-local: build_debug
357install-data-local: install_debug
358else
359all-local:
e6b7a69a 360install-data-local:
6aa43d99
BK
361endif
362
363debugdir = debug
364
9adfc73c 365# Build a set of debug objects here.
e6b7a69a 366stamp-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
379build_debug: stamp-debug
ca618b60 380 (cd ${debugdir} && $(MAKE) CXXFLAGS='$(DEBUG_FLAGS)' all)
6aa43d99
BK
381
382# Install debug library here.
e6b7a69a 383install_debug:
6aa43d99 384 (cd ${debugdir} && $(MAKE) \
ca618b60 385 toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install)