From 1db1c13d6cb6149ee529d1a9bcc2282a0728ed2e Mon Sep 17 00:00:00 2001 From: Nazir Bilal Yavuz Date: Tue, 12 Aug 2025 20:46:57 +0300 Subject: [PATCH v2 1/2] meson: windows: Add _shared suffix to the .pdb files of shared libraries Otherwise static and shared libraries overwrite each other's .pdb (debug) files. Suggested-by: Andres Freund Author: Nazir Bilal Yavuz Reviewed-by: Jacob Champion Reviewed-by: Peter Eisentraut Reviewed-by: Tom Lane Discussion: https://postgr.es/m/CAN55FZ1RuBhJmPWs3Oi%3D9UoezDfrtO-VaU67db5%2B0_uy19uF%2BA%40mail.gmail.com --- src/interfaces/libpq/meson.build | 9 ++++++++- src/interfaces/ecpg/compatlib/meson.build | 9 ++++++++- src/interfaces/ecpg/ecpglib/meson.build | 9 ++++++++- src/interfaces/ecpg/pgtypeslib/meson.build | 9 ++++++++- 4 files changed, 32 insertions(+), 4 deletions(-) diff --git a/src/interfaces/libpq/meson.build b/src/interfaces/libpq/meson.build index a74e885b169..d0203901fa7 100644 --- a/src/interfaces/libpq/meson.build +++ b/src/interfaces/libpq/meson.build @@ -66,6 +66,13 @@ libpq_st = static_library('libpq', kwargs: default_lib_args, ) +# Change shared library's .pdb name so it won't conflict with static library's +# .pdb file +libpq_pdb_args = [] +if host_system == 'windows' + libpq_pdb_args = ['/PDB:' + meson.current_build_dir() / 'libpq_shared.pdb'] +endif + libpq_so = shared_library('libpq', libpq_sources + libpq_so_sources, include_directories: [libpq_inc, postgres_inc], @@ -76,7 +83,7 @@ libpq_so = shared_library('libpq', darwin_versions: ['5', '5.' + pg_version_major.to_string()], dependencies: [frontend_shlib_code, libpq_deps], link_depends: export_file, - link_args: export_fmt.format(export_file.full_path()), + link_args: [export_fmt.format(export_file.full_path())] + libpq_pdb_args, kwargs: default_lib_args, ) diff --git a/src/interfaces/ecpg/compatlib/meson.build b/src/interfaces/ecpg/compatlib/meson.build index 56e0a21651b..42bc87869ff 100644 --- a/src/interfaces/ecpg/compatlib/meson.build +++ b/src/interfaces/ecpg/compatlib/meson.build @@ -26,6 +26,13 @@ ecpg_compat_st = static_library('libecpg_compat', ) ecpg_targets += ecpg_compat_st +# Change shared library's .pdb name so it won't conflict with static library's +# .pdb file +ecpg_compat_pdb_args = [] +if host_system == 'windows' + ecpg_compat_pdb_args = ['/PDB:' + meson.current_build_dir() / 'libecpg_compat_shared.pdb'] +endif + ecpg_compat_so = shared_library('libecpg_compat', ecpg_compat_sources + ecpg_compat_so_sources, include_directories: ecpg_compat_inc, @@ -35,7 +42,7 @@ ecpg_compat_so = shared_library('libecpg_compat', soversion: host_system != 'windows' ? '3' : '', darwin_versions: ['3', '3.' + pg_version_major.to_string()], version: '3.' + pg_version_major.to_string(), - link_args: export_fmt.format(export_file.full_path()), + link_args: [export_fmt.format(export_file.full_path())] + ecpg_compat_pdb_args, link_depends: export_file, kwargs: default_lib_args, ) diff --git a/src/interfaces/ecpg/ecpglib/meson.build b/src/interfaces/ecpg/ecpglib/meson.build index 8f478c6a73e..1d090489a69 100644 --- a/src/interfaces/ecpg/ecpglib/meson.build +++ b/src/interfaces/ecpg/ecpglib/meson.build @@ -36,6 +36,13 @@ ecpglib_st = static_library('libecpg', ) ecpg_targets += ecpglib_st +# Change shared library's .pdb name so it won't conflict with static library's +# .pdb file +ecpglib_pdb_args = [] +if host_system == 'windows' + ecpglib_pdb_args = ['/PDB:' + meson.current_build_dir() / 'libecpg_shared.pdb'] +endif + ecpglib_so = shared_library('libecpg', ecpglib_sources + ecpglib_so_sources, include_directories: ecpglib_inc, @@ -46,7 +53,7 @@ ecpglib_so = shared_library('libecpg', soversion: host_system != 'windows' ? '6' : '', darwin_versions: ['6', '6.' + pg_version_major.to_string()], version: '6.' + pg_version_major.to_string(), - link_args: export_fmt.format(export_file.full_path()), + link_args: [export_fmt.format(export_file.full_path())] + ecpglib_pdb_args, link_depends: export_file, kwargs: default_lib_args, ) diff --git a/src/interfaces/ecpg/pgtypeslib/meson.build b/src/interfaces/ecpg/pgtypeslib/meson.build index 02301ec9acb..80a1f0db28e 100644 --- a/src/interfaces/ecpg/pgtypeslib/meson.build +++ b/src/interfaces/ecpg/pgtypeslib/meson.build @@ -31,6 +31,13 @@ ecpg_pgtypes_st = static_library('libpgtypes', ) ecpg_targets += ecpg_pgtypes_st +# Change shared library's .pdb name so it won't conflict with static library's +# .pdb file +ecpg_pgtypes_pdb_args = [] +if host_system == 'windows' + ecpg_pgtypes_pdb_args = ['/PDB:' + meson.current_build_dir() / 'libpgtypes_shared.pdb'] +endif + ecpg_pgtypes_so = shared_library('libpgtypes', ecpg_pgtypes_sources + ecpg_pgtypes_so_sources, include_directories: ecpg_pgtypes_inc, @@ -40,7 +47,7 @@ ecpg_pgtypes_so = shared_library('libpgtypes', version: '3.' + pg_version_major.to_string(), soversion: host_system != 'windows' ? '3' : '', darwin_versions: ['3', '3.' + pg_version_major.to_string()], - link_args: export_fmt.format(export_file.full_path()), + link_args: [export_fmt.format(export_file.full_path())] + ecpg_pgtypes_pdb_args, link_depends: export_file, kwargs: default_lib_args, ) -- 2.50.1