-<!-- $PostgreSQL: pgsql/doc/src/sgml/installation.sgml,v 1.291 2007/08/20 08:53:12 petere Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/installation.sgml,v 1.292 2007/08/25 20:29:25 tgl Exp $ -->
 
 <chapter id="installation">
  <title><![%standalone-include[<productname>PostgreSQL</>]]>
        </indexterm>
        <listitem>
         <para>
-         PostgreSQL includes its own time zone database, which it
-         requires for date and time operations.  This time zone
-         database is in fact compatible with the time zone database
-         provided by many operating systems such as FreeBSD, Linux,
-         and Solaris, so it would be redundant to install it again.
-         When this option is used, the operating system supplied time
-         zone database in <replaceable>DIRECTORY</replaceable> is used
-         instead of the one included in the PostgreSQL source
-         distribution.  <filename>/usr/share/zoneinfo/</filename> is a
+         <productname>PostgreSQL</> includes its own time zone database,
+         which it requires for date and time operations.  This time zone
+         database is in fact compatible with the <quote>zic</> time zone
+         database provided by many operating systems such as FreeBSD,
+         Linux, and Solaris, so it would be redundant to install it again.
+         When this option is used, the system-supplied time zone database
+         in <replaceable>DIRECTORY</replaceable> is used instead of the one
+         included in the PostgreSQL source distribution.
+         <replaceable>DIRECTORY</replaceable> must be specified as an
+         absolute path.  <filename>/usr/share/zoneinfo</filename> is a
          likely directory on some operating systems.  Note that the
-         installation routine does not detect mismatching or erroneous
-         time zone data.  You are advised to run the regression tests
-         to verify that the time zone data you have pointed to works
-         correctly.
+         installation routine will not detect mismatching or erroneous time
+         zone data.  If you use this option, you are advised to run the
+         regression tests to verify that the time zone data you have
+         pointed to works correctly with <productname>PostgreSQL</>.
         </para>
 
         <para>
          who know their target operating system well.  The main
          advantage of using this option is that the PostgreSQL package
          won't need to be upgraded whenever any of the many local
-         daylight-saving time rules changes.  Another completely
-         incidental advantage is that PostgreSQL can be
-         cross-compiled<indexterm><primary>cross
-         compilation</primary></indexterm> straightforwardly if the
-         time-zone database does not need to be built during the
+         daylight-saving time rules change.  Another advantage is that
+         PostgreSQL can be cross-compiled<indexterm><primary>cross
+         compilation</primary></indexterm> more straightforwardly if the
+         time zone database files do not need to be built during the
          installation.
         </para>
        </listitem>
 
 #    Makefile for the timezone library
 
 # IDENTIFICATION
-#    $PostgreSQL: pgsql/src/timezone/Makefile,v 1.27 2007/08/20 08:53:12 petere Exp $
+#    $PostgreSQL: pgsql/src/timezone/Makefile,v 1.28 2007/08/25 20:29:25 tgl Exp $
 #
 #-------------------------------------------------------------------------
 
 # for POSIX-style timezone specs
 POSIXRULES = US/Eastern
 
-all: SUBSYS.o submake-libpgport zic
+# use system timezone data?
+ifneq (,$(with_system_tzdata))
+override CPPFLAGS += '-DSYSTEMTZDIR="$(with_system_tzdata)"'
+endif
+
+all: SUBSYS.o
+
+ifeq (,$(with_system_tzdata))
+all: submake-libpgport zic
+endif
 
 SUBSYS.o: $(OBJS)
    $(LD) $(LDREL) $(LDOUT) SUBSYS.o $(OBJS)
 
-ifeq (,$(with_system_tzdata))
 zic: $(ZICOBJS)
    $(CC) $(CFLAGS) $(ZICOBJS) $(LDFLAGS) $(LIBS) -o $@$(X)
-endif
 
 install: all installdirs
 ifeq (,$(with_system_tzdata))
    ./zic -d '$(DESTDIR)$(datadir)/timezone' -p '$(POSIXRULES)' $(TZDATAFILES)
-else
-   ln -s '$(with_system_tzdata)' '$(DESTDIR)$(datadir)/timezone'
 endif
    $(MAKE) -C tznames $@
 
    $(mkinstalldirs) '$(DESTDIR)$(datadir)'
 
 uninstall:
+ifeq (,$(with_system_tzdata))
    rm -rf '$(DESTDIR)$(datadir)/timezone'
+endif
    $(MAKE) -C tznames $@
 
 clean distclean maintainer-clean:
 
  * Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/timezone/pgtz.c,v 1.53 2007/08/04 19:29:25 tgl Exp $
+ *   $PostgreSQL: pgsql/src/timezone/pgtz.c,v 1.54 2007/08/25 20:29:25 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
 static pg_tz gmt_timezone_data;
 
 
-static char tzdir[MAXPGPATH];
-static bool done_tzdir = false;
-
 static bool scan_directory_ci(const char *dirname,
                              const char *fname, int fnamelen,
                              char *canonname, int canonnamelen);
 /*
  * Return full pathname of timezone data directory
  */
-static char *
+static const char *
 pg_TZDIR(void)
 {
+#ifndef SYSTEMTZDIR
+   /* normal case: timezone stuff is under our share dir */
+   static bool done_tzdir = false;
+   static char tzdir[MAXPGPATH];
+
    if (done_tzdir)
        return tzdir;
 
 
    done_tzdir = true;
    return tzdir;
+#else
+   /* we're configured to use system's timezone database */
+   return SYSTEMTZDIR;
+#endif
 }