Thread: bug in config

bug in config

From
"Scott"
Date:
Hi,
 
Just got referred here from the bugs list - I'm not a list member so please cc me on reply...
 
My problem is, I think, easy to fix but I don't know enough about changing config scripts etc. to create a patch. Anyway, I built the libpq++ libs using the win32.mak files and NMAKE for use in my vc++ progs, then I ran the configure script for cygwin and built postgresql...I found afterward that the "pg_config_os.h" (in postgresql-7.2.1/src/include) contained a line that said "#include <cygwin/version.h>", but this line occurs just before an "#ifdef __CYGWIN__" statement. This stopped my vc++ programs from compiling. I found that putting the include after the ifdef allows me to use the same headers under both environments...
 
I'm supposing that this include statement is written into the code by the configure scripts, and that moving it down a line or two would be a simple thing for someone in the know :)
 
Regards,
Scott

Re: bug in config

From
Jason Tishler
Date:
Scott,

On Sun, Aug 18, 2002 at 10:14:07PM +1000, Scott wrote:
> Anyway, I built the
> libpq++ libs using the win32.mak files and NMAKE for use in my vc++
> progs, then I ran the configure script for cygwin and built
> postgresql...I found afterward that the "pg_config_os.h" (in
> postgresql-7.2.1/src/include) contained a line that said " #include
> <cygwin/version.h>", but this line occurs just before an "#ifdef
> __CYGWIN__" statement. This stopped my vc++ programs from compiling. I
> found that putting the include after the ifdef allows me to use the
> same headers under both environments...

I don't believe that the above is the right solution.  If it works then,
you are lucky.  It's also a very fragile solution that is subject to
break in the future.

> I'm supposing that this include statement is written into the code by the
> configure scripts, and that moving it down a line or two would be a simple
> thing for someone in the know :)

Under Cygwin (and the other Unixes), pg_config.h is created by
configure.  pg_config.h #includes pg_config_os.h which is a symlink to
the OS specific header file -- port/win.h is this case.  Under Windows,
pg_config.h is a copy of pg_config.h.win32 which is *only* created
during nmake if pg_config.h did not previously exist.

So, you were "lucky" that building with VC++ after configuring for
Cygwin almost worked.  My WAG is if you configure for a different Unix
such as Solaris you would have more than one line to "fix."

IMO, the best solution is to add an install target to win32.mak.  In
this way, one could do a nmake install and then point VC++ to this
installation directory.  Now your VC++ builds are independent of the
source tree -- freeing it up for other platform builds.

Since you have the VC++ itch, please submit a patch to pgsql-patches to
rectify this situation.  Please include a patch to the documentation
too:

    doc/src/sgml/install-win32.sgml

Thanks,
Jason