mirror of
https://github.com/zebrajr/postgres.git
synced 2025-12-06 12:20:15 +01:00
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
184 lines
4.7 KiB
Meson
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')
|