This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

fix in-tree building of ppl, cloog, libelf


This patch fixes a number of problems I ran into attempting to bootstrap
gmp, mpfr, mpc, ppl, cloog and libelf along with GCC.  It's not so much
that I wanted to bootstrap them in the first place, but I wanted to
build graphite et al on machines on which I couldn't easily install
precompiled versions thereof.  I figured dropping them in the source
tree I pushed onto them would be simpler.  Big mistake ;-)

I got ppl adn cloog --with-* flag handling to actually set things up for
the in-tree headers and libraries to be used.  Setting with_cloog and
with_ppl by default was disabling the code that looked for the sources
in the build tree, so the include and link flags we're set up properly.

The top-level configure expected ppl to put headers and libraries at the
wrong place, so cloog would fail to configure and, getting past that,
gcc would fail to build.  I arranged for cloog to be fed the same
CPPFLAGS and LDFLAGS that we give GCC to locate ppl, and I fixed them so
that the ppl headers and libraries would be located in the build tree.

I arranged for the version checks applied to ppl, cloog and libelf to be
skipped for in-tree builds.

I improved the portability of the test for whether C++ is enabled as a
bootstrap language, and I arranged for us to use the standard C++
compiler and flags during stage2 and stage3 otherwise, so that ppl and
cloog can build in all stages.  Without a bootstrapped C++ compiler,
recompiling C++ stuff with the system C++ compiler is a bit of a waste,
but I couldn't think of a way to selectively disable bootstrapping of
certain programs.  And then, I figured it might be useful to support
drop-in C++-requiring programs (think gold) without failing or demanding
a C++ bootstrap.

I dropped the none-vendor-os triples passed to nearly all drop-in
libraries.  configure complains about it, and I can't figure out why
it's there at all.

Although there was some configury code (presumably cut&pasted from other
libs) that would have permitted libelf to build as a drop-in, that was
far from enough.  I added what was missing and fixed what was broken, so
that it works.

I'd appreciate if someone who's been more active in configury would take
a look at the changes below, but if nobody objects, I'll check this in
about a week from now, after I return from my next trip (the last of the
year, yay! :-)


for  ChangeLog
from  Alexandre Oliva  <aoliva@redhat.com>

	* configure.ac: Add libelf to host_libs.  Enable in-tree configury
	of ppl and cloog.  Fix in-tree configury of libelf, skip tests.
	Fix portability of test of C++ as bootstrap language.  Add
	ppl/src/ppl-config.o to the bootstrap compare exclusion list.
	* configure: Rebuild.
	* Makefile.def: Drop host and target settings from gmp, mpfr, ppl,
	and cloog.  Fix in-tree ppl configuration.  Introduce libelf
	in-tree building.
	* Makefile.tpl (POSTSTAGE1_CXX_EXPORT): New.
	(POSTSTAGE1_HOST_EXPORTS): Use it.
	(STAGE[+id+]_CXXFLAGS): New.
	(BASE_FLAGS_TO_PASS): Pass it down.
	(configure-stage[+id+]-[+prefix+][+module+]): Use it.  Add
	extra_exports.
	(all-stage[+id+]-[+prefix+][+module+]): Likewise.
	(configure-[+prefix+][+module+], all-[+prefix+][+module+]): Add
	extra_exports.
	* Makefile.in: Rebuild.

Index: configure.ac
===================================================================
--- configure.ac.orig	2009-11-08 05:09:49.000000000 -0200
+++ configure.ac	2009-11-08 05:17:17.000000000 -0200
@@ -161,7 +161,7 @@ build_tools="build-texinfo build-byacc b
 
 # these libraries are used by various programs built for the host environment
 #
-host_libs="intl mmalloc libiberty opcodes bfd readline tcl tk itcl libgui zlib libcpp libdecnumber gmp mpfr mpc ppl cloog libiconv"
+host_libs="intl mmalloc libiberty opcodes bfd readline tcl tk itcl libgui zlib libcpp libdecnumber gmp mpfr mpc ppl cloog libelf libiconv"
 
 # these tools are built for the host environment
 # Note, the powerpc-eabi build depends on sim occurring before gdb in order to
@@ -1516,7 +1516,7 @@ pplinc=
 
 AC_ARG_WITH(ppl, [  --with-ppl=PATH         Specify prefix directory for the installed PPL package
                           Equivalent to --with-ppl-include=PATH/include
-                          plus --with-ppl-lib=PATH/lib],, with_ppl=yes)
+                          plus --with-ppl-lib=PATH/lib])
 AC_ARG_WITH(ppl_include, [  --with-ppl-include=PATH Specify directory for installed PPL include files])
 AC_ARG_WITH(ppl_lib, [  --with-ppl-lib=PATH     Specify the directory for the installed PPL library])
 
@@ -1524,7 +1524,7 @@ case $with_ppl in 
   no)
     ppllibs=
     ;;
-  yes)
+  "" | yes)
     ;;
   *)
     ppllibs="-L$with_ppl/lib -lppl_c -lppl -lgmpxx"
@@ -1538,8 +1538,9 @@ if test "x$with_ppl_lib" != x; then
   ppllibs="-L$with_ppl_lib -lppl_c -lppl -lgmpxx"
 fi
 if test "x$with_ppl$with_ppl_include$with_ppl_lib" = x && test -d ${srcdir}/ppl; then
-  ppllibs='-L$$r/$(HOST_SUBDIR)/ppl/.libs -L$$r/$(HOST_SUBDIR)/ppl/_libs -lppl_c -lppl -lgmpxx '
-  pplinc='-I$$r/$(HOST_SUBDIR)/ppl/include -I$$s/ppl/include '
+  ppllibs='-L$$r/$(HOST_SUBDIR)/ppl/interfaces/C/.libs -L$$r/$(HOST_SUBDIR)/ppl/interfaces/C/_libs -L$$r/$(HOST_SUBDIR)/ppl/src/.libs -L$$r/$(HOST_SUBDIR)/ppl/src/_libs -lppl_c -lppl -lgmpxx '
+  pplinc='-I$$r/$(HOST_SUBDIR)/ppl/src -I$$r/$(HOST_SUBDIR)/ppl/interfaces/C '
+  enable_ppl_version_check=no
 fi
 
 AC_ARG_ENABLE(ppl-version-check,
@@ -1570,7 +1571,7 @@ clooginc=" -DCLOOG_PPL_BACKEND "
 
 AC_ARG_WITH(cloog, [  --with-cloog=PATH       Specify prefix directory for the installed CLooG-PPL package
                           Equivalent to --with-cloog-include=PATH/include
-                          plus --with-cloog-lib=PATH/lib],, with_cloog=yes)
+                          plus --with-cloog-lib=PATH/lib])
 AC_ARG_WITH(cloog_include, [  --with-cloog-include=PATH Specify directory for installed CLooG include files])
 AC_ARG_WITH(cloog_lib, [  --with-cloog-lib=PATH   Specify the directory for the installed CLooG library])
 
@@ -1583,7 +1584,7 @@ case $with_cloog in 
     clooglibs=
     clooginc=
     ;;
-  yes)
+  "" | yes)
     ;;
   *)
     clooglibs="-L$with_cloog/lib -lcloog"
@@ -1599,6 +1600,7 @@ fi
 if test "x$with_cloog$with_cloog_include$with_cloog_lib" = x && test -d ${srcdir}/cloog; then
   clooglibs='-L$$r/$(HOST_SUBDIR)/cloog/.libs -L$$r/$(HOST_SUBDIR)/cloog/_libs -lcloog '
   clooginc='-I$$r/$(HOST_SUBDIR)/cloog/include -I$$s/cloog/include -DCLOOG_PPL_BACKEND '
+  enable_cloog_version_check=no
 fi
 
 AC_ARG_ENABLE(cloog-version-check,
@@ -1665,10 +1667,11 @@ if test x"$enable_lto" = x"yes" ; then
 
   if test "x$with_libelf$with_libelf_include$with_libelf_lib" = x \
      && test -d ${srcdir}/libelf; then
-    libelflibs='-L$$r/$(HOST_SUBDIR)/libelf/.libs -L$$r/$(HOST_SUBDIR)/libelf/_libs -lelf '
-    libelfinc='-I$$r/$(HOST_SUBDIR)/libelf/include -I$$s/libelf/include'
+    libelflibs='-L$$r/$(HOST_SUBDIR)/libelf/lib -lelf '
+    libelfinc='-D__LIBELF_INTERNAL__ -I$$r/$(HOST_SUBDIR)/libelf/lib -I$$s/libelf/lib'
     LIBS="$libelflibs $LIBS"
-  fi
+
+ else
 
   CFLAGS="$CFLAGS $libelfinc"
   CPPFLAGS="$CPPFLAGS $libelfinc"
@@ -1738,6 +1741,8 @@ to specify its location.])
   CPPFLAGS="$saved_CPPFLAGS"
   LIBS="$saved_LIBS"
 
+ fi
+
   # Flags needed for libelf.
   AC_SUBST(libelflibs)
   AC_SUBST(libelfinc)
@@ -1850,7 +1855,8 @@ if test -d ${srcdir}/gcc; then
           exit 1
         fi
 
-	if test "$language" = "c++" -a "$ENABLE_BUILD_WITH_CXX" = "yes"; then
+	if test "$language" = "c++" \
+	   && test "$ENABLE_BUILD_WITH_CXX" = "yes"; then
 	  boot_language=yes
 	fi
 
@@ -3368,6 +3374,9 @@ case "$target" in
   hppa*64*-*-hpux*) ;;
   hppa*-*-hpux*) compare_exclusions="gcc/cc*-checksum\$(objext) | */libgcc/lib2funcs* | gcc/ada/*tools/*" ;;
 esac
+case " $configdirs " in
+*" ppl "*) compare_exclusions="$compare_exclusions | ppl/src/ppl-config.o" ;;
+esac
 AC_SUBST(compare_exclusions)
 
 AC_CONFIG_FILES([Makefile],
Index: Makefile.def
===================================================================
--- Makefile.def.orig	2009-11-08 05:09:38.000000000 -0200
+++ Makefile.def	2009-11-08 05:09:57.000000000 -0200
@@ -62,27 +62,24 @@ host_modules= { module= gawk; };
 host_modules= { module= gettext; };
 host_modules= { module= gmp; lib_path=.libs; bootstrap=true;
 		extra_configure_flags='--disable-shared';
-		no_install= true; 
-	        host="none-${host_vendor}-${host_os}";
-		target="none-${host_vendor}-${host_os}"; };
+		no_install= true; };
 host_modules= { module= mpfr; lib_path=.libs; bootstrap=true;
 		extra_configure_flags='--disable-shared @extra_mpfr_configure_flags@';
-		no_install= true; 
-	        host="none-${host_vendor}-${host_os}";
-		target="none-${host_vendor}-${host_os}"; };
+		no_install= true; };
 host_modules= { module= mpc; lib_path=.libs; bootstrap=true;
 		extra_configure_flags='--disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@';
 		no_install= true; };
-host_modules= { module= ppl; lib_path=.libs; bootstrap=true;
+host_modules= { module= ppl; lib_path=src/.libs; bootstrap=true;
 		extra_configure_flags='--disable-shared --with-libgmp-prefix=$$r/$(HOST_SUBDIR)/gmp/ --with-libgmpxx-prefix=$$r/$(HOST_SUBDIR)/gmp/';
-		no_install= true; 
-	        host="none-${host_vendor}-${host_os}";
-		target="none-${host_vendor}-${host_os}"; };
+		no_install= true; };
 host_modules= { module= cloog; lib_path=.libs; bootstrap=true;
-		extra_configure_flags='--disable-shared --with-gmp-library=$$r/$(HOST_SUBDIR)/gmp/.libs --with-gmp-include=$$r/$(HOST_SUBDIR)/gmp --with-ppl=$$r/$(HOST_SUBDIR)/ppl/ --with-bits=gmp';
-		no_install= true; 
-	        host="none-${host_vendor}-${host_os}";
-		target="none-${host_vendor}-${host_os}"; };
+		extra_configure_flags='--disable-shared --with-gmp-library=$$r/$(HOST_SUBDIR)/gmp/.libs --with-gmp-include=$$r/$(HOST_SUBDIR)/gmp --with-bits=gmp --with-ppl';
+		extra_exports='CPPFLAGS="${CPPFLAGS} ${HOST_PPLINC}"; export CPPFLAGS; LDFLAGS="$$LDFLAGS ${HOST_PPLLIBS}"; export LDFLAGS; ';
+		extra_make_flags='CPPFLAGS="${CPPFLAGS} ${HOST_PPLINC}" LDFLAGS="$$LDFLAGS"';
+		no_install= true; };
+host_modules= { module= libelf; lib_path=.libs; bootstrap=true;
+		extra_configure_flags='--disable-shared';
+		no_install= true; };
 host_modules= { module= gnuserv; };
 host_modules= { module= gold; bootstrap=true; };
 host_modules= { module= gprof; };
@@ -326,6 +323,7 @@ dependencies = { module=all-gcc; on=all-
 dependencies = { module=all-gcc; on=all-mpc; };
 dependencies = { module=all-gcc; on=all-ppl; };
 dependencies = { module=all-gcc; on=all-cloog; };
+dependencies = { module=all-gcc; on=all-libelf; };
 dependencies = { module=all-gcc; on=all-build-texinfo; };
 dependencies = { module=all-gcc; on=all-build-bison; };
 dependencies = { module=all-gcc; on=all-build-byacc; };
Index: Makefile.tpl
===================================================================
--- Makefile.tpl.orig	2009-11-08 05:09:38.000000000 -0200
+++ Makefile.tpl	2009-11-08 05:09:57.000000000 -0200
@@ -229,6 +229,21 @@ HOST_EXPORTS = \
 @endif gcc-bootstrap
 	$(RPATH_ENVVAR)=`echo "$(HOST_LIB_PATH)$$$(RPATH_ENVVAR)" | sed 's,::*,:,g;s,^:*,,;s,:*$$,,'`; export $(RPATH_ENVVAR);
 
+POSTSTAGE1_CXX_EXPORT = \
+	CXX='$(CXX)'; export CXX; \
+	CXX_FOR_BUILD='$(CXX_FOR_BUILD)'; export CXX_FOR_BUILD;
+@if target-libstdc++-v3-bootstrap
+# Override the above if we're bootstrapping C++.
+POSTSTAGE1_CXX_EXPORT = \
+	CXX="$(STAGE_CC_WRAPPER) $$r/$(HOST_SUBDIR)/prev-gcc/g++$(exeext) \
+	  -B$$r/$(HOST_SUBDIR)/prev-gcc/ -B$(build_tooldir)/bin/ -nostdinc++ \
+	  -I$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/include/$(TARGET_SUBDIR) \
+	  -I$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/include \
+	  -I$$s/libstdc++-v3/libsupc++ \
+	  -L$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/src/.libs"; export CXX; \
+	CXX_FOR_BUILD="$$CXX"; export CXX_FOR_BUILD;
+@endif target-libstdc++-v3-bootstrap
+
 # Similar, for later GCC stages.
 POSTSTAGE1_HOST_EXPORTS = \
 	$(HOST_EXPORTS) \
@@ -236,13 +251,7 @@ POSTSTAGE1_HOST_EXPORTS = \
 	  -B$$r/$(HOST_SUBDIR)/prev-gcc/ -B$(build_tooldir)/bin/ \
 	  $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export CC; \
 	CC_FOR_BUILD="$$CC"; export CC_FOR_BUILD; \
-	CXX="$(STAGE_CC_WRAPPER) $$r/$(HOST_SUBDIR)/prev-gcc/g++$(exeext) \
-	  -B$$r/$(HOST_SUBDIR)/prev-gcc/ -B$(build_tooldir)/bin/ -nostdinc++ \
-	  -I$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/include/$(TARGET_SUBDIR) \
-	  -I$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/include \
-	  -I$$s/libstdc++-v3/libsupc++ \
-	  -L$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/src/.libs"; export CXX; \
-	CXX_FOR_BUILD="$$CXX"; export CXX_FOR_BUILD; \
+	$(POSTSTAGE1_CXX_EXPORT) \
 	GNATBIND="$$r/$(HOST_SUBDIR)/prev-gcc/gnatbind"; export GNATBIND; \
 	LDFLAGS="$(POSTSTAGE1_LDFLAGS) $(BOOT_LDFLAGS)"; export LDFLAGS; \
 	HOST_LIBS="$(POSTSTAGE1_LIBS)"; export HOST_LIBS;
@@ -401,6 +410,11 @@ STAGE_CONFIGURE_FLAGS=@stage2_werror_fla
 [+ FOR bootstrap-stage +]
 # Defaults for stage [+id+]; some are overridden below.
 STAGE[+id+]_CFLAGS = $(STAGE_CFLAGS)
+STAGE[+id+]_CXXFLAGS = $(CXXFLAGS)
+@if target-libstdc++-v3-bootstrap
+# Override the above if we're bootstrapping C++.
+STAGE[+id+]_CXXFLAGS = $(STAGE[+id+]_CFLAGS)
+@endif target-libstdc++-v3-bootstrap
 STAGE[+id+]_TFLAGS = $(STAGE_TFLAGS)
 STAGE[+id+]_CONFIGURE_FLAGS = $(STAGE_CONFIGURE_FLAGS)
 [+ ENDFOR bootstrap-stage +]
@@ -412,8 +426,8 @@ STAGE[+id+]_CONFIGURE_FLAGS = $(STAGE_CO
 # overrideable (for a bootstrap build stage1 also builds gcc.info).
 
 STAGE1_CFLAGS = @stage1_cflags@
-STAGE1_CHECKING=@stage1_checking@
-STAGE1_LANGUAGES=@stage1_languages@
+STAGE1_CHECKING = @stage1_checking@
+STAGE1_LANGUAGES = @stage1_languages@
 # * We force-disable intermodule optimizations, even if
 #   --enable-intermodule was passed, since the installed compiler
 #   probably can't handle them.  Luckily, autoconf always respects
@@ -528,6 +542,7 @@ BASE_FLAGS_TO_PASS =[+ FOR flags_to_pass
 	"`echo '[+flag+]=$([+flag+])' | sed -e s'/[^=][^=]*=$$/XFOO=/'`"[+ ELSE optional +] \
 	"[+flag+]=$([+flag+])"[+ ENDIF optional+][+ ENDFOR flags_to_pass +][+ FOR bootstrap-stage +] \
 	"STAGE[+id+]_CFLAGS=$(STAGE[+id+]_CFLAGS)" \
+	"STAGE[+id+]_CXXFLAGS=$(STAGE[+id+]_CXXFLAGS)" \
 	"STAGE[+id+]_TFLAGS=$(STAGE[+id+]_TFLAGS)"[+ ENDFOR bootstrap-stage +] \
 	"TFLAGS=$(TFLAGS)" \
 	"CONFIG_SHELL=$(SHELL)" \
@@ -575,8 +590,8 @@ POSTSTAGE1_FLAGS_TO_PASS = \
 	CC="$${CC}" CC_FOR_BUILD="$${CC_FOR_BUILD}" \
 	CXX="$${CXX}" CXX_FOR_BUILD="$${CXX_FOR_BUILD}" \
 	GNATBIND="$${GNATBIND}" \
-	LDFLAGS="$(POSTSTAGE1_LDFLAGS) $(BOOT_LDFLAGS)" \
-	HOST_LIBS="$(POSTSTAGE1_LIBS)" \
+	LDFLAGS="$${LDFLAGS}" \
+	HOST_LIBS="$${HOST_LIBS}" \
 	"`echo 'ADAFLAGS=$(BOOT_ADAFLAGS)' | sed -e s'/[^=][^=]*=$$/XFOO=/'`"
 
 # Flags to pass down to makes which are built with the target environment.
@@ -918,7 +933,7 @@ configure-[+prefix+][+module+]: [+ IF bo
 	fi; \
 	[+ ENDIF check_multilibs +]test ! -f [+subdir+]/[+module+]/Makefile || exit 0; \
 	$(SHELL) $(srcdir)/mkinstalldirs [+subdir+]/[+module+] ; \
-	[+exports+] \
+	[+exports+] [+extra_exports+] \
 	echo Configuring in [+subdir+]/[+module+]; \
 	cd "[+subdir+]/[+module+]" || exit 1; \
 	case $(srcdir) in \
@@ -967,9 +982,10 @@ configure-stage[+id+]-[+prefix+][+module
 	CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
 	LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS;[+ ELSE prefix +] \
 	CFLAGS="$(STAGE[+id+]_CFLAGS)"; export CFLAGS; \
-	CXXFLAGS="$(STAGE[+id+]_CFLAGS)"; export CXXFLAGS;[+ IF prev +] \
+	CXXFLAGS="$(STAGE[+id+]_CXXFLAGS)"; export CXXFLAGS;[+ IF prev +] \
 	LIBCFLAGS="$(STAGE[+id+]_CFLAGS)"[+ ELSE prev +] \
-	LIBCFLAGS="$(LIBCFLAGS)"[+ ENDIF prev +]; export LIBCFLAGS;[+ ENDIF prefix +] \
+	LIBCFLAGS="$(LIBCFLAGS)"[+ ENDIF prev +]; export LIBCFLAGS;[+
+  ENDIF prefix +] [+extra_exports+] \
 	echo Configuring stage [+id+] in [+subdir+]/[+module+] ; \
 	$(SHELL) $(srcdir)/mkinstalldirs [+subdir+]/[+module+] ; \
 	cd [+subdir+]/[+module+] || exit 1; \
@@ -1005,7 +1021,7 @@ all-[+prefix+][+module+]: configure-[+pr
 	@: $(MAKE); $(unstage)[+ ENDIF bootstrap +]
 	@r=`${PWD_COMMAND}`; export r; \
 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
-	[+exports+] \
+	[+exports+] [+extra_exports+] \
 	(cd [+subdir+]/[+module+] && \
 	  $(MAKE) $(BASE_FLAGS_TO_PASS) [+args+] [+extra_make_flags+] \
 		$(TARGET-[+prefix+][+module+]))
@@ -1027,14 +1043,14 @@ all-stage[+id+]-[+prefix+][+module+]: co
 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
 	TFLAGS="$(STAGE[+id+]_TFLAGS)"; \
 	[+exports+][+ IF prev +] \
-	[+poststage1_exports+][+ ENDIF prev +] \
+	[+poststage1_exports+][+ ENDIF prev +] [+extra_exports+] \
 	cd [+subdir+]/[+module+] && \
 	$(MAKE) $(BASE_FLAGS_TO_PASS)[+ IF prefix +] \
 		CFLAGS="$(CFLAGS_FOR_TARGET)" \
 		CXXFLAGS="$(CXXFLAGS_FOR_TARGET)" \
 		LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"[+ ELSE prefix +] \
 		CFLAGS="$(STAGE[+id+]_CFLAGS)" \
-		CXXFLAGS="$(STAGE[+id+]_CFLAGS)"[+ IF prev +] \
+		CXXFLAGS="$(STAGE[+id+]_CXXFLAGS)"[+ IF prev +] \
 		LIBCFLAGS="$(STAGE[+id+]_CFLAGS)"[+ ELSE prev +] \
 		LIBCFLAGS="$(LIBCFLAGS)"[+ ENDIF prev +][+ ENDIF prefix +] \
 		CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \


-- 
Alexandre Oliva, freedom fighter    http://FSFLA.org/~lxoliva/
You must be the change you wish to see in the world. -- Gandhi
Be Free! -- http://FSFLA.org/   FSF Latin America board member
Free Software Evangelist      Red Hat Brazil Compiler Engineer


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]