postgresql/src/include/catalog/meson.build

163 lines
4.0 KiB
Meson

# Copyright (c) 2022-2024, PostgreSQL Global Development Group
# Note: the order of this list determines the order in which the catalog
# header files are assembled into postgres.bki. BKI_BOOTSTRAP catalogs
# must appear first, and pg_statistic before pg_statistic_ext_data, and
# there are reputedly other, undocumented ordering dependencies.
catalog_headers = [
'pg_proc.h',
'pg_type.h',
'pg_attribute.h',
'pg_class.h',
'pg_attrdef.h',
'pg_constraint.h',
'pg_inherits.h',
'pg_index.h',
'pg_operator.h',
'pg_opfamily.h',
'pg_opclass.h',
'pg_am.h',
'pg_amop.h',
'pg_amproc.h',
'pg_language.h',
'pg_largeobject_metadata.h',
'pg_largeobject.h',
'pg_aggregate.h',
'pg_statistic.h',
'pg_statistic_ext.h',
'pg_statistic_ext_data.h',
'pg_rewrite.h',
'pg_trigger.h',
'pg_event_trigger.h',
'pg_description.h',
'pg_cast.h',
'pg_enum.h',
'pg_namespace.h',
'pg_conversion.h',
'pg_depend.h',
'pg_database.h',
'pg_db_role_setting.h',
'pg_tablespace.h',
'pg_authid.h',
'pg_auth_members.h',
'pg_shdepend.h',
'pg_shdescription.h',
'pg_ts_config.h',
'pg_ts_config_map.h',
'pg_ts_dict.h',
'pg_ts_parser.h',
'pg_ts_template.h',
'pg_extension.h',
'pg_foreign_data_wrapper.h',
'pg_foreign_server.h',
'pg_user_mapping.h',
'pg_foreign_table.h',
'pg_policy.h',
'pg_replication_origin.h',
'pg_default_acl.h',
'pg_init_privs.h',
'pg_seclabel.h',
'pg_shseclabel.h',
'pg_collation.h',
'pg_parameter_acl.h',
'pg_partitioned_table.h',
'pg_range.h',
'pg_transform.h',
'pg_sequence.h',
'pg_publication.h',
'pg_publication_namespace.h',
'pg_publication_rel.h',
'pg_subscription.h',
'pg_subscription_rel.h',
]
# The .dat files we need can just be listed alphabetically.
bki_data = [
'pg_aggregate.dat',
'pg_am.dat',
'pg_amop.dat',
'pg_amproc.dat',
'pg_authid.dat',
'pg_cast.dat',
'pg_class.dat',
'pg_collation.dat',
'pg_conversion.dat',
'pg_database.dat',
'pg_language.dat',
'pg_namespace.dat',
'pg_opclass.dat',
'pg_operator.dat',
'pg_opfamily.dat',
'pg_proc.dat',
'pg_range.dat',
'pg_tablespace.dat',
'pg_ts_config.dat',
'pg_ts_config_map.dat',
'pg_ts_dict.dat',
'pg_ts_parser.dat',
'pg_ts_template.dat',
'pg_type.dat',
]
bki_data_f = files(bki_data)
input = []
output_files = [
'postgres.bki',
'system_constraints.sql',
'schemapg.h',
'syscache_ids.h',
'syscache_info.h',
'system_fk_info.h',
]
output_install = [
dir_data,
dir_data,
dir_include_server / 'catalog',
dir_include_server / 'catalog',
false,
dir_include_server / 'catalog',
]
foreach h : catalog_headers
fname = h.split('.h')[0] + '_d.h'
input += files(h)
output_files += fname
output_install += dir_include_server / 'catalog'
endforeach
generated_catalog_headers = custom_target('generated_catalog_headers',
output: output_files,
install_dir: output_install,
input: input,
depend_files: bki_data_f + catalog_pm,
build_by_default: true,
install: true,
command: [
perl,
files('../../backend/catalog/genbki.pl'),
'--include-path=@SOURCE_ROOT@/src/include',
'--set-version=' + pg_version_major.to_string(),
'--output=@OUTDIR@', '@INPUT@'
],
)
generated_headers += generated_catalog_headers.to_list()
# autoconf generates the file there, ensure we get a conflict
generated_sources_ac += {'src/include/catalog': output_files + ['bki-stamp']}
# 'reformat-dat-files' is a convenience target for rewriting the
# catalog data files in our standard format. This includes collapsing
# out any entries that are redundant with a BKI_DEFAULT annotation.
run_target('reformat-dat-files',
command: [perl, files('reformat_dat_file.pl'), '--output', '@CURRENT_SOURCE_DIR@', bki_data_f],
)
# 'expand-dat-files' is a convenience target for expanding out all
# default values in the catalog data files. This should be run before
# altering or removing any BKI_DEFAULT annotation.
run_target('expand-dat-files',
command: [perl, files('reformat_dat_file.pl'), '--output', '@CURRENT_SOURCE_DIR@', bki_data_f, '--full-tuples'],
)