v2-0003-meson-Allow-disabling-static-libraries-variant-2.patch

text/plain

Filename: v2-0003-meson-Allow-disabling-static-libraries-variant-2.patch
Type: text/plain
Part: 2
Message: Re: meson: Allow disabling static libraries

Patch

Format: format-patch
Series: patch v2-0003
Subject: meson: Allow disabling static libraries (variant 2)
File+
meson.build 5 5
src/common/meson.build 1 1
src/fe_utils/meson.build 1 1
src/interfaces/ecpg/compatlib/meson.build 6 6
src/interfaces/ecpg/ecpglib/meson.build 6 6
src/interfaces/ecpg/pgtypeslib/meson.build 6 6
src/interfaces/libpq/meson.build 6 6
src/interfaces/libpq-oauth/meson.build 5 6
src/port/meson.build 1 1
From 7bff4686cd5f4a297173ada26cc8f41c79029a65 Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <peter@eisentraut.org>
Date: Tue, 27 Jan 2026 13:54:20 +0100
Subject: [PATCH v2 3/3] meson: Allow disabling static libraries (variant 2)

---
 meson.build                                | 10 +++++-----
 src/common/meson.build                     |  2 +-
 src/fe_utils/meson.build                   |  2 +-
 src/interfaces/ecpg/compatlib/meson.build  | 12 ++++++------
 src/interfaces/ecpg/ecpglib/meson.build    | 12 ++++++------
 src/interfaces/ecpg/pgtypeslib/meson.build | 12 ++++++------
 src/interfaces/libpq-oauth/meson.build     | 11 +++++------
 src/interfaces/libpq/meson.build           | 12 ++++++------
 src/port/meson.build                       |  2 +-
 9 files changed, 37 insertions(+), 38 deletions(-)

diff --git a/meson.build b/meson.build
index 78918301d53..cb1c9e6f6b2 100644
--- a/meson.build
+++ b/meson.build
@@ -51,17 +51,17 @@ not_found_dep = dependency('', required: false)
 thread_dep = dependency('threads')
 auto_features = get_option('auto_features')
 
-# Declare dependencies to disable static or shared libraries.  This
+# Declare variables to disable static or shared libraries.  This
 # makes the 'default_library' option work even though we don't use the
 # library() function but instead shared_library() and static_library()
 # separately.
 default_library_opt = get_option('default_library')
-dep_shared_lib = declare_dependency()
-dep_static_lib = declare_dependency()
+build_shared_lib = true
+build_static_lib = true
 if default_library_opt == 'shared'
-  dep_static_lib = disabler()
+  build_static_lib = false
 elif default_library_opt == 'static'
-  dep_shared_lib = disabler()
+  build_shared_lib = false
 endif
 
 
diff --git a/src/common/meson.build b/src/common/meson.build
index 1417ac3bbb7..59caaf454c7 100644
--- a/src/common/meson.build
+++ b/src/common/meson.build
@@ -192,7 +192,7 @@ foreach name, opts : pgcommon_variants
           opts.get('include_directories', []),
         ],
         'dependencies': opts['dependencies'] + [ssl],
-        'install': dep_static_lib.found(),
+        'install': build_static_lib,
       }
     )
   pgcommon += {name: lib}
diff --git a/src/fe_utils/meson.build b/src/fe_utils/meson.build
index 9c9e0bcc0da..c6265028107 100644
--- a/src/fe_utils/meson.build
+++ b/src/fe_utils/meson.build
@@ -36,6 +36,6 @@ fe_utils = static_library('libpgfeutils',
   c_args: host_system == 'windows' ? ['-DFD_SETSIZE=1024'] : [],
   dependencies: frontend_common_code,
   kwargs: default_lib_args + {
-            'install': dep_static_lib.found(),
+            'install': build_static_lib,
           },
 )
diff --git a/src/interfaces/ecpg/compatlib/meson.build b/src/interfaces/ecpg/compatlib/meson.build
index 861cb67205e..d578faefe1c 100644
--- a/src/interfaces/ecpg/compatlib/meson.build
+++ b/src/interfaces/ecpg/compatlib/meson.build
@@ -16,23 +16,24 @@ if host_system == 'windows'
 endif
 
 # see src/interfaces/libpq/meson.build
+if build_static_lib
 ecpg_compat_st = static_library('libecpg_compat',
   ecpg_compat_sources,
   include_directories: ecpg_compat_inc,
   c_args: ecpg_compat_c_args,
-  dependencies: [dep_static_lib, frontend_stlib_code, thread_dep],
+  dependencies: [frontend_stlib_code, thread_dep],
   link_with: [ecpglib_st, ecpg_pgtypes_st],
   kwargs: default_lib_args,
 )
-if dep_static_lib.found()
-  ecpg_targets += ecpg_compat_st
+ecpg_targets += ecpg_compat_st
 endif
 
+if build_shared_lib
 ecpg_compat_so = shared_library('libecpg_compat',
   ecpg_compat_sources + ecpg_compat_so_sources,
   include_directories: ecpg_compat_inc,
   c_args: ecpg_compat_c_args,
-  dependencies: [dep_shared_lib, frontend_shlib_code, thread_dep],
+  dependencies: [frontend_shlib_code, thread_dep],
   link_with: [ecpglib_so, ecpg_pgtypes_so],
   soversion: host_system != 'windows' ? '3' : '',
   darwin_versions: ['3', '3.' + pg_version_major.to_string()],
@@ -41,8 +42,7 @@ ecpg_compat_so = shared_library('libecpg_compat',
   link_depends: export_file,
   kwargs: default_lib_args,
 )
-if dep_shared_lib.found()
-  ecpg_targets += ecpg_compat_so
+ecpg_targets += ecpg_compat_so
 endif
 
 pkgconfig.generate(
diff --git a/src/interfaces/ecpg/ecpglib/meson.build b/src/interfaces/ecpg/ecpglib/meson.build
index d0841e99a19..81e92151945 100644
--- a/src/interfaces/ecpg/ecpglib/meson.build
+++ b/src/interfaces/ecpg/ecpglib/meson.build
@@ -25,25 +25,26 @@ if host_system == 'windows'
 endif
 
 # see src/interfaces/libpq/meson.build
+if build_static_lib
 ecpglib_st = static_library('libecpg',
   ecpglib_sources,
   include_directories: ecpglib_inc,
   c_args: ecpglib_c_args,
   c_pch: pch_postgres_fe_h,
-  dependencies: [dep_static_lib, frontend_stlib_code, thread_dep, libpq],
+  dependencies: [frontend_stlib_code, thread_dep, libpq],
   link_with: [ecpg_pgtypes_st],
   kwargs: default_lib_args,
 )
-if dep_static_lib.found()
-  ecpg_targets += ecpglib_st
+ecpg_targets += ecpglib_st
 endif
 
+if build_shared_lib
 ecpglib_so = shared_library('libecpg',
   ecpglib_sources + ecpglib_so_sources,
   include_directories: ecpglib_inc,
   c_args: ecpglib_c_args,
   c_pch: pch_postgres_fe_h,
-  dependencies: [dep_shared_lib, frontend_shlib_code, libpq, thread_dep],
+  dependencies: [frontend_shlib_code, libpq, thread_dep],
   link_with: ecpg_pgtypes_so,
   soversion: host_system != 'windows' ? '6' : '',
   darwin_versions: ['6', '6.' + pg_version_major.to_string()],
@@ -52,8 +53,7 @@ ecpglib_so = shared_library('libecpg',
   link_depends: export_file,
   kwargs: default_lib_args,
 )
-if dep_shared_lib.found()
-  ecpg_targets += ecpglib_so
+ecpg_targets += ecpglib_so
 endif
 
 pkgconfig.generate(
diff --git a/src/interfaces/ecpg/pgtypeslib/meson.build b/src/interfaces/ecpg/pgtypeslib/meson.build
index 7b79da2368b..241fa95e559 100644
--- a/src/interfaces/ecpg/pgtypeslib/meson.build
+++ b/src/interfaces/ecpg/pgtypeslib/meson.build
@@ -21,24 +21,25 @@ if host_system == 'windows'
 endif
 
 # see src/interfaces/libpq/meson.build
+if build_static_lib
 ecpg_pgtypes_st = static_library('libpgtypes',
   ecpg_pgtypes_sources,
   include_directories: ecpg_pgtypes_inc,
   c_args: ecpg_pgtypes_c_args,
   c_pch: pch_postgres_fe_h,
-  dependencies: [dep_static_lib, frontend_stlib_code],
+  dependencies: [frontend_stlib_code],
   kwargs: default_lib_args,
 )
-if dep_static_lib.found()
-  ecpg_targets += ecpg_pgtypes_st
+ecpg_targets += ecpg_pgtypes_st
 endif
 
+if build_shared_lib
 ecpg_pgtypes_so = shared_library('libpgtypes',
   ecpg_pgtypes_sources + ecpg_pgtypes_so_sources,
   include_directories: ecpg_pgtypes_inc,
   c_args: ecpg_pgtypes_c_args,
   c_pch: pch_postgres_fe_h,
-  dependencies: [dep_shared_lib, frontend_shlib_code],
+  dependencies: [frontend_shlib_code],
   version: '3.' + pg_version_major.to_string(),
   soversion: host_system != 'windows' ? '3' : '',
   darwin_versions: ['3', '3.' + pg_version_major.to_string()],
@@ -46,8 +47,7 @@ ecpg_pgtypes_so = shared_library('libpgtypes',
   link_depends: export_file,
   kwargs: default_lib_args,
 )
-if dep_shared_lib.found()
-  ecpg_targets += ecpg_pgtypes_so
+ecpg_targets += ecpg_pgtypes_so
 endif
 
 pkgconfig.generate(
diff --git a/src/interfaces/libpq-oauth/meson.build b/src/interfaces/libpq-oauth/meson.build
index 9c8cb90d989..27aca2bc324 100644
--- a/src/interfaces/libpq-oauth/meson.build
+++ b/src/interfaces/libpq-oauth/meson.build
@@ -21,38 +21,37 @@ export_file = custom_target('libpq-oauth.exports',
 # port needs to be in include path due to pthread-win32.h
 libpq_oauth_inc = include_directories('.', '../libpq', '../../port')
 
+if build_static_lib
 libpq_oauth_st = static_library('libpq-oauth',
   libpq_oauth_sources,
   include_directories: [libpq_oauth_inc, postgres_inc],
   c_pch: pch_postgres_fe_h,
   dependencies: [
-    dep_static_lib,
     frontend_stlib_code,
     libpq_oauth_deps,
     ssl, # libpq-int.h includes OpenSSL headers
   ],
   kwargs: default_lib_args,
 )
-if dep_static_lib.found()
-  libpq_targets += libpq_oauth_st
+libpq_targets += libpq_oauth_st
 endif
 
 # This is an internal module; we don't want an SONAME and therefore do not set
 # SO_MAJOR_VERSION.
 libpq_oauth_name = 'libpq-oauth-@0@'.format(pg_version_major)
 
+if build_shared_lib
 libpq_oauth_so = shared_module(libpq_oauth_name,
   libpq_oauth_sources + libpq_oauth_so_sources,
   include_directories: [libpq_oauth_inc, postgres_inc],
   c_args: libpq_oauth_so_c_args,
   c_pch: pch_postgres_fe_h,
-  dependencies: [dep_shared_lib, frontend_shlib_code, libpq, libpq_oauth_deps],
+  dependencies: [frontend_shlib_code, libpq, libpq_oauth_deps],
   link_depends: export_file,
   link_args: export_fmt.format(export_file.full_path()),
   kwargs: default_lib_args,
 )
-if dep_shared_lib.found()
-  libpq_targets += libpq_oauth_so
+libpq_targets += libpq_oauth_so
 endif
 
 libpq_oauth_test_deps = []
diff --git a/src/interfaces/libpq/meson.build b/src/interfaces/libpq/meson.build
index 647d7e2ae7c..2b95098187e 100644
--- a/src/interfaces/libpq/meson.build
+++ b/src/interfaces/libpq/meson.build
@@ -57,18 +57,19 @@ libpq_so_c_args = ['-DUSE_DYNAMIC_OAUTH']
 # We could try to avoid building the source files twice, but it probably adds
 # more complexity than its worth (reusing object files requires also linking
 # to the library on windows or breaks precompiled headers).
+if build_static_lib
 libpq_st = static_library('libpq',
   libpq_sources,
   include_directories: [libpq_inc],
   c_args: libpq_c_args,
   c_pch: pch_postgres_fe_h,
-  dependencies: [dep_static_lib, frontend_stlib_code, libpq_deps],
+  dependencies: [frontend_stlib_code, libpq_deps],
   kwargs: default_lib_args,
 )
-if dep_static_lib.found()
-  libpq_targets += libpq_st
+libpq_targets += libpq_st
 endif
 
+if build_shared_lib
 libpq_so = shared_library('libpq',
   libpq_sources + libpq_so_sources,
   include_directories: [libpq_inc, postgres_inc],
@@ -77,13 +78,12 @@ libpq_so = shared_library('libpq',
   version: '5.' + pg_version_major.to_string(),
   soversion: host_system != 'windows' ? '5' : '',
   darwin_versions: ['5', '5.' + pg_version_major.to_string()],
-  dependencies: [dep_shared_lib, frontend_shlib_code, libpq_deps],
+  dependencies: [frontend_shlib_code, libpq_deps],
   link_depends: export_file,
   link_args: export_fmt.format(export_file.full_path()),
   kwargs: default_lib_args,
 )
-if dep_shared_lib.found()
-  libpq_targets += libpq_so
+libpq_targets += libpq_so
 endif
 
 libpq = declare_dependency(
diff --git a/src/port/meson.build b/src/port/meson.build
index a8d92937581..eb9151e4619 100644
--- a/src/port/meson.build
+++ b/src/port/meson.build
@@ -192,7 +192,7 @@ foreach name, opts : pgport_variants
       c_pch: pch_c_h,
       kwargs: opts + {
         'dependencies': opts['dependencies'] + [ssl],
-        'install': dep_static_lib.found(),
+        'install': build_static_lib,
       }
     )
   pgport += {name: lib}
-- 
2.52.0