[Buildroot] [PATCH 2/3 v6] package/gobject-introspection: export variables in g-ir-scanner

Adam Duskett aduskett at gmail.com
Sun Mar 15 16:35:20 UTC 2020


All:

Tested-by: Adam Duskett <aduskett at gmail.com>

On Sun, Mar 15, 2020 at 8:33 AM Yann E. MORIN <yann.morin.1998 at free.fr> wrote:
>
> From: Adam Duskett <Aduskett at gmail.com>
>
> When building .gir .typelib files, the g-ir-scanner wrapper calls the host
> g-ir-scanner. g-ir-scanner calls ccompiler.py, which searches for the following
> environment variables:
>     CPP, CC, CXX, CPPFLAGS, CFLAGS, CXXFLAGS, LDFLAGS
>
> These environment variables are empty by default, and as such ccompiler.py
> defaults to either using the system tools (CC, CXX, and CPP) or leaving
> the variables blank (LDFLAGS, CFLAGS, and CPPFLAGS.)
>
> For autotools packages, this issue does not occur because autotools uses
> Makefile.introspection found on the staging directory in
> usr/share/gobject-introspection-1.0/ which automatically exports the above
> variables.
>
> However, for meson, the above variables are not exported when meson calls
> g-ir-scanner to build .gir and .typelib files, which results in linking errors.
>
> Exporting these variables in the g-ir-scanner wrapper fixes these issues and
> ensures all build systems can generate .gir and .typelib files properly.
>
> Signed-off-by: Adam Duskett <Aduskett at gmail.com>
> Signed-off-by: Yann E. MORIN <yann.morin.1998 at free.fr>
>
> ---
> Changes v1 -> v3:
>   - Use relative paths. (Yann)
>
> Changes v4 -> v5:
>   - Switch back to using HOST_DIR. (Yann)
>   - Update commit message as to why this patch is necessary.
>   - Add CXX, CPP, LDFLAGS, CFLAGS and CPPFLAGS to the list of variables
>     of which are exported.
>   - Add a comment in g-ir-scanner as to why these exports are necessary.
>
> Changes v5 -> v6  (Yann):
>   - only set the variables if not already set
>   - use a single call to $(SED) instead of one per variable
>   - reorder variables in a more logical order
>   - add missing CXXFLAGS
> ---
>  package/gobject-introspection/g-ir-scanner.in      | 14 ++++++++++++++
>  .../gobject-introspection/gobject-introspection.mk |  9 +++++++++
>  2 files changed, 23 insertions(+)
>
> diff --git a/package/gobject-introspection/g-ir-scanner.in b/package/gobject-introspection/g-ir-scanner.in
> index 9f97497b7e..22df7be309 100644
> --- a/package/gobject-introspection/g-ir-scanner.in
> +++ b/package/gobject-introspection/g-ir-scanner.in
> @@ -1,6 +1,20 @@
>  #!/usr/bin/env bash
>
> +# These environment variables are empty by default, and as such ccompiler.py
> +# defaults to either using the system tools (CC, CXX, and CPP) or leaving
> +# the variables blank (LDFLAGS, CFLAGS, and CPPFLAGS.)
> +# Export these variables to ensure all build systems can generate .gir and
> +# .typelib files properly.
> +export CPP="${CPP:-${HOST_DIR}/bin/@BASENAME_TARGET_CPP@}"
> +export CC="${CC:-${HOST_DIR}/bin/@BASENAME_TARGET_CC@}"
> +export CXX="${CXX:-${HOST_DIR}/bin/@BASENAME_TARGET_CXX@}"
> +export CPPFLAGS="${CPPFLAGS:- at TARGET_CPPFLAGS@}"
> +export CFLAGS="${CFLAGS:- at TARGET_CFLAGS@}"
> +export CXXFLAGS="${CXXFLAGS:- at TARGET_CXXFLAGS@}"
> +export LDFLAGS="${LDFLAGS:- at TARGET_LDFLAGS@}"
> +
>  export GI_SCANNER_DISABLE_CACHE=1
> +
>  ${HOST_DIR}/bin/g-ir-scanner \
>  --lib-dirs-envvar=GIR_EXTRA_LIBS_PATH \
>  --use-binary-wrapper=$(dirname $0)/g-ir-scanner-qemuwrapper \
> diff --git a/package/gobject-introspection/gobject-introspection.mk b/package/gobject-introspection/gobject-introspection.mk
> index 35b6669469..0a395b814c 100644
> --- a/package/gobject-introspection/gobject-introspection.mk
> +++ b/package/gobject-introspection/gobject-introspection.mk
> @@ -105,6 +105,15 @@ define GOBJECT_INTROSPECTION_INSTALL_WRAPPERS
>                 $(INSTALL) -D -m 755 \
>                         $(GOBJECT_INTROSPECTION_PKGDIR)/$(w).in $(STAGING_DIR)/usr/bin/$(w)
>         )
> +       $(SED) "s%@BASENAME_TARGET_CPP@%$(notdir $(TARGET_CPP))%g" \
> +               -e "s%@BASENAME_TARGET_CC@%$(notdir $(TARGET_CC))%g" \
> +               -e "s%@BASENAME_TARGET_CXX@%$(notdir $(TARGET_CXX))%g" \
> +               -e "s%@TARGET_CPPFLAGS@%$(TARGET_CPPFLAGS)%g" \
> +               -e "s%@TARGET_CFLAGS@%$(TARGET_CFLAGS)%g" \
> +               -e "s%@TARGET_CXXFLAGS@%$(TARGET_CXXFLAGS)%g" \
> +               -e "s%@TARGET_LDFLAGS@%$(TARGET_LDFLAGS)%g" \
> +               $(STAGING_DIR)/usr/bin/g-ir-scanner
> +
>         # Gobject-introspection installs Makefile.introspection in
>         # $(STAGING_DIR)/usr/share which is needed for autotools-based programs to
>         # build .gir and .typelib files. Unfortuantly, gobject-introspection-1.0.pc
> --
> 2.20.1
>


More information about the buildroot mailing list