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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.