Re: BCC55 and libpq 8.2

From: L Bayuk <lbayuk(at)pobox(dot)com>
To: fabio guidi <f(dot)guidi(at)libero(dot)it>
Cc: pgsql-interfaces <pgsql-interfaces(at)postgresql(dot)org>
Subject: Re: BCC55 and libpq 8.2
Date: 2006-12-29 02:13:53
Message-ID: 20061229021353.GA444@mail.mindspring.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-interfaces pgsql-patches

On Wed, Dec 20, 2006 at 07:51:00PM +0100, fabio guidi wrote:
>...
> Hello to all, i'm trying to build libpq for postgresql 8.2 with borland
> bcc5.5
> ...

I finally found myself in front of Windows PC, with PostgreSQL-8.2.0
source, Borland BCC32 compiler, and a little time. I was trying to build my
Pgtclng DLL (http://pgfoundry.org/projects/pgtclng/) which requires the
libpq DLL. The bad news is that (as you found) a bunch of stuff got broken
in 8.2.0 regarding BCC builds of libpq. The good news is that I succeeded.
I built the libpq DLL, my Pgtclng DLL, and even the psql program. I tested
Pgtclng pretty hard with my test suite and it passed, so I am confident the
libpq build was good in so far as Pgtclng uses it. But it got some scary
compiler warnings that I still want to look into.

I will try to post a patch soon for the bcc32.mak files, but I also had to
change some other files used by all other builds and I can't see them
patching those files for BCC. I don't have patch files yet, but if you want
to try it yourself here are the details. Unless I missed something, after
these changes "make -N -f bcc32.mak" inside interfaces/libpq should build
it for you. There are also a few fixes for building psql I have to post
some other time. Sorry I don't have this as a patch yet but I figured you
have waited long enough and might want to try it.

In include/c.h :
Change: #if defined(__BORLANDC__) || (_MSC_VER >= 1400)
to: #if (_MSC_VER >= 1400)

In include/port.h :
Delete the random() declaration, or change it so it looks like this:
#if !defined(__BORLANDC__)
#ifndef HAVE_RANDOM
extern long random(void);
#endif
#endif

In include/, copy pg_config.h.win32 to pg_config.h
In include/, copy port/win32.h to pg_config_os.h and make the following
changes. I made these conditional on __BORLANDC__, but if you are only
trying to build the thing just delete or change these lines:
Remove #include <sys/utime.h>
Remove #define SIGUSR1 and SIGUSR2.
Remove declarations of ssize_t and mode_t.
Remove #define's of _S_IRWXU through S_ISREG.
Replace the definitions so inline and __inline__ are defined to nothing.
(Might not be necessary, but it was in my notes from prior releases.)

In interfaces/libpq/bcc32.mak:
Add "snprintf.obj" to the LIB32_OBJS macro, and add the block which
builds it: Copy the applicable lines from win32.mak.
I always had to make these two changes to bcc32.mak for Pgtclng, but
this could be specific to linking with Tcl so you might not need it.
1) Add -c to LINK32_FLAGS (makes it case sensitive).
2) Change runtime library from cw32mti.lib to cw32mt.lib (static version)

In response to

Responses

Browse pgsql-interfaces by date

  From Date Subject
Next Message Ken Jennings 2006-12-29 02:51:37 Re: SQLSTATE not updated in ecpg program.
Previous Message Ken Jennings 2006-12-29 00:01:32 Re: SQLSTATE not updated in ecpg program.

Browse pgsql-patches by date

  From Date Subject
Next Message Alvaro Herrera 2006-12-29 03:14:41 Re: Recent SIGSEGV failures in buildfarm HEAD
Previous Message Jaime Casanova 2006-12-29 00:20:35 Re: Tablespace for temporary objects and sort files