changeset 769:5c6ee778aa4c pg-next-699

use libpq 13.1 for AppleClang
author Alain Mazy <am@orthanc.team>
date Fri, 28 Nov 2025 15:12:41 +0100
parents a07d176a4b58
children bd6fcb94d68f
files PostgreSQL/NEWS Resources/CMake/PostgreSQLConfiguration.cmake
diffstat 2 files changed, 111 insertions(+), 52 deletions(-) [+]
line wrap: on
line diff
--- a/PostgreSQL/NEWS	Fri Nov 28 14:31:16 2025 +0100
+++ b/PostgreSQL/NEWS	Fri Nov 28 15:12:41 2025 +0100
@@ -32,7 +32,7 @@
   tables.  This new column is required for pg_repack to be able to reclaim space on
   these tables.
 * Upgraded dependencies for static builds (notably on Windows and LSB):
-  - libpq 18.1 (replacing libpq 13.1)
+  - libpq 18.1 (replacing libpq 13.1 - except for macOS universal binaries that still uses 13.1)
 
 
 Release 9.0 (2025-08-13)
--- a/Resources/CMake/PostgreSQLConfiguration.cmake	Fri Nov 28 14:31:16 2025 +0100
+++ b/Resources/CMake/PostgreSQLConfiguration.cmake	Fri Nov 28 15:12:41 2025 +0100
@@ -48,13 +48,21 @@
 if (STATIC_BUILD OR NOT USE_SYSTEM_LIBPQ)
   add_definitions(-DORTHANC_POSTGRESQL_STATIC=1)
 
-  SET(LIBPQ_MAJOR 18)
-  SET(LIBPQ_MINOR 1)
+  if (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
+    SET(LIBPQ_MAJOR 13)
+    SET(LIBPQ_MINOR 23)
+    SET(LIBPQ_MD5SUM 86f7b1ace0dc43e993f29a6739a264d8)
+  else()
+    SET(LIBPQ_MAJOR 18)
+    SET(LIBPQ_MINOR 1)
+    SET(LIBPQ_MD5SUM 523b5e7f7f64d331004fd93d37109aa0)
+  endif()
+
   SET(LIBPQ_VERSION ${LIBPQ_MAJOR}.${LIBPQ_MINOR})
 
   SET(LIBPQ_SOURCES_DIR ${CMAKE_BINARY_DIR}/postgresql-${LIBPQ_VERSION})
   DownloadPackage(
-    "523b5e7f7f64d331004fd93d37109aa0"
+    LIBPQ_MD5SUM
     "https://orthanc.uclouvain.be/downloads/third-party-downloads/postgresql-${LIBPQ_VERSION}.tar.gz"
     "${LIBPQ_SOURCES_DIR}")
 
@@ -322,7 +330,15 @@
     ${AUTOGENERATED_DIR}/pg_config.h.in
     ${AUTOGENERATED_DIR}/pg_config.h)
 
-
+  if (LIBPQ_MAJOR STREQUAL "13")
+    PrepareCMakeConfigurationFile(
+      ${LIBPQ_SOURCES_DIR}/src/include/pg_config_ext.h.in
+      ${AUTOGENERATED_DIR}/pg_config_ext.h.in)
+   
+    configure_file(
+      ${AUTOGENERATED_DIR}/pg_config_ext.h.in
+      ${AUTOGENERATED_DIR}/pg_config_ext.h)
+  endif()
 
   ##
   ## Generic configuration
@@ -349,53 +365,96 @@
     ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq
     )
 
-  set(LIBPQ_SOURCES
-    # Don't use files from the "src/backend/" folder
-    ${LIBPQ_SOURCES_DIR}/src/common/base64.c
-    ${LIBPQ_SOURCES_DIR}/src/common/cryptohash_openssl.c
-    ${LIBPQ_SOURCES_DIR}/src/common/encnames.c
-    ${LIBPQ_SOURCES_DIR}/src/common/fe_memutils.c
-    ${LIBPQ_SOURCES_DIR}/src/common/ip.c
-    ${LIBPQ_SOURCES_DIR}/src/common/link-canary.c
-    ${LIBPQ_SOURCES_DIR}/src/common/jsonapi.c
-    ${LIBPQ_SOURCES_DIR}/src/common/md5.c
-    ${LIBPQ_SOURCES_DIR}/src/common/md5_common.c
-    ${LIBPQ_SOURCES_DIR}/src/common/pg_prng.c
-    ${LIBPQ_SOURCES_DIR}/src/common/psprintf.c
-    ${LIBPQ_SOURCES_DIR}/src/common/saslprep.c
-    ${LIBPQ_SOURCES_DIR}/src/common/scram-common.c
-    ${LIBPQ_SOURCES_DIR}/src/common/hmac_openssl.c
-    ${LIBPQ_SOURCES_DIR}/src/common/string.c
-    ${LIBPQ_SOURCES_DIR}/src/common/stringinfo.c
-    ${LIBPQ_SOURCES_DIR}/src/common/unicode_norm.c
-    ${LIBPQ_SOURCES_DIR}/src/common/wchar.c
-    ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-auth-oauth.c
-    ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-auth-scram.c
-    ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-auth.c
-    ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-cancel.c
-    ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-connect.c
-    ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-exec.c
-    ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-lobj.c
-    ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-misc.c
-    ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-print.c
-    ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-protocol3.c
-    ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-secure-common.c
-    ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-secure-openssl.c
-    ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-secure.c
-    ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-trace.c
-    ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/libpq-events.c
-    ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/pqexpbuffer.c
-    ${LIBPQ_SOURCES_DIR}/src/port/chklocale.c
-    ${LIBPQ_SOURCES_DIR}/src/port/explicit_bzero.c
-    ${LIBPQ_SOURCES_DIR}/src/port/inet_net_ntop.c
-    ${LIBPQ_SOURCES_DIR}/src/port/noblock.c
-    ${LIBPQ_SOURCES_DIR}/src/port/pg_strong_random.c
-    ${LIBPQ_SOURCES_DIR}/src/port/pg_bitutils.c
-    ${LIBPQ_SOURCES_DIR}/src/port/pgstrcasecmp.c
-    ${LIBPQ_SOURCES_DIR}/src/port/pqsignal.c
-    ${LIBPQ_SOURCES_DIR}/src/port/snprintf.c
-    ${LIBPQ_SOURCES_DIR}/src/port/strerror.c
-    )
+  if (LIBPQ_MAJOR STREQUAL "18")
+
+    set(LIBPQ_SOURCES
+      # Don't use files from the "src/backend/" folder
+      ${LIBPQ_SOURCES_DIR}/src/common/base64.c
+      ${LIBPQ_SOURCES_DIR}/src/common/cryptohash_openssl.c
+      ${LIBPQ_SOURCES_DIR}/src/common/encnames.c
+      ${LIBPQ_SOURCES_DIR}/src/common/fe_memutils.c
+      ${LIBPQ_SOURCES_DIR}/src/common/ip.c
+      ${LIBPQ_SOURCES_DIR}/src/common/link-canary.c
+      ${LIBPQ_SOURCES_DIR}/src/common/jsonapi.c
+      ${LIBPQ_SOURCES_DIR}/src/common/md5.c
+      ${LIBPQ_SOURCES_DIR}/src/common/md5_common.c
+      ${LIBPQ_SOURCES_DIR}/src/common/pg_prng.c
+      ${LIBPQ_SOURCES_DIR}/src/common/psprintf.c
+      ${LIBPQ_SOURCES_DIR}/src/common/saslprep.c
+      ${LIBPQ_SOURCES_DIR}/src/common/scram-common.c
+      ${LIBPQ_SOURCES_DIR}/src/common/hmac_openssl.c
+      ${LIBPQ_SOURCES_DIR}/src/common/string.c
+      ${LIBPQ_SOURCES_DIR}/src/common/stringinfo.c
+      ${LIBPQ_SOURCES_DIR}/src/common/unicode_norm.c
+      ${LIBPQ_SOURCES_DIR}/src/common/wchar.c
+      ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-auth-oauth.c
+      ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-auth-scram.c
+      ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-auth.c
+      ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-cancel.c
+      ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-connect.c
+      ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-exec.c
+      ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-lobj.c
+      ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-misc.c
+      ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-print.c
+      ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-protocol3.c
+      ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-secure-common.c
+      ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-secure-openssl.c
+      ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-secure.c
+      ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-trace.c
+      ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/libpq-events.c
+      ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/pqexpbuffer.c
+      ${LIBPQ_SOURCES_DIR}/src/port/chklocale.c
+      ${LIBPQ_SOURCES_DIR}/src/port/explicit_bzero.c
+      ${LIBPQ_SOURCES_DIR}/src/port/inet_net_ntop.c
+      ${LIBPQ_SOURCES_DIR}/src/port/noblock.c
+      ${LIBPQ_SOURCES_DIR}/src/port/pg_strong_random.c
+      ${LIBPQ_SOURCES_DIR}/src/port/pg_bitutils.c
+      ${LIBPQ_SOURCES_DIR}/src/port/pgstrcasecmp.c
+      ${LIBPQ_SOURCES_DIR}/src/port/pqsignal.c
+      ${LIBPQ_SOURCES_DIR}/src/port/snprintf.c
+      ${LIBPQ_SOURCES_DIR}/src/port/strerror.c
+      )
+  else()
+    set(LIBPQ_SOURCES
+      # Don't use files from the "src/backend/" folder
+      ${LIBPQ_SOURCES_DIR}/src/common/base64.c
+      ${LIBPQ_SOURCES_DIR}/src/common/encnames.c
+      ${LIBPQ_SOURCES_DIR}/src/common/ip.c
+      ${LIBPQ_SOURCES_DIR}/src/common/link-canary.c
+      ${LIBPQ_SOURCES_DIR}/src/common/md5.c
+      ${LIBPQ_SOURCES_DIR}/src/common/saslprep.c
+      ${LIBPQ_SOURCES_DIR}/src/common/scram-common.c
+      ${LIBPQ_SOURCES_DIR}/src/common/sha2_openssl.c
+      ${LIBPQ_SOURCES_DIR}/src/common/string.c
+      ${LIBPQ_SOURCES_DIR}/src/common/unicode_norm.c
+      ${LIBPQ_SOURCES_DIR}/src/common/wchar.c
+      ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-auth-scram.c
+      ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-auth.c
+      ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-connect.c
+      ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-exec.c
+      ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-lobj.c
+      ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-misc.c
+      ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-print.c
+      ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-protocol2.c
+      ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-protocol3.c
+      ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-secure-common.c
+      ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-secure-openssl.c
+      ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/fe-secure.c
+      ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/libpq-events.c
+      ${LIBPQ_SOURCES_DIR}/src/interfaces/libpq/pqexpbuffer.c
+      ${LIBPQ_SOURCES_DIR}/src/port/chklocale.c
+      ${LIBPQ_SOURCES_DIR}/src/port/explicit_bzero.c
+      ${LIBPQ_SOURCES_DIR}/src/port/getaddrinfo.c
+      ${LIBPQ_SOURCES_DIR}/src/port/inet_net_ntop.c
+      ${LIBPQ_SOURCES_DIR}/src/port/noblock.c
+      ${LIBPQ_SOURCES_DIR}/src/port/pg_strong_random.c
+      ${LIBPQ_SOURCES_DIR}/src/port/pgstrcasecmp.c
+      ${LIBPQ_SOURCES_DIR}/src/port/pqsignal.c
+      ${LIBPQ_SOURCES_DIR}/src/port/snprintf.c
+      ${LIBPQ_SOURCES_DIR}/src/port/strerror.c
+      ${LIBPQ_SOURCES_DIR}/src/port/thread.c
+      )
+  endif()
 
   if (NOT HAVE_STRLCPY)
     LIST(APPEND LIBPQ_SOURCES