OSDN Git Service

2011-03-14 Benjamin Kosnik <bkoz@redhat.com>
[pf3gnuchains/gcc-fork.git] / libstdc++-v3 / src / Makefile.am
index cf4522f..9a35685 100644 (file)
@@ -1,7 +1,7 @@
 ## Makefile for the src subdirectory of the GNU C++ Standard library.
 ##
 ## Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
-## 2006, 2007, 2008
+## 2006, 2007, 2008, 2009, 2010, 2011
 ## Free Software Foundation, Inc.
 ##
 ## This file is part of the libstdc++ version 3 distribution.
@@ -10,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,
@@ -19,9 +19,8 @@
 ## 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, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-## USA.
+## with this library; see the file COPYING3.  If not see
+## <http://www.gnu.org/licenses/>.
 
 include $(top_srcdir)/fragment.am
 
@@ -46,14 +45,38 @@ libstdc++-symbols.ver:  ${glibcxx_srcdir}/$(SYMVER_FILE) \
          fi; \
        fi
 
+CLEANFILES = libstdc++-symbols.ver
+
 if ENABLE_SYMVERS_GNU
+if ENABLE_SYMVERS_SOL2
+version_arg = -Wl,--version-script,libstdc++-symbols.ver-sol2
+version_dep = libstdc++-symbols.ver-sol2
+libstdc++-symbols.ver-sol2 : libstdc++-symbols.ver
+       sed -e '/^#ifdef HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT/,/^#endif/d' $< \
+        > $@ || (rm -f $@ ; exit 1)
+else
 version_arg = -Wl,--version-script=libstdc++-symbols.ver
 version_dep = libstdc++-symbols.ver
 endif
+endif
 if ENABLE_SYMVERS_GNU_NAMESPACE
 version_arg = -Wl,--version-script=libstdc++-symbols.ver
 version_dep = libstdc++-symbols.ver
 endif
+if ENABLE_SYMVERS_SUN
+version_arg = -Wl,-M,libstdc++-symbols.ver-sun
+version_dep = libstdc++-symbols.ver-sun
+libstdc++-symbols.ver-sun : libstdc++-symbols.ver \
+               $(toplevel_srcdir)/contrib/make_sunver.pl \
+               $(libstdc___la_OBJECTS) $(libstdc___la_LIBADD)
+       CXXFILT="$(CXXFILT)"; export CXXFILT; \
+       perl $(toplevel_srcdir)/contrib/make_sunver.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
 if ENABLE_SYMVERS_DARWIN
 version_arg = -Wl,-exported_symbols_list,libstdc++-symbols.explist
 version_dep = libstdc++-symbols.explist
@@ -67,6 +90,8 @@ libstdc++-symbols.explist : libstdc++-symbols.ver \
            sed 's,/\([^/.]*\)\.la,/.libs/\1.a,g'` \
         > $@ || (rm -f $@ ; exit 1)
 endif
+
+CLEANFILES += $(version_dep)
 else
 version_arg =
 version_dep =
@@ -83,7 +108,7 @@ host_sources = \
        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
@@ -113,7 +138,8 @@ atomicity.cc: ${atomicity_file}
 # 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}
+       basic_file.cc c++locale.cc \
+       ${inst_sources} ${ldbl_compat_sources} ${parallel_sources}
 
 c++locale.cc: ${glibcxx_srcdir}/$(CLOCALE_CC)
        $(LN_S) ${glibcxx_srcdir}/$(CLOCALE_CC) ./$@ || true
@@ -122,7 +148,9 @@ 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
+parallel_sources = parallel_settings.cc \
+                  compatibility-parallel_list.cc \
+                  compatibility-parallel_list-2.cc
 else
 parallel_sources =
 endif
@@ -133,7 +161,30 @@ else
 ldbl_compat_sources =
 endif
 
-# Sources present in the src directory.
+if ENABLE_EXTERN_TEMPLATE
+XTEMPLATE_FLAGS = -fno-implicit-templates
+inst_sources = \
+       allocator-inst.cc \
+       concept-inst.cc \
+       ext-inst.cc \
+       fstream-inst.cc \
+       ios-inst.cc \
+       iostream-inst.cc \
+       istream-inst.cc \
+       locale-inst.cc \
+       misc-inst.cc \
+       ostream-inst.cc \
+       sstream-inst.cc \
+       streambuf-inst.cc \
+       string-inst.cc \
+       wlocale-inst.cc \
+       wstring-inst.cc
+else
+XTEMPLATE_FLAGS =
+inst_sources =
+endif
+
+# Sources present in the src directory, always present.
 sources = \
        atomic.cc \
        bitmap_allocator.cc \
@@ -141,54 +192,50 @@ sources = \
        mt_allocator.cc \
        codecvt.cc \
        compatibility.cc \
+       compatibility-c++0x.cc \
+       compatibility-debug_list.cc \
+       compatibility-debug_list-2.cc \
+       compatibility-list.cc \
+       compatibility-list-2.cc \
        complex_io.cc \
        ctype.cc \
        debug.cc \
        functexcept.cc \
-       hash.cc \
-       hash_c++0x.cc \
+       functional.cc \
        globals_io.cc \
-       hashtable.cc \
+       hash_c++0x.cc \
+       hash_tr1.cc \
        hashtable_c++0x.cc \
+       hashtable_tr1.cc \
        ios.cc \
        ios_failure.cc \
        ios_init.cc \
        ios_locale.cc \
        limits.cc \
-       limits_c++0x.cc \
        list.cc \
-       debug_list.cc \
        locale.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 \
-       streambuf-inst.cc \
+       placeholders.cc \
+       regex.cc \
+       shared_ptr.cc \
        streambuf.cc \
-       string-inst.cc \
-       valarray-inst.cc \
-       wlocale-inst.cc \
-       wstring-inst.cc \
        mutex.cc \
        condition_variable.cc \
        chrono.cc \
+       thread.cc \
+       future.cc \
+       valarray.cc \
        ${host_sources} \
-       ${host_sources_extra} 
+       ${host_sources_extra}
 
 vpath % $(top_srcdir)/src
 vpath % $(top_srcdir)
@@ -197,16 +244,16 @@ libstdc___la_SOURCES = $(sources)
 
 libstdc___la_LIBADD = \
        $(GLIBCXX_LIBS) \
-       $(top_builddir)/libmath/libmath.la \
        $(top_builddir)/libsupc++/libsupc++convenience.la
 
 libstdc___la_DEPENDENCIES = \
        ${version_dep} \
-       $(top_builddir)/libmath/libmath.la \
        $(top_builddir)/libsupc++/libsupc++convenience.la
 
 libstdc___la_LDFLAGS = \
-       -version-info $(libtool_VERSION) ${version_arg} -lm 
+       -version-info $(libtool_VERSION) ${version_arg} -lm
+
+libstdc___la_LINK = $(CXXLINK) $(libstdc___la_LDFLAGS)
 
 # Use special rules for the deprecated source files so that they find
 # deprecated include files.
@@ -226,22 +273,32 @@ concept-inst.o: concept-inst.cc
 
 # 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 $<
 
+compatibility-parallel_list.lo: compatibility-parallel_list.cc
+       $(LTCXXCOMPILE) -c $<
+compatibility-parallel_list.o: compatibility-parallel_list.cc
+       $(CXXCOMPILE) -c $<
+
+compatibility-parallel_list-2.lo: compatibility-parallel_list-2.cc
+       $(LTCXXCOMPILE) -c $<
+compatibility-parallel_list-2.o: compatibility-parallel_list-2.cc
+       $(CXXCOMPILE) -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 $<
 
+shared_ptr.lo: shared_ptr.cc
+       $(LTCXXCOMPILE) -std=gnu++0x -c $<
+shared_ptr.o: shared_ptr.cc
+       $(CXXCOMPILE) -std=gnu++0x -c $<
+
 system_error.lo: system_error.cc
        $(LTCXXCOMPILE) -std=gnu++0x -c $<
 system_error.o: system_error.cc
@@ -257,6 +314,16 @@ condition_variable.lo: condition_variable.cc
 condition_variable.o: condition_variable.cc
        $(CXXCOMPILE) -std=gnu++0x -c $<
 
+compatibility-c++0x.lo: compatibility-c++0x.cc
+       $(LTCXXCOMPILE) -std=gnu++0x -c $<
+compatibility-c++0x.o: compatibility-c++0x.cc
+       $(CXXCOMPILE) -std=gnu++0x -c $<
+
+functional.lo: functional.cc
+       $(LTCXXCOMPILE) -std=gnu++0x -c $<
+functional.o: functional.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
@@ -267,15 +334,20 @@ hashtable_c++0x.lo: hashtable_c++0x.cc
 hashtable_c++0x.o: hashtable_c++0x.cc
        $(CXXCOMPILE) -std=gnu++0x -c $<
 
-limits_c++0x.lo: limits_c++0x.cc
+limits.lo: limits.cc
        $(LTCXXCOMPILE) -std=gnu++0x -c $<
-limits_c++0x.o: limits_c++0x.cc
+limits.o: limits.cc
        $(CXXCOMPILE) -std=gnu++0x -c $<
 
 atomic.lo: atomic.cc
-       $(LTCXXCOMPILE) -x c++ -std=gnu++0x -c $<
+       $(LTCXXCOMPILE) -std=gnu++0x -c $<
 atomic.o: atomic.cc
-       $(CXXCOMPILE) -x c++ -std=gnu++0x -c $<
+       $(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 $<
@@ -292,6 +364,31 @@ chrono.lo: chrono.cc
 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 $<
+
+future.lo: future.cc
+       $(LTCXXCOMPILE) -std=gnu++0x -c $<
+future.o: future.cc
+       $(CXXCOMPILE) -std=gnu++0x -c $<
+
+regex.lo: regex.cc
+       $(LTCXXCOMPILE) -std=gnu++0x -c $<
+regex.o: regex.cc
+       $(CXXCOMPILE) -std=gnu++0x -c $<
+
+debug.lo: debug.cc
+       $(LTCXXCOMPILE) -std=gnu++0x -c $<
+debug.o: debug.cc
+       $(CXXCOMPILE) -std=gnu++0x -c $<
+
+placeholders.lo: placeholders.cc
+       $(LTCXXCOMPILE) -std=gnu++0x -c $<
+placeholders.o: placeholders.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.
@@ -307,7 +404,7 @@ endif
 # OPTIMIZE_CXXFLAGS on the compile line so that -O2 can be overridden
 # as the occasion calls for it.
 AM_CXXFLAGS = \
-       -fno-implicit-templates \
+       $(XTEMPLATE_FLAGS) \
        $(WARN_CXXFLAGS) \
        $(OPTIMIZE_CXXFLAGS) \
        $(CONFIG_CXXFLAGS)
@@ -331,8 +428,10 @@ AM_CXXFLAGS = \
 # 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
-LTCXXCOMPILE = $(LIBTOOL) --tag CXX --mode=compile $(CXX) $(INCLUDES) \
-              $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) 
+LTCXXCOMPILE = $(LIBTOOL) --tag CXX \
+              $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile \
+              $(CXX) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+              $(AM_CXXFLAGS) $(CXXFLAGS)
 
 LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS))
 
@@ -342,8 +441,8 @@ LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS))
 # course is problematic at this point.  So, we get the top-level
 # 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) $(LTLDFLAGS) -o $@
+CXXLINK = $(LIBTOOL) --tag CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
+         $(CXX) $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@
 
 
 # Added bits to build debug library.
@@ -358,13 +457,17 @@ endif
 debugdir = debug
 
 # Build a set of debug objects here.
+# Take care to fix all possibly-relative paths.
 stamp-debug:
        if test ! -d ${debugdir}; then \
          mkdir -p ${debugdir}; \
          (cd ${debugdir}; \
          sed -e 's/top_builddir = \.\./top_builddir = ..\/../' \
+             -e 's/top_build_prefix = \.\./top_build_prefix = ..\/../' \
              -e 's/srcdir = \.\./srcdir = ..\/../' \
+             -e 's/VPATH = \.\./VPATH = ..\/../' \
              -e 's/glibcxx_basedir = \.\./glibcxx_basedir = ..\/../' \
+             -e 's/MKDIR_P = \.\./MKDIR_P = ..\/../' \
              -e 's/all-local: build_debug/all-local:/' \
              -e 's/install-data-local: install_debug/install-data-local:/' \
          < ../Makefile > Makefile) ; \