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
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