Define _POSIX_C_SOURCE as 200112L on Solaris.
authorTom Lane <[email protected]>
Tue, 3 Dec 2024 17:44:43 +0000 (12:44 -0500)
committerTom Lane <[email protected]>
Tue, 3 Dec 2024 17:44:43 +0000 (12:44 -0500)
This is an attempt to suppress some compiler warnings that appeared in
the wake of commit 7f798aca1: it seems that by default Solaris/illumos
declares shmdt() to take "char *" not "void *".  We'd like the system
headers to provide modern POSIX APIs, and POSIX 2001 seems to be as
modern as is available there.

illumos' standards(7) man page suggests that we might also need to
define __EXTENSIONS__, but let's see what happens with just this.

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

configure
configure.ac
meson.build

index ff59f1422d8114db7afcfe61ca370b0ee159b836..7029e0362691c77ee15c848cc561d7838085d606 100755 (executable)
--- a/configure
+++ b/configure
@@ -7590,10 +7590,10 @@ $as_echo "#define PROFILE_PID_DIR 1" >>confdefs.h
   fi
 fi
 
-# On Solaris, we need this #define to get POSIX-conforming versions
-# of many interfaces (sigwait, getpwuid_r, ...).
+# On Solaris, we need these #defines to get POSIX-conforming versions
+# of many interfaces (sigwait, getpwuid_r, shmdt, ...).
 if test "$PORTNAME" = "solaris"; then
-  CPPFLAGS="$CPPFLAGS -D_POSIX_PTHREAD_SEMANTICS"
+  CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L -D_POSIX_PTHREAD_SEMANTICS"
 fi
 
 # We already have this in Makefile.win32, but configure needs it too
index 21817009642eae3bbfd0c6e27c6c1bd6a8772405..afc229e729b5b578431d196bca6b109d5358ecb7 100644 (file)
@@ -693,10 +693,10 @@ if test "$enable_profiling" = yes && test "$ac_cv_prog_cc_g" = yes; then
   fi
 fi
 
-# On Solaris, we need this #define to get POSIX-conforming versions
-# of many interfaces (sigwait, getpwuid_r, ...).
+# On Solaris, we need these #defines to get POSIX-conforming versions
+# of many interfaces (sigwait, getpwuid_r, shmdt, ...).
 if test "$PORTNAME" = "solaris"; then
-  CPPFLAGS="$CPPFLAGS -D_POSIX_PTHREAD_SEMANTICS"
+  CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L -D_POSIX_PTHREAD_SEMANTICS"
 fi
 
 # We already have this in Makefile.win32, but configure needs it too
index 451c3f6d851d1b915ecf9eded5aeb0ed62e8f1dc..ec5cd9259dfb8d8e44c2070cb616fc3796c541aa 100644 (file)
@@ -261,7 +261,9 @@ elif host_system == 'openbsd'
 elif host_system == 'sunos'
   portname = 'solaris'
   export_fmt = '-Wl,-M@0@'
-  cppflags += '-D_POSIX_PTHREAD_SEMANTICS'
+  # We need these #defines to get POSIX-conforming versions
+  # of many interfaces (sigwait, getpwuid_r, shmdt, ...).
+  cppflags += [ '-D_POSIX_C_SOURCE=200112L', '-D_POSIX_PTHREAD_SEMANTICS' ]
 
 elif host_system == 'windows'
   portname = 'win32'