# Copyright (c) 2022-2024, PostgreSQL Global Development Group pg_config_ext = configure_file( input: 'pg_config_ext.h.meson', output: 'pg_config_ext.h', configuration: cdata, install: true, install_dir: dir_include, ) configure_files += pg_config_ext pg_config_os = configure_file( output: 'pg_config_os.h', input: files('port/@0@.h'.format(portname)), install: true, install_dir: dir_include, copy: true, ) configure_files += pg_config_os pg_config = configure_file( output: 'pg_config.h', install: true, install_dir: dir_include, configuration: cdata, ) configure_files += pg_config config_paths_data = configuration_data() config_paths_data.set_quoted('PGBINDIR', dir_prefix / dir_bin) config_paths_data.set_quoted('PGSHAREDIR', dir_prefix / dir_data) config_paths_data.set_quoted('SYSCONFDIR', dir_prefix / dir_sysconf) config_paths_data.set_quoted('INCLUDEDIR', dir_prefix / dir_include) config_paths_data.set_quoted('PKGINCLUDEDIR', dir_prefix / dir_include_pkg) config_paths_data.set_quoted('INCLUDEDIRSERVER', dir_prefix / dir_include_server) config_paths_data.set_quoted('LIBDIR', dir_prefix / dir_lib) config_paths_data.set_quoted('PKGLIBDIR', dir_prefix / dir_lib_pkg) config_paths_data.set_quoted('LOCALEDIR', dir_prefix / dir_locale) config_paths_data.set_quoted('DOCDIR', dir_prefix / dir_doc) config_paths_data.set_quoted('HTMLDIR', dir_prefix / dir_doc_html) config_paths_data.set_quoted('MANDIR', dir_prefix / dir_man) var_cc = ' '.join(cc.cmd_array()) var_cpp = ' '.join(cc.cmd_array() + ['-E']) var_cflags = ' '.join(cflags + cflags_warn + get_option('c_args')) if llvm.found() var_cxxflags = ' '.join(cxxflags + cxxflags_warn + get_option('cpp_args')) else var_cxxflags = '' endif var_cppflags = ' '.join(cppflags) var_cflags_sl = ' '.join(cc.get_supported_arguments('-fPIC')) # explicitly add -Wl,--as-needed, normally added by meson, but we want it for # PGXS compatibility var_ldflags = ' '.join( ldflags + cc.get_supported_link_arguments('-Wl,--as-needed') + get_option('c_link_args') ) var_ldflags_sl = ''.join(ldflags_sl) var_ldflags_ex = '' # FIXME # FIXME - some extensions might directly use symbols from one of libs. If # that symbol isn't used by postgres, and statically linked, it'll cause an # undefined symbol at runtime. And obviously it'll cause problems for # executables, although those are probably less common. var_libs = '' pg_config_paths = configure_file( output: 'pg_config_paths.h', configuration: config_paths_data, install: false, ) configure_files += pg_config_paths install_headers( 'pg_config_manual.h', 'postgres_ext.h', ) install_headers( 'libpq/libpq-fs.h', install_dir: dir_include / 'libpq', ) install_headers( 'c.h', 'port.h', 'postgres_fe.h', install_dir: dir_include_internal, ) install_headers( 'libpq/pqcomm.h', 'libpq/protocol.h', install_dir: dir_include_internal / 'libpq', ) install_headers( 'c.h', 'fmgr.h', 'funcapi.h', 'getopt_long.h', 'miscadmin.h', 'pg_config_manual.h', 'pg_getopt.h', 'pg_trace.h', 'pgstat.h', 'pgtar.h', 'pgtime.h', 'port.h', 'postgres.h', 'postgres_ext.h', 'postgres_fe.h', 'varatt.h', 'windowapi.h', pg_config_ext, pg_config_os, pg_config, install_dir: dir_include_server, ) subdir('catalog') subdir('nodes') subdir('pch') subdir('storage') subdir('utils') header_subdirs = [ 'access', 'archive', 'catalog', 'bootstrap', 'commands', 'common', 'datatype', 'executor', 'fe_utils', 'foreign', 'jit', 'lib', 'libpq', 'mb', 'nodes', 'optimizer', 'parser', 'partitioning', 'postmaster', 'regex', 'replication', 'rewrite', 'statistics', 'storage', 'tcop', 'snowball', 'tsearch', 'utils', 'port', 'portability', ] # XXX: installing headers this way has the danger of installing editor files # etc, unfortunately install_subdir() doesn't allow including / excluding by # pattern currently. foreach d : header_subdirs if d == 'catalog' continue endif install_subdir(d, install_dir: dir_include_server, exclude_files: ['.gitignore', 'meson.build']) endforeach install_subdir('catalog', install_dir: dir_include_server, exclude_files: [ '.gitignore', 'Makefile', 'duplicate_oids', 'meson.build', 'reformat_dat_file.pl', 'renumber_oids.pl', 'unused_oids', ] + bki_data, ) # autoconf generates the file there, ensure we get a conflict generated_sources_ac += {'src/include': ['stamp-h', 'stamp-ext-h']}