Re: Build failure: TIMEZONE_GLOBAL undeclared - Mailing list pgsql-bugs

From Michael Fuhr
Subject Re: Build failure: TIMEZONE_GLOBAL undeclared
Date
Msg-id 20040909134314.GA93305@winnie.fuhr.org
Whole thread Raw
In response to Re: Build failure: TIMEZONE_GLOBAL undeclared  (Bruce Momjian <pgman@candle.pha.pa.us>)
Responses Re: Build failure: TIMEZONE_GLOBAL undeclared  (Bruce Momjian <pgman@candle.pha.pa.us>)
List pgsql-bugs
On Thu, Sep 09, 2004 at 02:03:52AM -0400, Bruce Momjian wrote:
> Michael Fuhr wrote:
> >
> > gcc -O2 -fno-strict-aliasing -g -Wall -Wmissing-prototypes -Wmissing-declarations -DFRONTEND -I../../src/include
-I/usr/local/ssl/include  -c -o pgtz.o pgtz.c 
> > pgtz.c: In function `get_timezone_offset':
> > pgtz.c:99: error: `TIMEZONE_GLOBAL' undeclared (first use in this function)
>
> Wow, that is confusing.  How could TIMEZONE_GLOBAL not be defined?  Is
> there some way port.h is not being included?  If so I can't see it, and
> it compiles here fine, which is strange.

It compiles fine on FreeBSD 4.10-STABLE with gcc 2.95.4.  Running
the preprocessor on pgtz.c with "-E -dM" instead of "-c -o pgtz.o"
shows that on Solaris 9, HAVE_STRUCT_TM_TM_ZONE isn't defined and
HAVE_INT_TIMEZONE is, so the compiler hits the "return -TIMEZONE_GLOBAL"
line and fails:

#if defined(HAVE_STRUCT_TM_TM_ZONE)
        return tm->tm_gmtoff;
#elif defined(HAVE_INT_TIMEZONE)
        return -TIMEZONE_GLOBAL;
#else
#error No way to determine TZ? Can this happen?
#endif

On FreeBSD 4.10, HAVE_STRUCT_TM_TM_ZONE is defined, so the compiler
hits the "return tm->tm_gmtoff" line.  Neither Solaris nor FreeBSD
has TIMEZONE_GLOBAL defined, presumably because port.h defines it
inside the "#ifdef WIN32" block beginning at line 169 (in port.h
version 1.60).

--
Michael Fuhr
http://www.fuhr.org/~mfuhr/

pgsql-bugs by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: Build failure: TIMEZONE_GLOBAL undeclared
Next
From: Bruce Momjian
Date:
Subject: Re: Build failure: TIMEZONE_GLOBAL undeclared