]>
Commit | Line | Data |
---|---|---|
06bd10fb BK |
1 | ## Makefile for the GNU C++ Support library. |
2 | ## | |
405feeb8 | 3 | ## Copyright (C) 2000-2013 Free Software Foundation, Inc. |
06bd10fb BK |
4 | ## |
5 | ## Process this file with automake to produce Makefile.in. | |
6 | ## | |
cbecceb9 | 7 | ## This file is part of GCC. |
06bd10fb | 8 | ## |
cbecceb9 | 9 | ## GCC is free software; you can redistribute it and/or modify |
06bd10fb | 10 | ## it under the terms of the GNU General Public License as published by |
748086b7 | 11 | ## the Free Software Foundation; either version 3, or (at your option) |
06bd10fb BK |
12 | ## any later version. |
13 | ## | |
cbecceb9 | 14 | ## GCC is distributed in the hope that it will be useful, |
06bd10fb BK |
15 | ## but WITHOUT ANY WARRANTY; without even the implied warranty of |
16 | ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
17 | ## GNU General Public License for more details. | |
18 | ## | |
19 | ## You should have received a copy of the GNU General Public License | |
748086b7 JJ |
20 | ## along with GCC; see the file COPYING3. If not see |
21 | ## <http://www.gnu.org/licenses/>. | |
06bd10fb | 22 | |
0df3f383 | 23 | include $(top_srcdir)/fragment.am |
06bd10fb BK |
24 | |
25 | # Need this library to both be part of libstdc++.a, and installed | |
26 | # separately too. | |
ca618b60 | 27 | # 1) separate libsupc++.la |
06bd10fb BK |
28 | toolexeclib_LTLIBRARIES = libsupc++.la |
29 | # 2) integrated libsupc++convenience.la that is to be a part of libstdc++.a | |
30 | noinst_LTLIBRARIES = libsupc++convenience.la | |
31 | ||
7c3e9502 | 32 | std_HEADERS = \ |
0b284728 | 33 | cxxabi.h exception initializer_list new typeinfo |
0b8e0cf3 | 34 | |
7c3e9502 | 35 | bits_HEADERS = \ |
a152e96f | 36 | atomic_lockfree_defines.h cxxabi_forced.h \ |
0b284728 | 37 | exception_defines.h exception_ptr.h hash_bytes.h nested_exception.h |
7c3e9502 BK |
38 | |
39 | headers = $(std_HEADERS) $(bits_HEADERS) | |
06bd10fb | 40 | |
4c24b21a MM |
41 | if GLIBCXX_HOSTED |
42 | c_sources = \ | |
0b284728 | 43 | cp-demangle.c |
4c24b21a | 44 | endif |
40fcf31b | 45 | |
e01c9849 | 46 | sources = \ |
bd994a48 | 47 | array_type_info.cc \ |
aa2bd2db | 48 | atexit_arm.cc \ |
5b031b9b | 49 | atexit_thread.cc \ |
79d34420 | 50 | bad_alloc.cc \ |
61a359f6 BK |
51 | bad_array_length.cc \ |
52 | bad_array_new.cc \ | |
bd994a48 MM |
53 | bad_cast.cc \ |
54 | bad_typeid.cc \ | |
55 | class_type_info.cc \ | |
06bd10fb BK |
56 | del_op.cc \ |
57 | del_opnt.cc \ | |
58 | del_opv.cc \ | |
59 | del_opvnt.cc \ | |
bd994a48 | 60 | dyncast.cc \ |
52a11cbf | 61 | eh_alloc.cc \ |
617a1b71 | 62 | eh_arm.cc \ |
52a11cbf | 63 | eh_aux_runtime.cc \ |
617a1b71 | 64 | eh_call.cc \ |
52a11cbf RH |
65 | eh_catch.cc \ |
66 | eh_exception.cc \ | |
67 | eh_globals.cc \ | |
68 | eh_personality.cc \ | |
30a333ce | 69 | eh_ptr.cc \ |
fb705416 | 70 | eh_term_handler.cc \ |
52a11cbf | 71 | eh_terminate.cc \ |
0a35513e | 72 | eh_tm.cc \ |
52a11cbf | 73 | eh_throw.cc \ |
74a3070f | 74 | eh_type.cc \ |
fb705416 | 75 | eh_unex_handler.cc \ |
bd994a48 MM |
76 | enum_type_info.cc \ |
77 | function_type_info.cc \ | |
78 | fundamental_type_info.cc \ | |
c4f66405 | 79 | guard.cc \ |
2bddc509 | 80 | guard_error.cc \ |
33da99cb | 81 | hash_bytes.cc \ |
e9599233 | 82 | nested_exception.cc \ |
06bd10fb BK |
83 | new_handler.cc \ |
84 | new_op.cc \ | |
85 | new_opnt.cc \ | |
86 | new_opv.cc \ | |
87 | new_opvnt.cc \ | |
bd994a48 MM |
88 | pbase_type_info.cc \ |
89 | pmem_type_info.cc \ | |
90 | pointer_type_info.cc \ | |
3734420f | 91 | pure.cc \ |
bd994a48 | 92 | si_class_type_info.cc \ |
06bd10fb BK |
93 | tinfo.cc \ |
94 | tinfo2.cc \ | |
fb705416 | 95 | vec.cc \ |
bd994a48 | 96 | vmi_class_type_info.cc \ |
fb705416 | 97 | vterminate.cc |
06bd10fb | 98 | |
0b284728 | 99 | libsupc___la_SOURCES = $(sources) $(c_sources) |
40fcf31b | 100 | libsupc__convenience_la_SOURCES = $(sources) $(c_sources) |
06bd10fb | 101 | |
40fcf31b BK |
102 | cp-demangle.c: |
103 | rm -f $@ | |
104 | $(LN_S) $(toplevel_srcdir)/libiberty/cp-demangle.c $@ | |
105 | cp-demangle.lo: cp-demangle.c | |
106 | $(LTCOMPILE) -DIN_GLIBCPP_V3 -Wno-error -c $< | |
107 | cp-demangle.o: cp-demangle.c | |
108 | $(C_COMPILE) -DIN_GLIBCPP_V3 -Wno-error -c $< | |
109 | ||
110 | ||
dca77a8a | 111 | # Use special rules for the C++11 sources so that the proper flags are passed. |
61a359f6 BK |
112 | bad_array_length.lo: bad_array_length.cc |
113 | $(LTCXXCOMPILE) -std=gnu++11 -c $< | |
114 | bad_array_length.o: bad_array_length.cc | |
115 | $(CXXCOMPILE) -std=gnu++11 -c $< | |
116 | ||
117 | bad_array_new.lo: bad_array_new.cc | |
118 | $(LTCXXCOMPILE) -std=gnu++11 -c $< | |
119 | bad_array_new.o: bad_array_new.cc | |
120 | $(CXXCOMPILE) -std=gnu++11 -c $< | |
121 | ||
122 | eh_aux_runtime.lo: eh_aux_runtime.cc | |
123 | $(LTCXXCOMPILE) -std=gnu++11 -c $< | |
124 | eh_aux_runtime.o: eh_aux_runtime.cc | |
125 | $(CXXCOMPILE) -std=gnu++11 -c $< | |
126 | ||
a152e96f | 127 | eh_ptr.lo: eh_ptr.cc |
dca77a8a | 128 | $(LTCXXCOMPILE) -std=gnu++11 -c $< |
a152e96f | 129 | eh_ptr.o: eh_ptr.cc |
dca77a8a JW |
130 | $(CXXCOMPILE) -std=gnu++11 -c $< |
131 | ||
132 | eh_terminate.lo: eh_terminate.cc | |
133 | $(LTCXXCOMPILE) -std=gnu++11 -c $< | |
134 | eh_terminate.o: eh_terminate.cc | |
135 | $(CXXCOMPILE) -std=gnu++11 -c $< | |
a152e96f BK |
136 | |
137 | eh_throw.lo: eh_throw.cc | |
dca77a8a | 138 | $(LTCXXCOMPILE) -std=gnu++11 -c $< |
a152e96f | 139 | eh_throw.o: eh_throw.cc |
dca77a8a | 140 | $(CXXCOMPILE) -std=gnu++11 -c $< |
a152e96f BK |
141 | |
142 | guard.lo: guard.cc | |
dca77a8a | 143 | $(LTCXXCOMPILE) -std=gnu++11 -c $< |
a152e96f | 144 | guard.o: guard.cc |
dca77a8a | 145 | $(CXXCOMPILE) -std=gnu++11 -c $< |
a152e96f | 146 | |
5b031b9b | 147 | atexit_thread.lo: atexit_thread.cc |
dca77a8a | 148 | $(LTCXXCOMPILE) -std=gnu++11 -c $< |
5b031b9b | 149 | atexit_thread.o: atexit_thread.cc |
dca77a8a | 150 | $(CXXCOMPILE) -std=gnu++11 -c $< |
5b031b9b | 151 | |
e9599233 | 152 | nested_exception.lo: nested_exception.cc |
dca77a8a | 153 | $(LTCXXCOMPILE) -std=gnu++11 -c $< |
e9599233 | 154 | nested_exception.o: nested_exception.cc |
dca77a8a JW |
155 | $(CXXCOMPILE) -std=gnu++11 -c $< |
156 | ||
157 | new_handler.lo: new_handler.cc | |
158 | $(LTCXXCOMPILE) -std=gnu++11 -c $< | |
159 | new_handler.o: new_handler.cc | |
160 | $(CXXCOMPILE) -std=gnu++11 -c $< | |
161 | ||
162 | new_op.lo: new_op.cc | |
163 | $(LTCXXCOMPILE) -std=gnu++11 -c $< | |
164 | new_op.o: new_op.cc | |
165 | $(CXXCOMPILE) -std=gnu++11 -c $< | |
166 | ||
167 | new_opnt.lo: new_opnt.cc | |
168 | $(LTCXXCOMPILE) -std=gnu++11 -c $< | |
169 | new_opnt.o: new_opnt.cc | |
170 | $(CXXCOMPILE) -std=gnu++11 -c $< | |
e9599233 | 171 | |
ac6d1200 BK |
172 | # AM_CXXFLAGS needs to be in each subdirectory so that it can be |
173 | # modified in a per-library or per-sub-library way. Need to manually | |
174 | # set this option because CONFIG_CXXFLAGS has to be after | |
175 | # OPTIMIZE_CXXFLAGS on the compile line so that -O2 can be overridden | |
176 | # as the occasion call for it. | |
177 | AM_CXXFLAGS = \ | |
178 | $(glibcxx_lt_pic_flag) $(glibcxx_compiler_shared_flag) \ | |
179 | $(XTEMPLATE_FLAGS) \ | |
180 | $(WARN_CXXFLAGS) $(OPTIMIZE_CXXFLAGS) $(CONFIG_CXXFLAGS) | |
181 | ||
182 | AM_MAKEFLAGS = \ | |
183 | "gxx_include_dir=$(gxx_include_dir)" | |
a9117427 | 184 | |
a9117427 | 185 | |
ac6d1200 BK |
186 | # Use special rules for pulling things out of libiberty. These |
187 | # objects should be compiled with the "C" compiler, not the C++ | |
188 | # compiler, and also should not use the C++ includes. | |
189 | C_INCLUDES = -I.. -I$(toplevel_srcdir)/libiberty -I$(toplevel_srcdir)/include | |
190 | C_COMPILE = \ | |
191 | $(CC) $(DEFS) $(C_INCLUDES) \ | |
192 | $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) | |
193 | ||
194 | # LTCOMPILE is copied from LTCXXCOMPILE below. | |
195 | LTCOMPILE = $(LIBTOOL) --tag CC --tag disable-shared $(LIBTOOLFLAGS) --mode=compile \ | |
196 | $(CC) $(DEFS) $(C_INCLUDES) \ | |
197 | $(glibcxx_lt_pic_flag) $(glibcxx_compiler_shared_flag) \ | |
198 | $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) | |
199 | ||
200 | # Libtool notes | |
201 | ||
202 | # 1) In general, libtool expects an argument such as `--tag=CXX' when | |
a9117427 BK |
203 | # using the C++ compiler, because that will enable the settings |
204 | # detected when C++ support was being configured. However, when no | |
205 | # such flag is given in the command line, libtool attempts to figure | |
206 | # it out by matching the compiler name in each configuration section | |
207 | # against a prefix of the command line. The problem is that, if the | |
208 | # compiler name and its initial flags stored in the libtool | |
209 | # configuration file don't match those in the command line, libtool | |
210 | # can't decide which configuration to use, and it gives up. The | |
211 | # correct solution is to add `--tag CXX' to LTCXXCOMPILE and maybe | |
212 | # CXXLINK, just after $(LIBTOOL), so that libtool doesn't have to | |
20b11783 | 213 | # attempt to infer which configuration to use. |
ac6d1200 BK |
214 | # |
215 | # The second tag argument, `--tag disable-shared` means that libtool | |
216 | # only compiles each source once, for static objects. In actuality, | |
217 | # glibcxx_lt_pic_flag and glibcxx_compiler_shared_flag are added to | |
218 | # the libtool command that is used create the object, which is | |
219 | # suitable for shared libraries. The `--tag disable-shared` must be | |
220 | # placed after --tag CXX lest things CXX undo the affect of | |
221 | # disable-shared. | |
222 | ||
b1d6986c | 223 | # 2) Need to explicitly set LTCXXCOMPILE so that EXTRA_CXX_FLAGS is |
ac6d1200 BK |
224 | # last. (That way, things like -O2 passed down from the toplevel can |
225 | # be overridden by --enable-debug.) | |
0b284728 BK |
226 | LTCXXCOMPILE = \ |
227 | $(LIBTOOL) --tag CXX --tag disable-shared \ | |
228 | $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ | |
229 | --mode=compile $(CXX) $(TOPLEVEL_INCLUDES) \ | |
b1d6986c | 230 | $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) $(EXTRA_CXX_FLAGS) |
c7053b70 | 231 | |
d79e6356 MM |
232 | LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS)) |
233 | ||
787d2fb7 AO |
234 | # 3) We'd have a problem when building the shared libstdc++ object if |
235 | # the rules automake generates would be used. We cannot allow g++ to | |
236 | # be used since this would add -lstdc++ to the link line which of | |
237 | # course is problematic at this point. So, we get the top-level | |
238 | # directory to configure libstdc++-v3 to use gcc as the C++ | |
239 | # compilation driver. | |
0b284728 BK |
240 | CXXLINK = \ |
241 | $(LIBTOOL) --tag CXX --tag disable-shared \ | |
242 | $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ | |
243 | --mode=link $(CXX) \ | |
244 | $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@ | |
7c3e9502 BK |
245 | |
246 | # Install notes | |
38fae3e3 | 247 | # We have to have rules modified from the default to counteract SUN make |
7c3e9502 BK |
248 | # prepending each of $(*_HEADERS) with VPATH below. |
249 | stddir = $(gxx_include_dir) | |
250 | bitsdir = $(gxx_include_dir)/bits | |
251 | ||
252 | install-stdHEADERS: $(std_HEADERS) | |
38fae3e3 | 253 | @$(NORMAL_INSTALL) |
7c3e9502 BK |
254 | $(mkinstalldirs) $(DESTDIR)$(stddir) |
255 | @list='$(std_HEADERS)'; for p in $$list; do \ | |
38fae3e3 HPN |
256 | q=`echo $$p | sed -e 's,.*/,,'`; \ |
257 | if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \ | |
7c3e9502 BK |
258 | echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(stddir)/$$q"; \ |
259 | $(INSTALL_DATA) $$d$$p $(DESTDIR)$(stddir)/$$q; \ | |
260 | done | |
261 | ||
262 | install-bitsHEADERS: $(bits_HEADERS) | |
263 | @$(NORMAL_INSTALL) | |
264 | $(mkinstalldirs) $(DESTDIR)$(bitsdir) | |
265 | @list='$(bits_HEADERS)'; for p in $$list; do \ | |
266 | q=`echo $$p | sed -e 's,.*/,,'`; \ | |
267 | if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \ | |
268 | echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(bitsdir)/$$q"; \ | |
269 | $(INSTALL_DATA) $$d$$p $(DESTDIR)$(bitsdir)/$$q; \ | |
270 | done | |
271 | ||
272 | uninstall-stdHEADERS: | |
273 | @$(NORMAL_UNINSTALL) | |
274 | list='$(std_HEADERS)'; for p in $$list; do \ | |
275 | q=`echo $$p | sed -e 's,.*/,,'`; \ | |
276 | rm -f $(DESTDIR)$(stddir)/$$q; \ | |
38fae3e3 HPN |
277 | done |
278 | ||
7c3e9502 | 279 | uninstall-bitsHEADERS: |
38fae3e3 | 280 | @$(NORMAL_UNINSTALL) |
7c3e9502 | 281 | list='$(bits_HEADERS)'; for p in $$list; do \ |
38fae3e3 | 282 | q=`echo $$p | sed -e 's,.*/,,'`; \ |
7c3e9502 | 283 | rm -f $(DESTDIR)$(bitsdir)/$$q; \ |
38fae3e3 | 284 | done |