From ea23852d42f8b55b91ac2e04372f3637e599ec42 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Wed, 1 Nov 2023 05:46:28 -0400 Subject: [PATCH v3 1/4] abidw option Discussion: https://www.postgresql.org/message-id/CAH2-Wzk7tvgLXzOZ8a22aF-gmO5gHojWTYRvAk5ZgOvTrcEQeg@mail.gmail.com --- meson.build | 16 ++++++++++++++++ meson_options.txt | 3 +++ src/backend/meson.build | 6 ++++++ src/interfaces/ecpg/compatlib/meson.build | 6 ++++++ src/interfaces/ecpg/ecpglib/meson.build | 6 ++++++ src/interfaces/ecpg/pgtypeslib/meson.build | 6 ++++++ src/interfaces/libpq/meson.build | 6 ++++++ src/pl/plpgsql/src/meson.build | 6 ++++++ 8 files changed, 55 insertions(+) diff --git a/meson.build b/meson.build index 2d516c8f372..4a34a8a0434 100644 --- a/meson.build +++ b/meson.build @@ -2561,6 +2561,22 @@ endif +############################################################### +# abidw +############################################################### + +abidw = find_program('abidw', required: get_option('abidw'), disabler: true) +abidw_flags = [ + '--drop-undefined-syms', + '--no-comp-dir-path', + '--no-elf-needed', + '--no-show-locs', + '--type-id-style', 'hash', +] +abidw_cmd = [abidw, abidw_flags, '--out-file', '@OUTPUT@', '@INPUT@'] + + + ############################################################### # Build ############################################################### diff --git a/meson_options.txt b/meson_options.txt index d2f95cfec36..6367e077f3c 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -73,6 +73,9 @@ option('rpath', type: 'boolean', value: true, # External dependencies +option('abidw', type: 'feature', value: 'disabled', + description: 'Build ELF ABI serializations') + option('bonjour', type: 'feature', value: 'auto', description: 'Bonjour support') diff --git a/src/backend/meson.build b/src/backend/meson.build index 88a35e96763..2f8bb221e9b 100644 --- a/src/backend/meson.build +++ b/src/backend/meson.build @@ -155,6 +155,12 @@ postgres = executable('postgres', backend_targets += postgres +custom_target('postgres.abi.xml', + input: postgres, + output: 'postgres.@0@-@1@.abi.xml'.format(host_cpu, host_system), + command: abidw_cmd, + build_by_default: true) + pg_mod_c_args = cflags_mod pg_mod_cpp_args = cxxflags_mod pg_mod_link_args = ldflags_sl + ldflags_mod diff --git a/src/interfaces/ecpg/compatlib/meson.build b/src/interfaces/ecpg/compatlib/meson.build index 16d73db88bb..fc101080d35 100644 --- a/src/interfaces/ecpg/compatlib/meson.build +++ b/src/interfaces/ecpg/compatlib/meson.build @@ -41,6 +41,12 @@ ecpg_compat_so = shared_library('libecpg_compat', ) ecpg_targets += ecpg_compat_so +custom_target('libecpg_compat.abi.xml', + input: ecpg_compat_so, + output: 'libecpg_compat.@0@-@1@.abi.xml'.format(host_cpu, host_system), + command: abidw_cmd, + build_by_default: true) + pkgconfig.generate( name: 'libecpg_compat', description: 'PostgreSQL libecpg_compat library', diff --git a/src/interfaces/ecpg/ecpglib/meson.build b/src/interfaces/ecpg/ecpglib/meson.build index da8d304f549..29851a0e79f 100644 --- a/src/interfaces/ecpg/ecpglib/meson.build +++ b/src/interfaces/ecpg/ecpglib/meson.build @@ -52,6 +52,12 @@ ecpglib_so = shared_library('libecpg', ) ecpg_targets += ecpglib_so +custom_target('libecpg.abi.xml', + input: ecpglib_so, + output: 'libecpg.@0@-@1@.abi.xml'.format(host_cpu, host_system), + command: abidw_cmd, + build_by_default: true) + pkgconfig.generate( name: 'libecpg', description: 'PostgreSQL libecpg library', diff --git a/src/interfaces/ecpg/pgtypeslib/meson.build b/src/interfaces/ecpg/pgtypeslib/meson.build index f177dd35a9c..0158d51b6bb 100644 --- a/src/interfaces/ecpg/pgtypeslib/meson.build +++ b/src/interfaces/ecpg/pgtypeslib/meson.build @@ -46,6 +46,12 @@ ecpg_pgtypes_so = shared_library('libpgtypes', ) ecpg_targets += ecpg_pgtypes_so +custom_target('libpgtypes.abi.xml', + input: ecpg_pgtypes_so, + output: 'libpgtypes.@0@-@1@.abi.xml'.format(host_cpu, host_system), + command: abidw_cmd, + build_by_default: true) + pkgconfig.generate( name: 'libpgtypes', description: 'PostgreSQL libpgtypes library', diff --git a/src/interfaces/libpq/meson.build b/src/interfaces/libpq/meson.build index 80e6a15adf8..1336e0f2a47 100644 --- a/src/interfaces/libpq/meson.build +++ b/src/interfaces/libpq/meson.build @@ -84,6 +84,12 @@ libpq = declare_dependency( include_directories: [include_directories('.')] ) +custom_target('libpq.abi.xml', + input: libpq_so, + output: 'libpq.@0@-@1@.abi.xml'.format(host_cpu, host_system), + command: abidw_cmd, + build_by_default: true) + pkgconfig.generate( name: 'libpq', description: 'PostgreSQL libpq library', diff --git a/src/pl/plpgsql/src/meson.build b/src/pl/plpgsql/src/meson.build index 85e7293b374..5fcbc946138 100644 --- a/src/pl/plpgsql/src/meson.build +++ b/src/pl/plpgsql/src/meson.build @@ -57,6 +57,12 @@ plpgsql = shared_module('plpgsql', ) pl_targets += plpgsql +custom_target('plpgsql.abi.xml', + input: plpgsql, + output: 'plpgsql.@0@-@1@.abi.xml'.format(host_cpu, host_system), + command: abidw_cmd, + build_by_default: true) + install_data( 'plpgsql.control', 'plpgsql--1.0.sql', base-commit: 6ec62b779907e2fa49283a7d1dbd761fb64675f1 -- 2.42.0