From: Konstantin Kostiuk <kkostiuk@redhat.com>
To: Thomas Huth <thuth@redhat.com>
Cc: "Paolo Bonzini" <pbonzini@redhat.com>,
qemu-devel@nongnu.org,
"Marc-André Lureau" <marcandre.lureau@redhat.com>,
"Daniel P. Berrangé" <berrange@redhat.com>,
"Philippe Mathieu-Daudé" <philmd@linaro.org>,
"Michael Roth" <michael.roth@amd.com>,
"Markus Armbruster" <armbru@redhat.com>
Subject: Re: [PATCH] meson.build: Remove the logic to link C code with the C++ linker
Date: Thu, 6 Jul 2023 12:03:50 +0300 [thread overview]
Message-ID: <CAPMcbCrZp62ha5jS26-XLTduPuf04xDgr_E=dJXu1oWp283Vtg@mail.gmail.com> (raw)
In-Reply-To: <20230706064736.178962-1-thuth@redhat.com>
[-- Attachment #1: Type: text/plain, Size: 5133 bytes --]
Reviewed-by: Konstantin Kostiuk <kkostiuk@redhat.com>
On Thu, Jul 6, 2023 at 9:47 AM Thomas Huth <thuth@redhat.com> wrote:
> We are not mixing C++ with C code anymore, the only remaining
> C++ code in qga/vss-win32/ is used for a plain C++ executable.
> Thus we can remove the hacks for linking C code with the C++ linker
> now to simplify meson.build a little bit, and also to avoid that
> some C++ code sneaks in by accident again.
>
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
> meson.build | 24 ++++++------------------
> scripts/main.c | 1 -
> qga/meson.build | 2 +-
> 3 files changed, 7 insertions(+), 20 deletions(-)
> delete mode 100644 scripts/main.c
>
> diff --git a/meson.build b/meson.build
> index 5559b36859..620457bb95 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -473,19 +473,10 @@ if targetos != 'darwin'
> warn_flags += ['-Wthread-safety']
> endif
>
> -# Check that the C++ compiler exists and works with the C compiler.
> -link_language = 'c'
> -linker = cc
> +# Set up C++ compiler flags
> qemu_cxxflags = []
> if 'cpp' in all_languages
> qemu_cxxflags = ['-D__STDC_LIMIT_MACROS', '-D__STDC_CONSTANT_MACROS',
> '-D__STDC_FORMAT_MACROS'] + qemu_cflags
> - if cxx.links(files('scripts/main.c'), args: qemu_cflags)
> - link_language = 'cpp'
> - linker = cxx
> - else
> - message('C++ compiler does not work with C compiler')
> - message('Disabling C++-specific optional code')
> - endif
> endif
>
> # clang does not support glibc + FORTIFY_SOURCE (is it still true?)
> @@ -1600,7 +1591,7 @@ if not get_option('snappy').auto() or have_system
> snappy = cc.find_library('snappy', has_headers: ['snappy-c.h'],
> required: get_option('snappy'))
> endif
> -if snappy.found() and not linker.links('''
> +if snappy.found() and not cc.links('''
> #include <snappy-c.h>
> int main(void) { snappy_max_compressed_length(4096); return 0; }''',
> dependencies: snappy)
> snappy = not_found
> @@ -2746,7 +2737,7 @@ config_host_data.set('CONFIG_AF_VSOCK',
> cc.has_header_symbol(
>
> have_vss = false
> have_vss_sdk = false # old xp/2003 SDK
> -if targetos == 'windows' and link_language == 'cpp'
> +if targetos == 'windows' and 'cpp' in all_languages
> have_vss = cxx.compiles('''
> #define __MIDL_user_allocate_free_DEFINED__
> #include <vss.h>
> @@ -3827,7 +3818,6 @@ foreach target : target_dirs
> c_args: c_args,
> dependencies: arch_deps + deps + exe['dependencies'],
> objects: lib.extract_all_objects(recursive: true),
> - link_language: link_language,
> link_depends: [block_syms, qemu_syms] +
> exe.get('link_depends', []),
> link_args: link_args,
> win_subsystem: exe['win_subsystem'])
> @@ -4061,10 +4051,8 @@ summary_info += {'host CPU': cpu}
> summary_info += {'host endianness': build_machine.endian()}
> summary_info += {'C compiler': '
> '.join(meson.get_compiler('c').cmd_array())}
> summary_info += {'Host C compiler': ' '.join(meson.get_compiler('c',
> native: true).cmd_array())}
> -if link_language == 'cpp'
> +if 'cpp' in all_languages
> summary_info += {'C++ compiler': '
> '.join(meson.get_compiler('cpp').cmd_array())}
> -else
> - summary_info += {'C++ compiler': false}
> endif
> if targetos == 'darwin'
> summary_info += {'Objective-C compiler': '
> '.join(meson.get_compiler('objc').cmd_array())}
> @@ -4074,13 +4062,13 @@ if get_option('optimization') != 'plain'
> option_cflags += ['-O' + get_option('optimization')]
> endif
> summary_info += {'CFLAGS': ' '.join(get_option('c_args') +
> option_cflags)}
> -if link_language == 'cpp'
> +if 'cpp' in all_languages
> summary_info += {'CXXFLAGS': ' '.join(get_option('cpp_args') +
> option_cflags)}
> endif
> if targetos == 'darwin'
> summary_info += {'OBJCFLAGS': ' '.join(get_option('objc_args') +
> option_cflags)}
> endif
> -link_args = get_option(link_language + '_link_args')
> +link_args = get_option('c_link_args')
> if link_args.length() > 0
> summary_info += {'LDFLAGS': ' '.join(link_args)}
> endif
> diff --git a/scripts/main.c b/scripts/main.c
> deleted file mode 100644
> index b552c8e4ed..0000000000
> --- a/scripts/main.c
> +++ /dev/null
> @@ -1 +0,0 @@
> -int main(void) {}
> diff --git a/qga/meson.build b/qga/meson.build
> index d3291b4376..dd18092f56 100644
> --- a/qga/meson.build
> +++ b/qga/meson.build
> @@ -9,7 +9,7 @@ endif
> have_qga_vss = get_option('qga_vss') \
> .require(targetos == 'windows',
> error_message: 'VSS support requires Windows') \
> - .require(link_language == 'cpp',
> + .require('cpp' in all_languages,
> error_message: 'VSS support requires a C++ compiler') \
> .require(have_vss, error_message: '''VSS support requires VSS headers.
> If your Visual Studio installation doesn't have the VSS headers,
> --
> 2.39.3
>
>
[-- Attachment #2: Type: text/html, Size: 6550 bytes --]
prev parent reply other threads:[~2023-07-06 9:04 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-07-06 6:47 [PATCH] meson.build: Remove the logic to link C code with the C++ linker Thomas Huth
2023-07-06 8:35 ` Paolo Bonzini
2023-07-06 8:50 ` Philippe Mathieu-Daudé
2023-07-06 9:03 ` Konstantin Kostiuk [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CAPMcbCrZp62ha5jS26-XLTduPuf04xDgr_E=dJXu1oWp283Vtg@mail.gmail.com' \
--to=kkostiuk@redhat.com \
--cc=armbru@redhat.com \
--cc=berrange@redhat.com \
--cc=marcandre.lureau@redhat.com \
--cc=michael.roth@amd.com \
--cc=pbonzini@redhat.com \
--cc=philmd@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=thuth@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).