postgres/src/common/meson.build
Michael Paquier 1301c80b21 Remove MSVC scripts
This commit removes all the scripts located in src/tools/msvc/ to build
PostgreSQL with Visual Studio on Windows, meson becoming the recommended
way to achieve that.  The scripts held some information that is still
relevant with meson, information kept and moved to better locations.
Comments that referred directly to the scripts are removed.

All the documentation still relevant that was in install-windows.sgml
has been moved to installation.sgml under a new subsection for Visual.
All the content specific to the scripts is removed.  Some adjustments
for the documentation are planned in a follow-up set of changes.

Author: Michael Paquier
Reviewed-by: Peter Eisentraut, Andres Freund
Discussion: https://postgr.es/m/ZQzp_VMJcerM1Cs_@paquier.xyz
2023-12-20 09:44:37 +09:00

184 lines
4.7 KiB
Meson

# Copyright (c) 2022-2023, PostgreSQL Global Development Group
common_sources = files(
'archive.c',
'base64.c',
'binaryheap.c',
'checksum_helper.c',
'compression.c',
'controldata_utils.c',
'encnames.c',
'exec.c',
'file_perm.c',
'file_utils.c',
'hashfn.c',
'ip.c',
'jsonapi.c',
'keywords.c',
'kwlookup.c',
'link-canary.c',
'md5_common.c',
'parse_manifest.c',
'percentrepl.c',
'pg_get_line.c',
'pg_lzcompress.c',
'pg_prng.c',
'pgfnames.c',
'psprintf.c',
'relpath.c',
'rmtree.c',
'saslprep.c',
'scram-common.c',
'string.c',
'stringinfo.c',
'unicode_category.c',
'unicode_norm.c',
'username.c',
'wait_error.c',
'wchar.c',
)
if ssl.found()
common_sources += files(
'cryptohash_openssl.c',
'hmac_openssl.c',
'protocol_openssl.c',
)
else
common_sources += files(
'cryptohash.c',
'hmac.c',
'md5.c',
'sha1.c',
'sha2.c',
)
endif
common_kwlist = custom_target('kwlist',
input: files('../include/parser/kwlist.h'),
output: 'kwlist_d.h',
depend_files: gen_kwlist_deps,
command: [gen_kwlist_cmd, '--extern'])
generated_sources += common_kwlist
common_sources += common_kwlist
# The code imported from Ryu gets a pass on declaration-after-statement,
# in order to keep it more closely aligned with its upstream.
ryu_sources = files(
'd2s.c',
'f2s.c',
)
ryu_cflags = []
ryu_cflags += cflags_no_decl_after_statement
config_info_sources = files('config_info.c',)
config_info_cflags = [
'-DVAL_CC="@0@"'.format(var_cc),
'-DVAL_CPPFLAGS="@0@"'.format(var_cppflags),
'-DVAL_CFLAGS="@0@"'.format(var_cflags),
'-DVAL_CFLAGS_SL="@0@"'.format(var_cflags_sl),
'-DVAL_LDFLAGS="@0@"'.format(var_ldflags),
'-DVAL_LDFLAGS_EX="@0@"'.format(var_ldflags_ex),
'-DVAL_LDFLAGS_SL="@0@"'.format(var_ldflags_sl),
'-DVAL_LIBS="@0@"'.format(var_libs),
]
# Some files need to be built with different cflags. The different sets are
# defined here.
common_cflags = {
'ryu': ryu_cflags,
'config_info': config_info_cflags,
}
common_sources_cflags = {
'ryu': ryu_sources,
'config_info': config_info_sources
}
# A few files are currently only built for frontend, not server.
# logging.c is excluded from OBJS_FRONTEND_SHLIB (shared library) as
# a matter of policy, because it is not appropriate for general purpose
# libraries such as libpq to report errors directly.
common_sources_frontend_shlib = common_sources
common_sources_frontend_shlib += files(
'fe_memutils.c',
'restricted_token.c',
'sprompt.c',
)
common_sources_frontend_static = common_sources_frontend_shlib
common_sources_frontend_static += files(
'logging.c',
)
# Build pgcommon once for backend, once for use in frontend binaries, and
# once for use in shared libraries
#
# XXX: in most environments we could probably link_whole pgcommon_shlib
# against pgcommon_static, instead of compiling twice.
#
# For the server build of pgcommon, depend on lwlocknames_h and because at
# least cryptohash_openssl.c, hmac_openssl.c depend on it.
# controldata_utils.c depends on wait_event_types_h. That's arguably a
# layering violation, but ...
pgcommon = {}
pgcommon_variants = {
'_srv': internal_lib_args + {
'sources': common_sources + [lwlocknames_h] + [wait_event_types_h],
'dependencies': [backend_common_code],
},
'': default_lib_args + {
'sources': common_sources_frontend_static,
'dependencies': [frontend_common_code],
# Files in libpgcommon.a should use/export the "xxx_private" versions
# of pg_char_to_encoding() and friends.
'c_args': ['-DUSE_PRIVATE_ENCODING_FUNCS'],
},
'_shlib': default_lib_args + {
'pic': true,
'sources': common_sources_frontend_shlib,
'dependencies': [frontend_common_code],
},
}
foreach name, opts : pgcommon_variants
# Build internal static libraries for sets of files that need to be built
# with different cflags
cflag_libs = []
foreach cflagname, sources : common_sources_cflags
if sources.length() == 0
continue
endif
c_args = opts.get('c_args', []) + common_cflags[cflagname]
cflag_libs += static_library('libpgcommon@0@_@1@'.format(name, cflagname),
c_pch: pch_c_h,
include_directories: include_directories('.'),
kwargs: opts + {
'sources': sources,
'c_args': c_args,
'build_by_default': false,
'install': false,
},
)
endforeach
lib = static_library('libpgcommon@0@'.format(name),
link_with: cflag_libs,
c_pch: pch_c_h,
include_directories: include_directories('.'),
kwargs: opts + {
'dependencies': opts['dependencies'] + [ssl],
}
)
pgcommon += {name: lib}
endforeach
common_srv = pgcommon['_srv']
common_shlib = pgcommon['_shlib']
common_static = pgcommon['']
subdir('unicode')