e2c094827c
2001-02-15 Benjamin Kosnik <bkoz@redhat.com> Add support for -fno-exceptions. * include/bits/exception_support.h: Remove. * include/bits/basic_string.h: Remove exception_support. (string::_M_check): Replace __OUTOFRANGE with __throw_out_of_range. (string::at): Same. (string::substr): Same. * include/bits/basic_string.tcc (string::reserve): Replace __LENGTHERROR with __throw_length_error. (string::_S_create): Same. (string::resize): Same. (string::_M_replace): Same. (string::replace): Same. (string::copy): Replace __OUTOFRANGE with __throw_out_of_range. (string::compare): Same. * include/bits/stl_vector.h: Remove exception_support. * src/Makefile.am (base_headers): Remove here. * src/Makefile.in: Regenerate. * include/bits/stl_range_errors.h: Remove. * include/bits/stl_deque.h: Use __throw_range_error. * include/bits/std_deque.h: Include functexcept.h. * include/bits/std_vector.h: Same. * src/Makefile.am (base_headers): Remove here. * src/Makefile.in: Regenerate. * include/ext/stl_bvector.h (class __BVECTOR): Use __throw_range_error. * include/ext/bvector: Remove stl_range_errors.h * include/bits/c++config (_GLIBCPP_USE_EXCEPTIONS): Remove. * include/bits/functexcept.h: New file. * src/functexcept.cc: New file. Definitions for function-based exception routines. * src/Makefile.am (sources): Add functexcept.cc. * src/Makefile.in: Regenerate. * include/bits/stl_config.h (__STL_USE_EXCEPTIONS): Wrap with __EXCEPTIONS. * include/bits/localefwd.h: Include functexcept.h. * include/bits/std_iosfwd.h: Same. * include/bits/basic_ios.h: Use __throw_ios_failure instead of throw basic_ios::failure. * include/bits/fstream.tcc (filebuf::_M_allocate_buffers): Use __throw_exception_again. (filebuf::_M_filebuf_init): Same. * include/bits/streambuf.tcc (__copy_streambufs): Same. * include/bits/ostream.tcc (ostream::operator<<): Same. * include/bits/istream.tcc (istream::operator>>): Same. * include/bits/basic_string.tcc (string::_M_mutate): Same. (string::_S_construct): Same. (string::_M_clone): Same. * include/bits/locale_facets.tcc (use_facet(const locale&)): Use __throw_bad_cast. (num_put<_CharT, _OutIter>::do_put): Use __throw_exception_again. * src/localename.cc (locale::_Imp::_Imp(const _Impl&, size_t): Use __throw_exception_again. (locale::_Imp::_Imp(string, size_t): Same. (locale::_Imp::_M_replace_facet): Use __throw_runtime_error. * src/locale.cc (locale::_M_coalesce): Use __throw_exception_again. (locale::locale(const char*)): Use __throw_runtime_error. (locale::classic): Use __throw_exception_again. (locale::_S_normalize_category): Use __throw_runtime_error. * src/stdexcept.cc: Remove cruft. * libsupc++/exception_defines.h: New file. * libsupc++/new_opnt.cc: Include exception_defines.h. * libsupc++/vec.cc: Same. (__cxa_vec_new2): Use __throw_exception_again. (__cxa_vec_new3): Same. (__cxa_vec_ctor): Same. (__cxa_vec_delete3): Same. (__cxa_vec_cctor): Same. (__cxa_vec_delete2): Same. (__cxa_vec_dtor): Same. * libsupc++/exception_support.cc: Include exception_defines.h. Only compile exception-handling bits if __EXCEPTIONS is defined. Remove old ABI support. * libsupc++/new_op.cc (new): Include exception_defines.h. Use std::__throw_bad_alloc() instead of throw bad_alloc. * libsupc++/Makefile.am: Add exception_defines.h. * libsupc++/Makefile.in: Reformat. * libsupc++/*: Format. From-SVN: r39730
148 lines
5.0 KiB
Makefile
148 lines
5.0 KiB
Makefile
## Makefile for the GNU C++ Support library.
|
|
##
|
|
## Copyright (C) 2000, 2001 Free Software Foundation, Inc.
|
|
##
|
|
## Process this file with automake to produce Makefile.in.
|
|
##
|
|
## This file is part of GNU CC.
|
|
##
|
|
## GNU CC is free software; you can redistribute it and/or modify
|
|
## it under the terms of the GNU General Public License as published by
|
|
## the Free Software Foundation; either version 2, or (at your option)
|
|
## any later version.
|
|
##
|
|
## GNU CC is distributed in the hope that it will be useful,
|
|
## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
## GNU General Public License for more details.
|
|
##
|
|
## You should have received a copy of the GNU General Public License
|
|
## along with GNU CC; see the file COPYING. If not, write to
|
|
## the Free Software Foundation, 59 Temple Place - Suite 330,
|
|
## Boston, MA 02111-1307, USA.
|
|
|
|
AUTOMAKE_OPTIONS = 1.3 cygnus
|
|
MAINT_CHARSET = latin1
|
|
|
|
mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs
|
|
|
|
# Cross compiler and multilib support.
|
|
toolexecdir = @glibcpp_toolexecdir@
|
|
toolexeclibdir = @glibcpp_toolexeclibdir@
|
|
|
|
|
|
# Need this library to both be part of libstdc++.a, and installed
|
|
# separately too.
|
|
# 1) separate libsupc++.la
|
|
toolexeclib_LTLIBRARIES = libsupc++.la
|
|
# 2) integrated libsupc++convenience.la that is to be a part of libstdc++.a
|
|
noinst_LTLIBRARIES = libsupc++convenience.la
|
|
|
|
|
|
# Compile flags that should be constant throughout the build, both for
|
|
# SUBDIRS and for libstdc++-v3 in general.
|
|
OPTIMIZE_CXXFLAGS = @OPTIMIZE_CXXFLAGS@
|
|
|
|
# These bits are all figured out from configure. Look in acinclude.m4
|
|
# or configure.in to see how they are set. See GLIBCPP_EXPORT_FLAGS
|
|
# NB: DEBUGFLAGS have to be at the end so that -O2 can be overridden.
|
|
CONFIG_CXXFLAGS = \
|
|
@EXTRA_CXX_FLAGS@ @SECTION_FLAGS@ @CSHADOW_FLAGS@ @DEBUG_FLAGS@
|
|
|
|
# Warning flags to use.
|
|
WARN_CXXFLAGS = \
|
|
@WARN_FLAGS@ $(WERROR) @WFMT_FLAGS@
|
|
|
|
# Use common includes from acinclude.m4/GLIBCPP_EXPORT_INCLUDES
|
|
GLIBCPP_INCLUDE_DIR = @GLIBCPP_INCLUDE_DIR@
|
|
C_INCLUDE_DIR = @C_INCLUDE_DIR@
|
|
CSTD_INCLUDES = @CSTD_INCLUDES@
|
|
LIBMATH_INCLUDES = @LIBMATH_INCLUDES@
|
|
LIBSUPCXX_INCLUDES = @LIBSUPCXX_INCLUDES@
|
|
LIBIO_INCLUDES = @LIBIO_INCLUDES@
|
|
TOPLEVEL_INCLUDES = @TOPLEVEL_INCLUDES@
|
|
|
|
INCLUDES = \
|
|
-I$(toplevel_srcdir)/gcc -I$(toplevel_srcdir)/include \
|
|
-I$(GLIBCPP_INCLUDE_DIR) $(CSTD_INCLUDES) -I$(top_builddir)/include \
|
|
$(LIBSUPCXX_INCLUDES)
|
|
|
|
headers = \
|
|
exception new typeinfo cxxabi.h exception_defines.h
|
|
|
|
sources = \
|
|
del_op.cc \
|
|
del_opnt.cc \
|
|
del_opv.cc \
|
|
del_opvnt.cc \
|
|
exception_support.cc \
|
|
new_handler.cc \
|
|
new_op.cc \
|
|
new_opnt.cc \
|
|
new_opv.cc \
|
|
new_opvnt.cc \
|
|
pure.cc \
|
|
tinfo.cc \
|
|
tinfo2.cc \
|
|
vec.cc
|
|
|
|
libsupc___la_SOURCES = $(sources)
|
|
libsupc__convenience_la_SOURCES = $(sources)
|
|
|
|
glibcppinstalldir = @gxx_include_dir@
|
|
glibcppinstall_HEADERS = $(headers)
|
|
|
|
# Flags to force separate libtool library to be static only.
|
|
LIBTOOL = @LIBTOOL@ --tag disable-shared
|
|
LIBSUPCXX_CXXFLAGS = -prefer-pic
|
|
|
|
# AM_CXXFLAGS needs to be in each subdirectory so that it can be
|
|
# modified in a per-library or per-sub-library way. Need to manually
|
|
# set this option because CONFIG_CXXFLAGS has to be after
|
|
# OPTIMIZE_CXXFLAGS on the compile line so that -O2 can be overridden
|
|
# as the occasion call for it. (ie, --enable-debug)
|
|
AM_CXXFLAGS = \
|
|
-fno-implicit-templates \
|
|
$(LIBSUPCXX_CXXFLAGS) \
|
|
$(WARN_CXXFLAGS) \
|
|
$(OPTIMIZE_CXXFLAGS) \
|
|
$(CONFIG_CXXFLAGS)
|
|
|
|
# libstdc++ libtool notes
|
|
|
|
# 1) Need to explicitly set LTCXXCOMPILE so that AM_CXXFLAGS is
|
|
# last. (That way, things like -O2 passed down from the toplevel can
|
|
# be overridden by --enable-debug.)
|
|
|
|
# 2) In general, libtool expects an argument such as `--tag=CXX' when
|
|
# using the C++ compiler, because that will enable the settings
|
|
# detected when C++ support was being configured. However, when no
|
|
# such flag is given in the command line, libtool attempts to figure
|
|
# it out by matching the compiler name in each configuration section
|
|
# against a prefix of the command line. The problem is that, if the
|
|
# compiler name and its initial flags stored in the libtool
|
|
# configuration file don't match those in the command line, libtool
|
|
# can't decide which configuration to use, and it gives up. The
|
|
# correct solution is to add `--tag CXX' to LTCXXCOMPILE and maybe
|
|
# CXXLINK, just after $(LIBTOOL), so that libtool doesn't have to
|
|
# attempt to infer which configuration to use.
|
|
#
|
|
# We have to put --tag disable-shared after --tag CXX lest things
|
|
# CXX undo the affect of disable-shared.
|
|
LTCXXCOMPILE = $(LIBTOOL) --tag CXX --tag disable-shared \
|
|
--mode=compile $(CXX) $(INCLUDES) \
|
|
$(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(AM_CXXFLAGS)
|
|
|
|
# 3) We have a problem when building the shared libstdc++ object if
|
|
# the rules automake generates would be used. We cannot allow CXX to
|
|
# be used in libtool since this would add -lstdc++ to the link line
|
|
# which of course is problematic at this point.
|
|
CXXLINK = $(LIBTOOL) --mode=link "$(CC)" \
|
|
@OPT_LDFLAGS@ @SECTION_LDFLAGS@ $(AM_CXXFLAGS) $(LDFLAGS) -o $@
|
|
|
|
|
|
|
|
|
|
|
|
|