postgresql/src/port
Bruce Momjian d8f75d4131 Fix Win32/Cygwin problems:
After updating to the latest cvs, and also building most of the addons
(like PLs), the following patch is neededf for win32 + Visual C++.

* Switch to use the new win32 semaphore code
* Rename win32_open to pgwin32_open. win32_open collides with symbols
defined in Perl. MingW didn't detect ig, MSVC did. And it's a bit too
generic a name to export globally, imho...
* Python defines some partially broken #pragmas in the headers when
doing a debug build. Workaround.

Magnus Hagander
2006-06-25 00:18:24 +00:00
..
copydir.c Update copyright for 2006. Update scripts. 2006-03-05 15:59:11 +00:00
crypt.c Add CVS tag lines to files that were lacking them. 2006-03-11 04:38:42 +00:00
dirent.c Prepare code to be built by MSVC: 2006-06-07 22:24:46 +00:00
dirmod.c Update copyright for 2006. Update scripts. 2006-03-05 15:59:11 +00:00
exec.c Prepare code to be built by MSVC: 2006-06-07 22:24:46 +00:00
fseeko.c Update copyright for 2006. Update scripts. 2006-03-05 15:59:11 +00:00
getaddrinfo.c Prepare code to be built by MSVC: 2006-06-07 22:24:46 +00:00
gethostname.c Update copyright for 2006. Update scripts. 2006-03-05 15:59:11 +00:00
getopt_long.c
getopt.c Add CVS tag lines to files that were lacking them. 2006-03-11 04:38:42 +00:00
getrusage.c Update copyright for 2006. Update scripts. 2006-03-05 15:59:11 +00:00
gettimeofday.c
inet_aton.c Prepare code to be built by MSVC: 2006-06-07 22:24:46 +00:00
isinf.c Update copyright for 2006. Update scripts. 2006-03-05 15:59:11 +00:00
kill.c Update copyright for 2006. Update scripts. 2006-03-05 15:59:11 +00:00
Makefile Build server libpgport with all non-FRONTEND object files. This is to 2006-05-08 02:18:50 +00:00
memcmp.c Update copyright for 2006. Update scripts. 2006-03-05 15:59:11 +00:00
noblock.c Update copyright for 2006. Update scripts. 2006-03-05 15:59:11 +00:00
open.c Fix Win32/Cygwin problems: 2006-06-25 00:18:24 +00:00
path.c Update copyright for 2006. Update scripts. 2006-03-05 15:59:11 +00:00
pgsleep.c Update copyright for 2006. Update scripts. 2006-03-05 15:59:11 +00:00
pgstrcasecmp.c Update copyright for 2006. Update scripts. 2006-03-05 15:59:11 +00:00
pipe.c Update copyright for 2006. Update scripts. 2006-03-05 15:59:11 +00:00
qsort.c Improve performance of our private version of qsort. Per recent testing, 2006-03-21 19:49:15 +00:00
rand.c
random.c Update copyright for 2006. Update scripts. 2006-03-05 15:59:11 +00:00
README Darin -> Darwin. 2006-04-28 04:39:41 +00:00
rint.c
snprintf.c
sprompt.c Clean up psql's control-C handling to avoid longjmp'ing out of random 2006-06-14 16:49:03 +00:00
srandom.c Update copyright for 2006. Update scripts. 2006-03-05 15:59:11 +00:00
strdup.c Update copyright for 2006. Update scripts. 2006-03-05 15:59:11 +00:00
strerror.c
strtol.c Update copyright for 2006. Update scripts. 2006-03-05 15:59:11 +00:00
strtoul.c
thread.c Prepare code to be built by MSVC: 2006-06-07 22:24:46 +00:00
unsetenv.c Update copyright for 2006. Update scripts. 2006-03-05 15:59:11 +00:00
win32.ico
win32error.c Prepare code to be built by MSVC: 2006-06-07 22:24:46 +00:00
win32ver.rc Update copyright for 2006. Update scripts. 2006-03-05 15:59:11 +00:00

libpgport must have special behavior.  It supplies functions to both
libraries and applications.  However, there are two complexities:

1)  Libraries need to use object files that are compiled with exactly
the same flags as the library.  libpgport might not use the same flags,
so it is necessary to recompile the object files for individual
libraries.  This is done by removing -lpgport from the link line:

        # Need to recompile any libpgport object files
        LIBS := $(filter-out -lpgport, $(LIBS))

and adding infrastructure to recompile the object files:

        OBJS= execute.o typename.o descriptor.o data.o error.o prepare.o memory.o \
                connect.o misc.o path.o exec.o \
                $(filter snprintf.o, $(LIBOBJS))

The problem is that there is no testing of which object files need to be
added, but missing functions usually show up when linking user
applications.

2) For applications, we use -lpgport before -lpq, so the static files
from libpgport are linked first.  This avoids having applications
dependent on symbols that are _used_ by libpq, but not intended to be
exported by libpq.  libpq's libpgport usage changes over time, so such a
dependency is a problem.  Win32, Linux, and Darwin use an export list to
control the symbols exported by libpq.