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