From: David Gibson <david-xT8FGy+AXnRB3Ne2BGzF6laj5H9X9Tb+@public.gmane.org>
To: Tero Tervala <tero.tervala-ddXEi6N5mqbQT0dZR+AlfA@public.gmane.org>
Cc: devicetree-compiler-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCH] Allow static building with meson
Date: Wed, 27 Jul 2022 16:50:07 +1000 [thread overview]
Message-ID: <YuDgH5orPfls1RmW@yekko> (raw)
In-Reply-To: <20220629163557.932298-1-tero.tervala-ddXEi6N5mqbQT0dZR+AlfA@public.gmane.org>
[-- Attachment #1: Type: text/plain, Size: 4013 bytes --]
On Wed, Jun 29, 2022 at 07:35:57PM +0300, Tero Tervala wrote:
> Added "static-build" option in the meson_options.txt.
> Setting it to "true" allows static building.
>
> Signed-off-by: Tero Tervala <tero.tervala-ddXEi6N5mqbQT0dZR+AlfA@public.gmane.org>
Thanks for adding the meson support, I've merged this as well.
It took me way too long to figure out how you actually *set* these
options with meson :(. Neither meson --help nor the online meson
documentation are as helpful as onw would hope.
We really need instructions for invoking meson in the README.
> ---
> libfdt/meson.build | 8 +++++++-
> meson.build | 14 ++++++++++++--
> meson_options.txt | 2 ++
> tests/meson.build | 9 +++++++--
> 4 files changed, 28 insertions(+), 5 deletions(-)
>
> diff --git a/libfdt/meson.build b/libfdt/meson.build
> index 71f29b6..240bdf4 100644
> --- a/libfdt/meson.build
> +++ b/libfdt/meson.build
> @@ -31,9 +31,15 @@ libfdt_a = static_library(
>
> libfdt_inc = include_directories('.')
>
> +if static_build
> + link_with = libfdt_a
> +else
> + link_with = libfdt
> +endif
> +
> libfdt_dep = declare_dependency(
> include_directories: libfdt_inc,
> - link_with: libfdt,
> + link_with: link_with,
> )
>
> install_headers(
> diff --git a/meson.build b/meson.build
> index b23ea1b..78251eb 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -31,8 +31,16 @@ add_project_arguments(
> language: 'c'
> )
>
> +if get_option('static-build')
> + static_build = true
> + extra_link_args = ['-static']
> +else
> + static_build = false
> + extra_link_args = []
> +endif
> +
> yamltree = 'yamltree.c'
> -yaml = dependency('yaml-0.1', required: get_option('yaml'))
> +yaml = dependency('yaml-0.1', required: get_option('yaml'), static: static_build)
> if not yaml.found()
> add_project_arguments('-DNO_YAML', language: 'c')
> yamltree = []
> @@ -85,6 +93,7 @@ if get_option('tools')
> ],
> dependencies: util_dep,
> install: true,
> + link_args: extra_link_args,
> )
> endif
>
> @@ -105,10 +114,11 @@ if get_option('tools')
> ],
> dependencies: [util_dep, yaml],
> install: true,
> + link_args: extra_link_args,
> )
>
> foreach e: ['fdtdump', 'fdtget', 'fdtput', 'fdtoverlay']
> - executable(e, files(e + '.c'), dependencies: util_dep, install: true)
> + executable(e, files(e + '.c'), dependencies: util_dep, install: true, link_args: extra_link_args)
> endforeach
>
> install_data(
> diff --git a/meson_options.txt b/meson_options.txt
> index ea59c28..82621c3 100644
> --- a/meson_options.txt
> +++ b/meson_options.txt
> @@ -8,3 +8,5 @@ option('valgrind', type: 'feature', value: 'auto',
> description: 'Valgrind support')
> option('python', type: 'feature', value: 'auto',
> description: 'Build pylibfdt Python library')
> +option('static-build', type: 'boolean', value: false,
> + description: 'Build static binaries')
> diff --git a/tests/meson.build b/tests/meson.build
> index 3776fef..4ac154a 100644
> --- a/tests/meson.build
> +++ b/tests/meson.build
> @@ -96,15 +96,20 @@ tests += [
> ]
>
> dl = cc.find_library('dl', required: false)
> -if dl.found()
> +if dl.found() and not static_build
> tests += [
> 'asm_tree_dump',
> 'value-labels',
> ]
> endif
>
> +test_deps = [testutil_dep, util_dep, libfdt_dep]
> +if not static_build
> + test_deps += [dl]
> +endif
> +
> foreach t: tests
> - executable(t, files(t + '.c'), dependencies: [testutil_dep, util_dep, libfdt_dep, dl])
> + executable(t, files(t + '.c'), dependencies: test_deps, link_args: extra_link_args)
> endforeach
>
> run_tests = find_program('run_tests.sh')
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
prev parent reply other threads:[~2022-07-27 6:50 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-29 16:35 [PATCH] Allow static building with meson Tero Tervala
[not found] ` <20220629163557.932298-1-tero.tervala-ddXEi6N5mqbQT0dZR+AlfA@public.gmane.org>
2022-07-27 6:50 ` David Gibson [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=YuDgH5orPfls1RmW@yekko \
--to=david-xt8fgy+axnrb3ne2bgzf6laj5h9x9tb+@public.gmane.org \
--cc=devicetree-compiler-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=tero.tervala-ddXEi6N5mqbQT0dZR+AlfA@public.gmane.org \
/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).