X-Git-Url: https://oss.titaniummirror.com/gitweb/?a=blobdiff_plain;f=libstdc%2B%2B-v3%2Fsrc%2FMakefile.am;h=fdd9b6df4f01a404b201e97e6b60f1f5bee25d91;hb=6fed43773c9b0ce596dca5686f37ac3fc0fa11c0;hp=4592168f48d6a0c27ca339218d28a8a8260120e5;hpb=27b11d56b743098deb193d510b337ba22dc52e5c;p=msp430-gcc.git diff --git a/libstdc++-v3/src/Makefile.am b/libstdc++-v3/src/Makefile.am index 4592168f..fdd9b6df 100644 --- a/libstdc++-v3/src/Makefile.am +++ b/libstdc++-v3/src/Makefile.am @@ -1,6 +1,7 @@ ## Makefile for the src subdirectory of the GNU C++ Standard library. ## -## Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 +## Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 +## 2006, 2007, 2008, 2009 ## Free Software Foundation, Inc. ## ## This file is part of the libstdc++ version 3 distribution. @@ -9,7 +10,7 @@ ## This file is part of the GNU ISO C++ Library. This library 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) +## Free Software Foundation; either version 3, or (at your option) ## any later version. ## This library is distributed in the hope that it will be useful, @@ -18,145 +19,308 @@ ## GNU General Public License for more details. ## You should have received a copy of the GNU General Public License along -## with this library; see the file COPYING. If not, write to the Free -## Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -## USA. +## with this library; see the file COPYING3. If not see +## . -AUTOMAKE_OPTIONS = 1.3 cygnus -MAINT_CHARSET = latin1 - -mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs +include $(top_srcdir)/fragment.am # Cross compiler support. -CXX = @glibcpp_CXX@ -toolexecdir = @glibcpp_toolexecdir@ -toolexeclibdir = @glibcpp_toolexeclibdir@ toolexeclib_LTLIBRARIES = libstdc++.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@ @DEBUG_FLAGS@ - -# Warning flags to use. -WARN_CXXFLAGS = \ - @WARN_FLAGS@ $(WERROR) -fdiagnostics-show-location=once - -# Use common includes from acinclude.m4/GLIBCPP_EXPORT_INCLUDES -GLIBCPP_INCLUDES = @GLIBCPP_INCLUDES@ -LIBMATH_INCLUDES = @LIBMATH_INCLUDES@ -LIBSUPCXX_INCLUDES = @LIBSUPCXX_INCLUDES@ -LIBIO_INCLUDES = @LIBIO_INCLUDES@ -TOPLEVEL_INCLUDES = @TOPLEVEL_INCLUDES@ - -INCLUDES = \ - -nostdinc++ \ - $(GLIBCPP_INCLUDES) \ - $(LIBSUPCXX_INCLUDES) $(LIBIO_INCLUDES) $(LIBMATH_INCLUDES) \ - $(TOPLEVEL_INCLUDES) - -# Source files linked in via configuration magic for a particular target. -target_sources = \ +# Symbol versioning for shared libraries. +if ENABLE_SYMVERS +libstdc++-symbols.ver: ${glibcxx_srcdir}/$(SYMVER_FILE) \ + $(port_specific_symbol_files) + cp ${glibcxx_srcdir}/$(SYMVER_FILE) ./libstdc++-symbols.ver + chmod +w ./libstdc++-symbols.ver + if test "x$(port_specific_symbol_files)" != x; then \ + if grep '^# Appended to version file.' \ + $(port_specific_symbol_files) /dev/null > /dev/null 2>&1; then \ + cat $(port_specific_symbol_files) >> $@; \ + else \ + sed -n '1,/DO NOT DELETE/p' $@ > tmp.top; \ + sed -n '/DO NOT DELETE/,$$p' $@ > tmp.bottom; \ + cat tmp.top $(port_specific_symbol_files) tmp.bottom > $@; \ + rm tmp.top tmp.bottom; \ + fi; \ + fi + +if ENABLE_SYMVERS_GNU +version_arg = -Wl,--version-script=libstdc++-symbols.ver +version_dep = libstdc++-symbols.ver +endif +if ENABLE_SYMVERS_GNU_NAMESPACE +version_arg = -Wl,--version-script=libstdc++-symbols.ver +version_dep = libstdc++-symbols.ver +endif +if ENABLE_SYMVERS_DARWIN +version_arg = -Wl,-exported_symbols_list,libstdc++-symbols.explist +version_dep = libstdc++-symbols.explist +libstdc++-symbols.explist : libstdc++-symbols.ver \ + ${glibcxx_srcdir}/scripts/make_exports.pl \ + $(libstdc___la_OBJECTS) $(libstdc___la_LIBADD) + perl ${glibcxx_srcdir}/scripts/make_exports.pl \ + libstdc++-symbols.ver \ + $(libstdc___la_OBJECTS:%.lo=.libs/%.o) \ + `echo $(libstdc___la_LIBADD) | \ + sed 's,/\([^/.]*\)\.la,/.libs/\1.a,g'` \ + > $@ || (rm -f $@ ; exit 1) +endif +else +version_arg = +version_dep = +endif + + +# Source files linked in via configuration/make substitution for a +# particular host. +host_sources = \ + atomicity.cc \ codecvt_members.cc \ collate_members.cc \ ctype_members.cc \ messages_members.cc \ monetary_members.cc \ numeric_members.cc \ - time_members.cc + time_members.cc + +codecvt_members.cc: ${glibcxx_srcdir}/$(CCODECVT_CC) + $(LN_S) ${glibcxx_srcdir}/$(CCODECVT_CC) . || true + +collate_members.cc: ${glibcxx_srcdir}/$(CCOLLATE_CC) + $(LN_S) ${glibcxx_srcdir}/$(CCOLLATE_CC) . || true + +ctype_members.cc: ${glibcxx_srcdir}/$(CCTYPE_CC) + $(LN_S) ${glibcxx_srcdir}/$(CCTYPE_CC) . || true + +messages_members.cc: ${glibcxx_srcdir}/$(CMESSAGES_CC) + $(LN_S) ${glibcxx_srcdir}/$(CMESSAGES_CC) . || true + +monetary_members.cc: ${glibcxx_srcdir}/$(CMONEY_CC) + $(LN_S) ${glibcxx_srcdir}/$(CMONEY_CC) . || true + +numeric_members.cc: ${glibcxx_srcdir}/$(CNUMERIC_CC) + $(LN_S) ${glibcxx_srcdir}/$(CNUMERIC_CC) . || true + +time_members.cc: ${glibcxx_srcdir}/$(CTIME_CC) + $(LN_S) ${glibcxx_srcdir}/$(CTIME_CC) . || true + +atomicity_file = ${glibcxx_srcdir}/$(ATOMICITY_SRCDIR)/atomicity.h +atomicity.cc: ${atomicity_file} + $(LN_S) ${atomicity_file} ./atomicity.cc || true -# Source files linked in via configuration magic for a particular -# target, but with ad hoc naming rules. -target_sources_extra = \ - basic_file.cc \ - c++locale.cc +# Source files linked in via configuration/make substitution for a +# particular host, but with ad hoc naming rules. +host_sources_extra = \ + basic_file.cc c++locale.cc ${ldbl_compat_sources} ${parallel_sources} + +c++locale.cc: ${glibcxx_srcdir}/$(CLOCALE_CC) + $(LN_S) ${glibcxx_srcdir}/$(CLOCALE_CC) ./$@ || true + +basic_file.cc: ${glibcxx_srcdir}/$(BASIC_FILE_CC) + $(LN_S) ${glibcxx_srcdir}/$(BASIC_FILE_CC) ./$@ || true + +if ENABLE_PARALLEL +parallel_sources = parallel_list.cc parallel_settings.cc +else +parallel_sources = +endif + +if GLIBCXX_LDBL_COMPAT +ldbl_compat_sources = compatibility-ldbl.cc +else +ldbl_compat_sources = +endif # Sources present in the src directory. sources = \ - bitset.cc \ + atomic.cc \ + bitmap_allocator.cc \ + pool_allocator.cc \ + mt_allocator.cc \ codecvt.cc \ + compatibility.cc \ complex_io.cc \ - concept-inst.cc \ ctype.cc \ - ext-inst.cc \ - fstream.cc \ - fstream-inst.cc \ + debug.cc \ functexcept.cc \ - globals.cc \ - io-inst.cc \ + hash.cc \ + hash_c++0x.cc \ + globals_io.cc \ + hashtable.cc \ + hashtable_c++0x.cc \ ios.cc \ - istream-inst.cc \ + ios_failure.cc \ + ios_init.cc \ + ios_locale.cc \ limits.cc \ + limits_c++0x.cc \ + list.cc \ + debug_list.cc \ locale.cc \ - locale-inst.cc \ + locale_init.cc \ + locale_facets.cc \ localename.cc \ + math_stubs_float.cc \ + math_stubs_long_double.cc \ + stdexcept.cc \ + strstream.cc \ + system_error.cc \ + tree.cc \ + allocator-inst.cc \ + concept-inst.cc \ + fstream-inst.cc \ + ext-inst.cc \ + ios-inst.cc \ + iostream-inst.cc \ + istream-inst.cc \ + istream.cc \ + locale-inst.cc \ misc-inst.cc \ ostream-inst.cc \ sstream-inst.cc \ - stdexcept.cc \ - stl-inst.cc \ streambuf-inst.cc \ + streambuf.cc \ string-inst.cc \ - strstream.cc \ valarray-inst.cc \ - vterminate.cc \ + wlocale-inst.cc \ wstring-inst.cc \ - ${target_sources} \ - ${target_sources_extra} + mutex.cc \ + condition_variable.cc \ + chrono.cc \ + thread.cc \ + ${host_sources} \ + ${host_sources_extra} -VPATH = $(top_srcdir)/src:$(top_srcdir) +vpath % $(top_srcdir)/src +vpath % $(top_srcdir) libstdc___la_SOURCES = $(sources) libstdc___la_LIBADD = \ - ../libmath/libmath.la @libio_la@ \ - ../libsupc++/libsupc++convenience.la + $(GLIBCXX_LIBS) \ + $(top_builddir)/libsupc++/libsupc++convenience.la -if GLIBCPP_BUILD_VERSIONED_SHLIB -version_arg=-Wl,--version-script=linker.map -else -version_arg= -endif +libstdc___la_DEPENDENCIES = \ + ${version_dep} \ + $(top_builddir)/libsupc++/libsupc++convenience.la libstdc___la_LDFLAGS = \ - -version-info @libtool_VERSION@ ${version_arg} \ - -lm @LIBUNWIND_FLAG@ - -libstdc___la_DEPENDENCIES = $(libstdc___la_LIBADD) linker.map + -version-info $(libtool_VERSION) ${version_arg} -lm # Use special rules for the deprecated source files so that they find # deprecated include files. -GLIBCPP_INCLUDE_DIR=@glibcpp_builddir@/include +GLIBCXX_INCLUDE_DIR=$(glibcxx_builddir)/include strstream.lo: strstream.cc - $(LTCXXCOMPILE) -I$(GLIBCPP_INCLUDE_DIR)/backward -Wno-deprecated -c $< + $(LTCXXCOMPILE) -I$(GLIBCXX_INCLUDE_DIR)/backward -Wno-deprecated -c $< strstream.o: strstream.cc - $(CXXCOMPILE) -I$(GLIBCPP_INCLUDE_DIR)/backward -Wno-deprecated -c $< + $(CXXCOMPILE) -I$(GLIBCXX_INCLUDE_DIR)/backward -Wno-deprecated -c $< # Use special rules for the concept-checking instantiations so that all # the generated template functions are also instantiated. Force the checks # to be on so that the instantiations are actually seen. concept-inst.lo: concept-inst.cc - $(LTCXXCOMPILE) -D_GLIBCPP_CONCEPT_CHECKS -fimplicit-templates -c $< + $(LTCXXCOMPILE) -D_GLIBCXX_CONCEPT_CHECKS -fimplicit-templates -c $< concept-inst.o: concept-inst.cc - $(CXXCOMPILE) -D_GLIBCPP_CONCEPT_CHECKS -fimplicit-templates -c $< + $(CXXCOMPILE) -D_GLIBCXX_CONCEPT_CHECKS -fimplicit-templates -c $< + +# Use special rules for parallel mode compilation. +PARALLEL_FLAGS = -fopenmp -D_GLIBCXX_PARALLEL -I$(glibcxx_builddir)/../libgomp +parallel_list.lo: parallel_list.cc + $(LTCXXCOMPILE) $(PARALLEL_FLAGS) -c $< +parallel_list.o: parallel_list.cc + $(CXXCOMPILE) $(PARALLEL_FLAGS) -c $< + +parallel_settings.lo: parallel_settings.cc + $(LTCXXCOMPILE) $(PARALLEL_FLAGS) -c $< +parallel_settings.o: parallel_settings.cc + $(CXXCOMPILE) $(PARALLEL_FLAGS) -c $< + +# Use special rules for the C++0x sources so that the proper flags are passed. +functexcept.lo: functexcept.cc + $(LTCXXCOMPILE) -std=gnu++0x -c $< +functexcept.o: functexcept.cc + $(CXXCOMPILE) -std=gnu++0x -c $< + +system_error.lo: system_error.cc + $(LTCXXCOMPILE) -std=gnu++0x -c $< +system_error.o: system_error.cc + $(CXXCOMPILE) -std=gnu++0x -c $< + +mutex.lo: mutex.cc + $(LTCXXCOMPILE) -std=gnu++0x -c $< +mutex.o: mutex.cc + $(CXXCOMPILE) -std=gnu++0x -c $< + +condition_variable.lo: condition_variable.cc + $(LTCXXCOMPILE) -std=gnu++0x -c $< +condition_variable.o: condition_variable.cc + $(CXXCOMPILE) -std=gnu++0x -c $< + +hash_c++0x.lo: hash_c++0x.cc + $(LTCXXCOMPILE) -std=gnu++0x -c $< +hash_c++0x.o: hash_c++0x.cc + $(CXXCOMPILE) -std=gnu++0x -c $< + +hashtable_c++0x.lo: hashtable_c++0x.cc + $(LTCXXCOMPILE) -std=gnu++0x -c $< +hashtable_c++0x.o: hashtable_c++0x.cc + $(CXXCOMPILE) -std=gnu++0x -c $< + +limits_c++0x.lo: limits_c++0x.cc + $(LTCXXCOMPILE) -std=gnu++0x -c $< +limits_c++0x.o: limits_c++0x.cc + $(CXXCOMPILE) -std=gnu++0x -c $< +atomic.lo: atomic.cc + $(LTCXXCOMPILE) -std=gnu++0x -c $< +atomic.o: atomic.cc + $(CXXCOMPILE) -std=gnu++0x -c $< + +fstream-inst.lo: fstream-inst.cc + $(LTCXXCOMPILE) -std=gnu++0x -c $< +fstream-inst.o: fstream-inst.cc + $(CXXCOMPILE) -std=gnu++0x -c $< + +string-inst.lo: string-inst.cc + $(LTCXXCOMPILE) -std=gnu++0x -c $< +string-inst.o: string-inst.cc + $(CXXCOMPILE) -std=gnu++0x -c $< + +wstring-inst.lo: wstring-inst.cc + $(LTCXXCOMPILE) -std=gnu++0x -c $< +wstring-inst.o: wstring-inst.cc + $(CXXCOMPILE) -std=gnu++0x -c $< + +chrono.lo: chrono.cc + $(LTCXXCOMPILE) -std=gnu++0x -c $< +chrono.o: chrono.cc + $(CXXCOMPILE) -std=gnu++0x -c $< + +thread.lo: thread.cc + $(LTCXXCOMPILE) -std=gnu++0x -c $< +thread.o: thread.cc + $(CXXCOMPILE) -std=gnu++0x -c $< + +if GLIBCXX_LDBL_COMPAT +# Use special rules for compatibility-ldbl.cc compilation, as we need to +# pass -mlong-double-64. +compatibility-ldbl.lo: compatibility-ldbl.cc + $(LTCXXCOMPILE) -mlong-double-64 -c $< +compatibility-ldbl.o: compatibility-ldbl.cc + $(CXXCOMPILE) -mlong-double-64 -c $< +endif # 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) +# as the occasion calls for it. AM_CXXFLAGS = \ -fno-implicit-templates \ - $(LIBSUPCXX_CXXFLAGS) \ $(WARN_CXXFLAGS) \ $(OPTIMIZE_CXXFLAGS) \ - $(CONFIG_CXXFLAGS) + $(CONFIG_CXXFLAGS) # libstdc++ libtool notes @@ -178,7 +342,9 @@ AM_CXXFLAGS = \ # CXXLINK, just after $(LIBTOOL), so that libtool doesn't have to # attempt to infer which configuration to use LTCXXCOMPILE = $(LIBTOOL) --tag CXX --mode=compile $(CXX) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(AM_CXXFLAGS) + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) + +LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS)) # 3) We'd have a problem when building the shared libstdc++ object if # the rules automake generates would be used. We cannot allow g++ to @@ -187,4 +353,38 @@ LTCXXCOMPILE = $(LIBTOOL) --tag CXX --mode=compile $(CXX) $(INCLUDES) \ # directory to configure libstdc++-v3 to use gcc as the C++ # compilation driver. CXXLINK = $(LIBTOOL) --tag CXX --mode=link $(CXX) \ - @OPT_LDFLAGS@ @SECTION_LDFLAGS@ $(AM_CXXFLAGS) $(LDFLAGS) -o $@ + $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@ + + +# Added bits to build debug library. +if GLIBCXX_BUILD_DEBUG +all-local: build_debug +install-data-local: install_debug +else +all-local: +install-data-local: +endif + +debugdir = debug + +# Build a set of debug objects here. +stamp-debug: + if test ! -d ${debugdir}; then \ + mkdir -p ${debugdir}; \ + (cd ${debugdir}; \ + sed -e 's/top_builddir = \.\./top_builddir = ..\/../' \ + -e 's/srcdir = \.\./srcdir = ..\/../' \ + -e 's/glibcxx_basedir = \.\./glibcxx_basedir = ..\/../' \ + -e 's/all-local: build_debug/all-local:/' \ + -e 's/install-data-local: install_debug/install-data-local:/' \ + < ../Makefile > Makefile) ; \ + fi; \ + echo `date` > stamp-debug; + +build_debug: stamp-debug + (cd ${debugdir} && $(MAKE) CXXFLAGS='$(DEBUG_FLAGS)' all) + +# Install debug library here. +install_debug: + (cd ${debugdir} && $(MAKE) \ + toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install)