diff options
Diffstat (limited to 'src/include/meson.build')
-rw-r--r-- | src/include/meson.build | 188 |
1 files changed, 188 insertions, 0 deletions
diff --git a/src/include/meson.build b/src/include/meson.build new file mode 100644 index 0000000..d7e1ecd --- /dev/null +++ b/src/include/meson.build @@ -0,0 +1,188 @@ +# Copyright (c) 2022-2023, 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', + 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']} |