]>
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 | ||
8b5fd469 | 25 | AUTOMAKE_OPTIONS = 1.3 cygnus |
b2dad0e3 BK |
26 | MAINT_CHARSET = latin1 |
27 | ||
ae9dc931 BK |
28 | mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs |
29 | ||
714e9334 | 30 | # Cross compiler support. |
3d7c150e BK |
31 | CXX = @glibcxx_CXX@ |
32 | glibcxx_srcdir=@glibcxx_srcdir@ | |
33 | glibcxx_builddir=@glibcxx_builddir@ | |
34 | toolexecdir = @glibcxx_toolexecdir@ | |
35 | toolexeclibdir = @glibcxx_toolexeclibdir@ | |
b2dad0e3 BK |
36 | toolexeclib_LTLIBRARIES = libstdc++.la |
37 | ||
6aa43d99 | 38 | # Symbol versioning for shared libraries. |
3d7c150e | 39 | if GLIBCXX_BUILD_VERSIONED_SHLIB |
6aa43d99 | 40 | version_arg = -Wl,--version-script=libstdc++-symbol.ver |
3d7c150e BK |
41 | libstdc++-symbol.ver: ${glibcxx_srcdir}/@SYMVER_MAP@ |
42 | @LN_S@ ${glibcxx_srcdir}/@SYMVER_MAP@ ./libstdc++-symbol.ver || true | |
6aa43d99 BK |
43 | else |
44 | version_arg = | |
45 | libstdc++-symbol.ver: | |
46 | endif | |
47 | ||
e466dc8a BK |
48 | # Compile flags that should be constant throughout the build, both for |
49 | # SUBDIRS and for libstdc++-v3 in general. | |
50 | OPTIMIZE_CXXFLAGS = @OPTIMIZE_CXXFLAGS@ | |
51 | ||
52 | # These bits are all figured out from configure. Look in acinclude.m4 | |
3d7c150e | 53 | # or configure.in to see how they are set. See GLIBCXX_EXPORT_FLAGS |
e466dc8a | 54 | CONFIG_CXXFLAGS = \ |
697044e0 | 55 | @SECTION_FLAGS@ @EXTRA_CXX_FLAGS@ |
e466dc8a BK |
56 | |
57 | # Warning flags to use. | |
58 | WARN_CXXFLAGS = \ | |
6a163d7c | 59 | @WARN_FLAGS@ $(WERROR) -fdiagnostics-show-location=once |
e466dc8a | 60 | |
3d7c150e BK |
61 | # Use common includes from acinclude.m4/GLIBCXX_EXPORT_INCLUDES |
62 | GLIBCXX_INCLUDES = @GLIBCXX_INCLUDES@ | |
e466dc8a BK |
63 | LIBMATH_INCLUDES = @LIBMATH_INCLUDES@ |
64 | LIBSUPCXX_INCLUDES = @LIBSUPCXX_INCLUDES@ | |
a40ba78e | 65 | TOPLEVEL_INCLUDES = @TOPLEVEL_INCLUDES@ |
e466dc8a | 66 | |
5b80666b | 67 | INCLUDES = \ |
85fe3810 | 68 | -nostdinc++ \ |
3d7c150e | 69 | $(GLIBCXX_INCLUDES) \ |
58ac1d7f | 70 | $(LIBSUPCXX_INCLUDES) $(LIBMATH_INCLUDES) \ |
c21b6f87 | 71 | $(TOPLEVEL_INCLUDES) |
5b80666b | 72 | |
6aa43d99 | 73 | # Source files linked in via configuration/make substitution for a |
a30335e9 BK |
74 | # particular host. |
75 | host_sources = \ | |
38cca750 BK |
76 | codecvt_members.cc \ |
77 | collate_members.cc \ | |
78 | ctype_members.cc \ | |
79 | messages_members.cc \ | |
80 | monetary_members.cc \ | |
81 | numeric_members.cc \ | |
82 | time_members.cc | |
83 | ||
3d7c150e BK |
84 | codecvt_members.cc: ${glibcxx_srcdir}/@CCODECVT_CC@ |
85 | @LN_S@ ${glibcxx_srcdir}/@CCODECVT_CC@ . || true | |
6aa43d99 | 86 | |
3d7c150e BK |
87 | collate_members.cc: ${glibcxx_srcdir}/@CCOLLATE_CC@ |
88 | @LN_S@ ${glibcxx_srcdir}/@CCOLLATE_CC@ . || true | |
6aa43d99 | 89 | |
3d7c150e BK |
90 | ctype_members.cc: ${glibcxx_srcdir}/@CCTYPE_CC@ |
91 | @LN_S@ ${glibcxx_srcdir}/@CCTYPE_CC@ . || true | |
6aa43d99 | 92 | |
3d7c150e BK |
93 | messages_members.cc: ${glibcxx_srcdir}/@CMESSAGES_CC@ |
94 | @LN_S@ ${glibcxx_srcdir}/@CMESSAGES_CC@ . || true | |
6aa43d99 | 95 | |
3d7c150e BK |
96 | monetary_members.cc: ${glibcxx_srcdir}/@CMONEY_CC@ |
97 | @LN_S@ ${glibcxx_srcdir}/@CMONEY_CC@ . || true | |
6aa43d99 | 98 | |
3d7c150e BK |
99 | numeric_members.cc: ${glibcxx_srcdir}/@CNUMERIC_CC@ |
100 | @LN_S@ ${glibcxx_srcdir}/@CNUMERIC_CC@ . || true | |
6aa43d99 | 101 | |
3d7c150e BK |
102 | time_members.cc: ${glibcxx_srcdir}/@CTIME_CC@ |
103 | @LN_S@ ${glibcxx_srcdir}/@CTIME_CC@ . || true | |
6aa43d99 BK |
104 | |
105 | # Source files linked in via configuration/make substitution for a | |
a30335e9 BK |
106 | # particular host, but with ad hoc naming rules. |
107 | host_sources_extra = \ | |
7f2e0dff | 108 | basic_file.cc \ |
38cca750 BK |
109 | c++locale.cc |
110 | ||
3d7c150e BK |
111 | c++locale.cc: ${glibcxx_srcdir}/@CLOCALE_CC@ |
112 | @LN_S@ ${glibcxx_srcdir}/@CLOCALE_CC@ ./$@ || true | |
6aa43d99 | 113 | |
3d7c150e BK |
114 | basic_file.cc: ${glibcxx_srcdir}/@BASIC_FILE_CC@ |
115 | @LN_S@ ${glibcxx_srcdir}/@BASIC_FILE_CC@ ./$@ || true | |
6aa43d99 | 116 | |
38cca750 BK |
117 | # Sources present in the src directory. |
118 | sources = \ | |
1ff9402d | 119 | allocator-inst.cc \ |
7f2e0dff | 120 | codecvt.cc \ |
7f2e0dff PE |
121 | complex_io.cc \ |
122 | concept-inst.cc \ | |
123 | ctype.cc \ | |
4ffbd077 | 124 | demangle.cc \ |
7f2e0dff PE |
125 | ext-inst.cc \ |
126 | fstream-inst.cc \ | |
127 | functexcept.cc \ | |
128 | globals.cc \ | |
129 | io-inst.cc \ | |
130 | ios.cc \ | |
131 | istream-inst.cc \ | |
132 | limits.cc \ | |
7f2e0dff | 133 | locale.cc \ |
38cca750 | 134 | locale-inst.cc \ |
7f2e0dff | 135 | localename.cc \ |
7f2e0dff | 136 | misc-inst.cc \ |
7f2e0dff PE |
137 | ostream-inst.cc \ |
138 | sstream-inst.cc \ | |
139 | stdexcept.cc \ | |
7f2e0dff PE |
140 | streambuf-inst.cc \ |
141 | string-inst.cc \ | |
142 | strstream.cc \ | |
7f2e0dff | 143 | valarray-inst.cc \ |
38cca750 | 144 | wstring-inst.cc \ |
a30335e9 BK |
145 | ${host_sources} \ |
146 | ${host_sources_extra} | |
b2dad0e3 | 147 | |
74a3070f | 148 | VPATH = $(top_srcdir)/src:$(top_srcdir) |
b2dad0e3 | 149 | |
b2dad0e3 BK |
150 | libstdc___la_SOURCES = $(sources) |
151 | ||
5d89258a | 152 | libstdc___la_LIBADD = \ |
58ac1d7f | 153 | $(top_builddir)/libmath/libmath.la \ |
6aa43d99 | 154 | $(top_builddir)/libsupc++/libsupc++convenience.la |
b2dad0e3 | 155 | |
6aa43d99 | 156 | libstdc___la_DEPENDENCIES = libstdc++-symbol.ver $(libstdc___la_LIBADD) |
b2dad0e3 | 157 | |
263c6fa8 SE |
158 | libstdc___la_LDFLAGS = \ |
159 | -version-info @libtool_VERSION@ ${version_arg} \ | |
160 | -lm @LIBUNWIND_FLAG@ | |
5d89258a | 161 | |
b2dad0e3 | 162 | |
e08838ac BK |
163 | # Use special rules for the deprecated source files so that they find |
164 | # deprecated include files. | |
3d7c150e | 165 | GLIBCXX_INCLUDE_DIR=@glibcxx_builddir@/include |
e08838ac | 166 | strstream.lo: strstream.cc |
3d7c150e | 167 | $(LTCXXCOMPILE) -I$(GLIBCXX_INCLUDE_DIR)/backward -Wno-deprecated -c $< |
e08838ac | 168 | strstream.o: strstream.cc |
3d7c150e | 169 | $(CXXCOMPILE) -I$(GLIBCXX_INCLUDE_DIR)/backward -Wno-deprecated -c $< |
e08838ac | 170 | |
4d16bdbb PE |
171 | # Use special rules for the concept-checking instantiations so that all |
172 | # the generated template functions are also instantiated. Force the checks | |
173 | # to be on so that the instantiations are actually seen. | |
174 | concept-inst.lo: concept-inst.cc | |
3d7c150e | 175 | $(LTCXXCOMPILE) -D_GLIBCXX_CONCEPT_CHECKS -fimplicit-templates -c $< |
4d16bdbb | 176 | concept-inst.o: concept-inst.cc |
3d7c150e | 177 | $(CXXCOMPILE) -D_GLIBCXX_CONCEPT_CHECKS -fimplicit-templates -c $< |
4d16bdbb | 178 | |
4ffbd077 BK |
179 | # Use special rules for the demangler, so that an additional implicit |
180 | # instantiation file is not necessary. | |
181 | demangle.lo: demangle.cc | |
182 | $(LTCXXCOMPILE) -fimplicit-templates -c $< | |
183 | demangle.o: demangle.cc | |
184 | $(CXXCOMPILE) -fimplicit-templates -c $< | |
185 | ||
a40ba78e | 186 | |
0b8e0cf3 | 187 | # AM_CXXFLAGS needs to be in each subdirectory so that it can be |
a9117427 BK |
188 | # modified in a per-library or per-sub-library way. Need to manually |
189 | # set this option because CONFIG_CXXFLAGS has to be after | |
190 | # OPTIMIZE_CXXFLAGS on the compile line so that -O2 can be overridden | |
6aa43d99 | 191 | # as the occasion call for it. |
0b8e0cf3 | 192 | AM_CXXFLAGS = \ |
47e982b2 | 193 | -fno-implicit-templates \ |
a9117427 | 194 | $(LIBSUPCXX_CXXFLAGS) \ |
0b8e0cf3 BK |
195 | $(WARN_CXXFLAGS) \ |
196 | $(OPTIMIZE_CXXFLAGS) \ | |
6aa43d99 | 197 | $(CONFIG_CXXFLAGS) |
0b8e0cf3 | 198 | |
e974e9cc | 199 | |
a9117427 BK |
200 | # libstdc++ libtool notes |
201 | ||
202 | # 1) Need to explicitly set LTCXXCOMPILE so that AM_CXXFLAGS is | |
203 | # last. (That way, things like -O2 passed down from the toplevel can | |
204 | # be overridden by --enable-debug.) | |
205 | ||
206 | # 2) In general, libtool expects an argument such as `--tag=CXX' when | |
207 | # using the C++ compiler, because that will enable the settings | |
208 | # detected when C++ support was being configured. However, when no | |
209 | # such flag is given in the command line, libtool attempts to figure | |
210 | # it out by matching the compiler name in each configuration section | |
211 | # against a prefix of the command line. The problem is that, if the | |
212 | # compiler name and its initial flags stored in the libtool | |
213 | # configuration file don't match those in the command line, libtool | |
214 | # can't decide which configuration to use, and it gives up. The | |
215 | # correct solution is to add `--tag CXX' to LTCXXCOMPILE and maybe | |
216 | # CXXLINK, just after $(LIBTOOL), so that libtool doesn't have to | |
217 | # attempt to infer which configuration to use | |
218 | LTCXXCOMPILE = $(LIBTOOL) --tag CXX --mode=compile $(CXX) $(INCLUDES) \ | |
219 | $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(AM_CXXFLAGS) | |
e974e9cc | 220 | |
787d2fb7 AO |
221 | # 3) We'd have a problem when building the shared libstdc++ object if |
222 | # the rules automake generates would be used. We cannot allow g++ to | |
223 | # be used since this would add -lstdc++ to the link line which of | |
224 | # course is problematic at this point. So, we get the top-level | |
225 | # directory to configure libstdc++-v3 to use gcc as the C++ | |
226 | # compilation driver. | |
227 | CXXLINK = $(LIBTOOL) --tag CXX --mode=link $(CXX) \ | |
a9117427 | 228 | @OPT_LDFLAGS@ @SECTION_LDFLAGS@ $(AM_CXXFLAGS) $(LDFLAGS) -o $@ |
6aa43d99 BK |
229 | |
230 | ||
231 | # Added bits to build debug library. | |
3d7c150e | 232 | if GLIBCXX_BUILD_DEBUG |
6aa43d99 BK |
233 | all-local: build_debug |
234 | install-data-local: install_debug | |
235 | else | |
236 | all-local: | |
237 | install-data-local: | |
238 | endif | |
239 | ||
240 | debugdir = debug | |
241 | ||
242 | # Build parallel set of debug objects here. | |
243 | stamp-debug: | |
244 | if test ! -d ${debugdir}; then \ | |
245 | mkdir -p ${debugdir}; \ | |
246 | (cd ${debugdir}; \ | |
7ec3af37 BK |
247 | sed -e 's/top_builddir = \.\./top_builddir = ..\/../' \ |
248 | -e 's/srcdir = \.\./srcdir = ..\/../' \ | |
3d7c150e | 249 | -e 's/glibcxx_basedir = \.\./glibcxx_basedir = ..\/../' \ |
7ec3af37 BK |
250 | -e 's/all-local: build_debug/all-local:/' \ |
251 | -e 's/install-data-local: install_debug/install-data-local:/' \ | |
252 | < ../Makefile > Makefile) ; \ | |
6aa43d99 BK |
253 | fi; \ |
254 | echo `date` > stamp-debug; | |
255 | ||
256 | build_debug: stamp-debug | |
257 | (cd ${debugdir} && $(MAKE) CXXFLAGS='@DEBUG_FLAGS@' all) | |
258 | ||
259 | # Install debug library here. | |
260 | install_debug: | |
261 | (cd ${debugdir} && $(MAKE) \ | |
3d7c150e | 262 | toolexeclibdir=@glibcxx_toolexeclibdir@/debug install) |