postgresql/src/port
Andres Freund e0f0e08e17 autoconf: Unify CFLAGS_SSE42 and CFLAGS_ARMV8_CRC32C
Until now we emitted the cflags to build the CRC objects into architecture
specific variables. That doesn't make a whole lot of sense to me - we're never
going to target x86 and arm at the same time, so they don't need to be
separate variables.

It might be better to instead continue to have CFLAGS_SSE42 /
CFLAGS_ARMV8_CRC32C be computed by PGAC_ARMV8_CRC32C_INTRINSICS /
PGAC_SSE42_CRC32_INTRINSICS and then set CFLAGS_CRC based on those. But it
seems unlikely that we'd need other sets of CRC specific flags for those two
architectures at the same time.

This simplifies the upcoming meson PGXS compatibility.

Reviewed-by: Peter Eisentraut <peter.eisentraut@enterprisedb.com>
Discussion: https://postgr.es/m/20221005200710.luvw5evhwf6clig6@awork3.anarazel.de
2022-12-01 18:46:55 -08:00
..
.gitignore
bsearch_arg.c
chklocale.c Remove support for Visual Studio 2013 2022-07-14 11:22:49 +09:00
dirent.c Fix get_dirent_type() for Windows junction points. 2022-07-22 16:57:12 +12:00
dirmod.c Fix unlink() for STATUS_DELETE_PENDING on Windows. 2022-10-25 16:26:58 +13:00
explicit_bzero.c
getopt_long.c
getopt.c
getpeereid.c Remove configure probes for sys/un.h and struct sockaddr_un. 2022-08-14 00:09:47 +12:00
inet_aton.c
inet_net_ntop.c Remove configure probe for sockaddr_in6 and require AF_INET6. 2022-08-26 10:18:30 +12:00
kill.c
Makefile autoconf: Unify CFLAGS_SSE42 and CFLAGS_ARMV8_CRC32C 2022-12-01 18:46:55 -08:00
meson.build meson: Add support for building with precompiled headers 2022-10-06 17:19:30 -07:00
mkdtemp.c
noblock.c
open.c windows: Set UMDF_USING_NTSTATUS globally, include ntstatus.h 2022-09-28 21:59:15 -07:00
path.c
pg_bitutils.c
pg_crc32c_armv8_choose.c
pg_crc32c_armv8.c
pg_crc32c_sb8.c
pg_crc32c_sse42_choose.c
pg_crc32c_sse42.c
pg_strong_random.c
pgcheckdir.c
pgmkdirp.c
pgsleep.c Remove configure probe for sys/select.h. 2022-08-14 00:09:47 +12:00
pgstrcasecmp.c
pgstrsignal.c
pqsignal.c Provide sigaction() for Windows. 2022-11-09 13:06:31 +13:00
preadv.c Restore pg_pread and friends. 2022-09-29 13:12:11 +13:00
pthread_barrier_wait.c
pthread-win32.h
pwritev.c Restore pg_pread and friends. 2022-09-29 13:12:11 +13:00
qsort_arg.c
qsort.c
quotes.c
README
snprintf.c Use libc's snprintf, not sprintf, for special cases in snprintf.c. 2022-10-16 11:47:44 -04:00
strerror.c
strlcat.c
strlcpy.c
strnlen.c
strtof.c Simplify replacement code for strtof. 2022-08-07 12:42:41 +12:00
system.c
tar.c
thread.c Remove dead getpwuid_r replacement code. 2022-07-24 09:44:29 +12:00
win32.ico
win32dlopen.c Remove configure probe for dlopen, and refactor. 2022-08-05 09:12:45 +12:00
win32env.c
win32error.c Fix lstat() for broken junction points on Windows. 2022-10-25 16:19:01 +13:00
win32fdatasync.c windows: Set UMDF_USING_NTSTATUS globally, include ntstatus.h 2022-09-28 21:59:15 -07:00
win32getrusage.c Remove configure probe for sys/resource.h and refactor. 2022-08-14 00:09:47 +12:00
win32gettimeofday.c Simplify gettimeofday for Windows. 2022-08-07 12:35:36 +12:00
win32link.c Remove configure probe for link. 2022-08-05 09:36:50 +12:00
win32ntdll.c windows: Set UMDF_USING_NTSTATUS globally, include ntstatus.h 2022-09-28 21:59:15 -07:00
win32pread.c Restore pg_pread and friends. 2022-09-29 13:12:11 +13:00
win32pwrite.c Restore pg_pread and friends. 2022-09-29 13:12:11 +13:00
win32security.c Clean up minor inconsistencies in pg_attribute_printf() usage. 2022-09-16 11:10:48 -04:00
win32setlocale.c
win32stat.c Fix stat() for recursive junction points on Windows. 2022-10-25 16:19:05 +13:00
win32ver.rc

src/port/README

libpgport
=========

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 strlcat.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.  Windows, Linux, AIX, and macOS use an export
list to control the symbols exported by libpq.