]>
Commit | Line | Data |
---|---|---|
06bd10fb BK |
1 | ## Makefile for the GNU C++ Support library. |
2 | ## | |
79d34420 | 3 | ## Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, |
7c3e9502 | 4 | ## 2009, 2010, 2011 |
b967bf25 | 5 | ## Free Software Foundation, Inc. |
06bd10fb BK |
6 | ## |
7 | ## Process this file with automake to produce Makefile.in. | |
8 | ## | |
cbecceb9 | 9 | ## This file is part of GCC. |
06bd10fb | 10 | ## |
cbecceb9 | 11 | ## GCC is free software; you can redistribute it and/or modify |
06bd10fb | 12 | ## it under the terms of the GNU General Public License as published by |
748086b7 | 13 | ## the Free Software Foundation; either version 3, or (at your option) |
06bd10fb BK |
14 | ## any later version. |
15 | ## | |
cbecceb9 | 16 | ## GCC is distributed in the hope that it will be useful, |
06bd10fb BK |
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 | |
748086b7 JJ |
22 | ## along with GCC; see the file COPYING3. If not see |
23 | ## <http://www.gnu.org/licenses/>. | |
06bd10fb | 24 | |
0df3f383 | 25 | include $(top_srcdir)/fragment.am |
06bd10fb BK |
26 | |
27 | # Need this library to both be part of libstdc++.a, and installed | |
28 | # separately too. | |
ca618b60 | 29 | # 1) separate libsupc++.la |
06bd10fb BK |
30 | toolexeclib_LTLIBRARIES = libsupc++.la |
31 | # 2) integrated libsupc++convenience.la that is to be a part of libstdc++.a | |
32 | noinst_LTLIBRARIES = libsupc++convenience.la | |
33 | ||
7c3e9502 BK |
34 | std_HEADERS = \ |
35 | cxxabi.h exception initializer_list new typeinfo | |
0b8e0cf3 | 36 | |
7c3e9502 BK |
37 | bits_HEADERS = \ |
38 | cxxabi_forced.h hash_bytes.h \ | |
39 | exception_defines.h exception_ptr.h nested_exception.h | |
40 | ||
41 | headers = $(std_HEADERS) $(bits_HEADERS) | |
06bd10fb | 42 | |
4c24b21a MM |
43 | if GLIBCXX_HOSTED |
44 | c_sources = \ | |
40fcf31b | 45 | cp-demangle.c |
4c24b21a | 46 | endif |
40fcf31b | 47 | |
e01c9849 | 48 | sources = \ |
bd994a48 | 49 | array_type_info.cc \ |
aa2bd2db | 50 | atexit_arm.cc \ |
79d34420 | 51 | bad_alloc.cc \ |
bd994a48 MM |
52 | bad_cast.cc \ |
53 | bad_typeid.cc \ | |
54 | class_type_info.cc \ | |
06bd10fb BK |
55 | del_op.cc \ |
56 | del_opnt.cc \ | |
57 | del_opv.cc \ | |
58 | del_opvnt.cc \ | |
bd994a48 | 59 | dyncast.cc \ |
52a11cbf | 60 | eh_alloc.cc \ |
617a1b71 | 61 | eh_arm.cc \ |
52a11cbf | 62 | eh_aux_runtime.cc \ |
617a1b71 | 63 | eh_call.cc \ |
52a11cbf RH |
64 | eh_catch.cc \ |
65 | eh_exception.cc \ | |
66 | eh_globals.cc \ | |
67 | eh_personality.cc \ | |
30a333ce | 68 | eh_ptr.cc \ |
fb705416 | 69 | eh_term_handler.cc \ |
52a11cbf RH |
70 | eh_terminate.cc \ |
71 | eh_throw.cc \ | |
74a3070f | 72 | eh_type.cc \ |
fb705416 | 73 | eh_unex_handler.cc \ |
bd994a48 MM |
74 | enum_type_info.cc \ |
75 | function_type_info.cc \ | |
76 | fundamental_type_info.cc \ | |
c4f66405 | 77 | guard.cc \ |
2bddc509 | 78 | guard_error.cc \ |
33da99cb | 79 | hash_bytes.cc \ |
06bd10fb BK |
80 | new_handler.cc \ |
81 | new_op.cc \ | |
82 | new_opnt.cc \ | |
83 | new_opv.cc \ | |
84 | new_opvnt.cc \ | |
bd994a48 MM |
85 | pbase_type_info.cc \ |
86 | pmem_type_info.cc \ | |
87 | pointer_type_info.cc \ | |
3734420f | 88 | pure.cc \ |
bd994a48 | 89 | si_class_type_info.cc \ |
06bd10fb BK |
90 | tinfo.cc \ |
91 | tinfo2.cc \ | |
fb705416 | 92 | vec.cc \ |
bd994a48 | 93 | vmi_class_type_info.cc \ |
fb705416 | 94 | vterminate.cc |
06bd10fb | 95 | |
7c3e9502 | 96 | libsupc___la_SOURCES = $(sources) $(c_sources) |
40fcf31b | 97 | libsupc__convenience_la_SOURCES = $(sources) $(c_sources) |
06bd10fb | 98 | |
c7053b70 | 99 | # AM_CXXFLAGS needs to be in each subdirectory so that it can be |
a9117427 BK |
100 | # modified in a per-library or per-sub-library way. Need to manually |
101 | # set this option because CONFIG_CXXFLAGS has to be after | |
102 | # OPTIMIZE_CXXFLAGS on the compile line so that -O2 can be overridden | |
ca618b60 | 103 | # as the occasion call for it. |
06bd10fb | 104 | AM_CXXFLAGS = \ |
c7053b70 | 105 | -fno-implicit-templates \ |
82ba99d5 | 106 | $(LIBSUPCXX_PICFLAGS) \ |
c7053b70 BK |
107 | $(WARN_CXXFLAGS) \ |
108 | $(OPTIMIZE_CXXFLAGS) \ | |
ca618b60 | 109 | $(CONFIG_CXXFLAGS) |
06bd10fb | 110 | |
3bf74da2 MK |
111 | AM_MAKEFLAGS = \ |
112 | "gxx_include_dir=$(gxx_include_dir)" | |
113 | ||
40fcf31b BK |
114 | |
115 | # Use special rules for pulling things out of libiberty. These | |
116 | # objects should be compiled with the "C" compiler, not the C++ | |
117 | # compiler, and also should not use the C++ includes. | |
118 | C_INCLUDES = -I.. -I$(toplevel_srcdir)/libiberty -I$(toplevel_srcdir)/include | |
119 | C_COMPILE = \ | |
120 | $(CC) $(DEFS) $(C_INCLUDES) \ | |
121 | $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) | |
122 | ||
123 | # LTCOMPILE is copied from LTCXXCOMPILE below. | |
98791cfd | 124 | LTCOMPILE = $(LIBTOOL) --tag CC --tag disable-shared $(LIBTOOLFLAGS) --mode=compile \ |
84fec8a5 | 125 | $(CC) $(DEFS) $(C_INCLUDES) $(LIBSUPCXX_PICFLAGS) \ |
40fcf31b BK |
126 | $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) |
127 | ||
128 | cp-demangle.c: | |
129 | rm -f $@ | |
130 | $(LN_S) $(toplevel_srcdir)/libiberty/cp-demangle.c $@ | |
131 | cp-demangle.lo: cp-demangle.c | |
132 | $(LTCOMPILE) -DIN_GLIBCPP_V3 -Wno-error -c $< | |
133 | cp-demangle.o: cp-demangle.c | |
134 | $(C_COMPILE) -DIN_GLIBCPP_V3 -Wno-error -c $< | |
135 | ||
136 | ||
7c3e9502 | 137 | # Libtool notes |
a9117427 BK |
138 | |
139 | # 1) Need to explicitly set LTCXXCOMPILE so that AM_CXXFLAGS is | |
140 | # last. (That way, things like -O2 passed down from the toplevel can | |
141 | # be overridden by --enable-debug.) | |
142 | ||
143 | # 2) In general, libtool expects an argument such as `--tag=CXX' when | |
144 | # using the C++ compiler, because that will enable the settings | |
145 | # detected when C++ support was being configured. However, when no | |
146 | # such flag is given in the command line, libtool attempts to figure | |
147 | # it out by matching the compiler name in each configuration section | |
148 | # against a prefix of the command line. The problem is that, if the | |
149 | # compiler name and its initial flags stored in the libtool | |
150 | # configuration file don't match those in the command line, libtool | |
151 | # can't decide which configuration to use, and it gives up. The | |
152 | # correct solution is to add `--tag CXX' to LTCXXCOMPILE and maybe | |
153 | # CXXLINK, just after $(LIBTOOL), so that libtool doesn't have to | |
20b11783 MM |
154 | # attempt to infer which configuration to use. |
155 | # | |
156 | # We have to put --tag disable-shared after --tag CXX lest things | |
157 | # CXX undo the affect of disable-shared. | |
84fec8a5 | 158 | LTCXXCOMPILE = $(LIBTOOL) --tag CXX --tag disable-shared $(LIBTOOLFLAGS) \ |
ca618b60 | 159 | --mode=compile $(CXX) $(TOPLEVEL_INCLUDES) \ |
b967bf25 | 160 | $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) |
c7053b70 | 161 | |
d79e6356 MM |
162 | LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS)) |
163 | ||
787d2fb7 AO |
164 | # 3) We'd have a problem when building the shared libstdc++ object if |
165 | # the rules automake generates would be used. We cannot allow g++ to | |
166 | # be used since this would add -lstdc++ to the link line which of | |
167 | # course is problematic at this point. So, we get the top-level | |
168 | # directory to configure libstdc++-v3 to use gcc as the C++ | |
169 | # compilation driver. | |
84fec8a5 | 170 | CXXLINK = $(LIBTOOL) --tag CXX --tag disable-shared $(LIBTOOLFLAGS) \ |
ca618b60 | 171 | --mode=link $(CXX) \ |
d79e6356 | 172 | $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@ |
38fae3e3 | 173 | |
7c3e9502 BK |
174 | |
175 | # Install notes | |
38fae3e3 | 176 | # We have to have rules modified from the default to counteract SUN make |
7c3e9502 BK |
177 | # prepending each of $(*_HEADERS) with VPATH below. |
178 | stddir = $(gxx_include_dir) | |
179 | bitsdir = $(gxx_include_dir)/bits | |
180 | ||
181 | install-stdHEADERS: $(std_HEADERS) | |
38fae3e3 | 182 | @$(NORMAL_INSTALL) |
7c3e9502 BK |
183 | $(mkinstalldirs) $(DESTDIR)$(stddir) |
184 | @list='$(std_HEADERS)'; for p in $$list; do \ | |
38fae3e3 HPN |
185 | q=`echo $$p | sed -e 's,.*/,,'`; \ |
186 | if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \ | |
7c3e9502 BK |
187 | echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(stddir)/$$q"; \ |
188 | $(INSTALL_DATA) $$d$$p $(DESTDIR)$(stddir)/$$q; \ | |
189 | done | |
190 | ||
191 | install-bitsHEADERS: $(bits_HEADERS) | |
192 | @$(NORMAL_INSTALL) | |
193 | $(mkinstalldirs) $(DESTDIR)$(bitsdir) | |
194 | @list='$(bits_HEADERS)'; for p in $$list; do \ | |
195 | q=`echo $$p | sed -e 's,.*/,,'`; \ | |
196 | if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \ | |
197 | echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(bitsdir)/$$q"; \ | |
198 | $(INSTALL_DATA) $$d$$p $(DESTDIR)$(bitsdir)/$$q; \ | |
199 | done | |
200 | ||
201 | uninstall-stdHEADERS: | |
202 | @$(NORMAL_UNINSTALL) | |
203 | list='$(std_HEADERS)'; for p in $$list; do \ | |
204 | q=`echo $$p | sed -e 's,.*/,,'`; \ | |
205 | rm -f $(DESTDIR)$(stddir)/$$q; \ | |
38fae3e3 HPN |
206 | done |
207 | ||
7c3e9502 | 208 | uninstall-bitsHEADERS: |
38fae3e3 | 209 | @$(NORMAL_UNINSTALL) |
7c3e9502 | 210 | list='$(bits_HEADERS)'; for p in $$list; do \ |
38fae3e3 | 211 | q=`echo $$p | sed -e 's,.*/,,'`; \ |
7c3e9502 | 212 | rm -f $(DESTDIR)$(bitsdir)/$$q; \ |
38fae3e3 | 213 | done |