Improve build-time check that libpq doesn't call exit().
authorTom Lane <[email protected]>
Thu, 1 Jul 2021 14:45:12 +0000 (10:45 -0400)
committerTom Lane <[email protected]>
Thu, 1 Jul 2021 14:45:12 +0000 (10:45 -0400)
Further fixes for commit dc227eb82.  Per suggestion from
Peter Eisentraut, use a stamp-file to control when the check
is run, avoiding repeated executions during "make all".
Also, remove "-g" switch for nm: it's useless and some versions
of nm consider it to conflict with "-u".  (Thanks to Noah Misch
for running down that portability issue.)

Discussion: https://postgr.es/m/3128896.1624742969@sss.pgh.pa.us

src/interfaces/libpq/.gitignore
src/interfaces/libpq/Makefile

index a4afe7c1c6858aefac75b6ac62c2ee972bae447f..7478dc344ac346a08bb0cc3059eba28cd1400287 100644 (file)
@@ -1 +1,2 @@
 /exports.list
+/libpq-refs-stamp
index c2a35a488af924c60a0b0a3ee85c628d4da3f185..dcc693024f1a24a8c7efdef59928ab0536869c4d 100644 (file)
@@ -96,7 +96,7 @@ SHLIB_EXPORTS = exports.txt
 
 PKG_CONFIG_REQUIRES_PRIVATE = libssl libcrypto
 
-all: all-lib check-libpq-refs
+all: all-lib libpq-refs-stamp
 
 # Shared library stuff
 include $(top_srcdir)/src/Makefile.shlib
@@ -108,9 +108,9 @@ backend_src = $(top_srcdir)/src/backend
 # If nm doesn't exist or doesn't work on shlibs, this test will do nothing,
 # which is fine.  The exclusion of __cxa_atexit is necessary on OpenBSD,
 # which seems to insert references to that even in pure C code.
-.PHONY: check-libpq-refs
-check-libpq-refs: $(shlib)
-   ! nm -A -g -u $< 2>/dev/null | grep -v __cxa_atexit | grep exit
+libpq-refs-stamp: $(shlib)
+   ! nm -A -u $< 2>/dev/null | grep -v __cxa_atexit | grep exit
+   touch $@
 
 # Make dependencies on pg_config_paths.h visible in all builds.
 fe-connect.o: fe-connect.c $(top_builddir)/src/port/pg_config_paths.h
@@ -141,7 +141,7 @@ uninstall: uninstall-lib
 
 clean distclean: clean-lib
    $(MAKE) -C test $@
-   rm -f $(OBJS) pthread.h
+   rm -f $(OBJS) pthread.h libpq-refs-stamp
 # Might be left over from a Win32 client-only build
    rm -f pg_config_paths.h