From bf41247f52ffd40d91d94d1fc983f8a831b80e48 Mon Sep 17 00:00:00 2001 From: Ross Burton Date: Tue, 25 Sep 2018 16:18:43 +0100 Subject: meson: respect target/native flag distinction in G-I and gtk-doc Remove the previous attempt at this from 0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patch as it wasn't quite right, and the rest of the patch is adding the currently not upstreamable runner option. Add two new patches to fix both gobject-introspection and gtk-doc using native flags for target compiles. Signed-off-by: Ross Burton Signed-off-by: Richard Purdie --- meta/recipes-devtools/meson/meson.inc | 2 + ...ix-issues-that-arise-when-cross-compiling.patch | 26 ------------- meta/recipes-devtools/meson/meson/gi-flags.patch | 35 +++++++++++++++++ .../meson/meson/gtkdoc-flags.patch | 44 ++++++++++++++++++++++ 4 files changed, 81 insertions(+), 26 deletions(-) create mode 100644 meta/recipes-devtools/meson/meson/gi-flags.patch create mode 100644 meta/recipes-devtools/meson/meson/gtkdoc-flags.patch diff --git a/meta/recipes-devtools/meson/meson.inc b/meta/recipes-devtools/meson/meson.inc index cfb831b106..205d2a4abd 100644 --- a/meta/recipes-devtools/meson/meson.inc +++ b/meta/recipes-devtools/meson/meson.inc @@ -11,6 +11,8 @@ SRC_URI = "https://github.com/mesonbuild/meson/releases/download/${PV}/meson-${P file://0003-native_bindir.patch \ file://0002-Make-CPU-family-warnings-fatal.patch \ file://0001-Support-building-allarch-recipes-again.patch \ + file://gi-flags.patch \ + file://gtkdoc-flags.patch \ " SRC_URI[sha256sum] = "92d8afd921751261e36151643464efd3394162f69efbe8cd53e0a66b1cf395eb" SRC_URI[md5sum] = "31bda3519d8c0eb3438267268a78085e" diff --git a/meta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patch b/meta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patch index 57cb678f2c..7ffd6c54cb 100644 --- a/meta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patch +++ b/meta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patch @@ -35,32 +35,6 @@ index cb69641..727eb6a 100644 args += self._unpack_args('--htmlargs=', 'html_args', kwargs) args += self._unpack_args('--scanargs=', 'scan_args', kwargs) args += self._unpack_args('--scanobjsargs=', 'scanobjs_args', kwargs) -@@ -854,14 +858,22 @@ This will become a hard error in the future.''') - ldflags.update(internal_ldflags) - ldflags.update(state.environment.coredata.get_external_link_args('c')) - ldflags.update(external_ldflags) -+ -+ cross_c_args = " ".join(state.environment.cross_info.config["properties"].get('c_args', "")) -+ cross_link_args = " ".join(state.environment.cross_info.config["properties"].get('c_link_args', "")) -+ - if cflags: -- args += ['--cflags=%s' % ' '.join(cflags)] -+ args += ['--cflags=%s %s' % (cross_c_args,' '.join(cflags))] - if ldflags: -- args += ['--ldflags=%s' % ' '.join(ldflags)] -+ args += ['--ldflags=%s %s' % (cross_link_args, ' '.join(ldflags))] - compiler = state.environment.coredata.compilers.get('c') -- if compiler: -+ cross_compiler = state.environment.coredata.cross_compilers.get('c') -+ if compiler and not state.environment.is_cross_build(): - args += ['--cc=%s' % ' '.join(compiler.get_exelist())] - args += ['--ld=%s' % ' '.join(compiler.get_linker_exelist())] -+ elif cross_compiler and state.environment.is_cross_build(): -+ args += ['--cc=%s' % ' '.join(cross_compiler.get_exelist())] -+ args += ['--ld=%s' % ' '.join(cross_compiler.get_linker_exelist())] - - return args - diff --git a/mesonbuild/scripts/gtkdochelper.py b/mesonbuild/scripts/gtkdochelper.py index 948dc5a..9c5bd19 100644 --- a/mesonbuild/scripts/gtkdochelper.py diff --git a/meta/recipes-devtools/meson/meson/gi-flags.patch b/meta/recipes-devtools/meson/meson/gi-flags.patch new file mode 100644 index 0000000000..9a4c296191 --- /dev/null +++ b/meta/recipes-devtools/meson/meson/gi-flags.patch @@ -0,0 +1,35 @@ +Pass the correct cflags/ldflags to the gobject-introspection tools. + +Upstream-Status: Submitted [https://github.com/mesonbuild/meson/pull/4261] +Signed-off-by: Ross Burton + +diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py +index cb69641e..bb4449a0 100644 +--- a/mesonbuild/modules/gnome.py ++++ b/mesonbuild/modules/gnome.py +@@ -579,7 +579,10 @@ class GnomeModule(ExtensionModule): + external_ldflags += list(dep_external_ldflags) + scan_command += ['--cflags-begin'] + scan_command += cflags +- scan_command += state.environment.coredata.get_external_args(lang) ++ if state.environment.is_cross_build(): ++ scan_command += state.environment.cross_info.config["properties"].get(lang + '_args', "") ++ else: ++ scan_command += state.environment.coredata.get_external_args(lang) + scan_command += ['--cflags-end'] + # need to put our output directory first as we need to use the + # generated libraries instead of any possibly installed system/prefix +@@ -614,7 +614,12 @@ class GnomeModule(ExtensionModule): + scan_command.append('-L' + d) + scan_command += ['--library', libname] + +- for link_arg in state.environment.coredata.get_external_link_args(lang): ++ if state.environment.is_cross_build(): ++ link_args = state.environment.cross_info.config["properties"].get(lang + '_link_args', "") ++ else: ++ link_args = state.environment.coredata.get_external_link_args(lang) ++ ++ for link_arg in link_args: + if link_arg.startswith('-L'): + scan_command.append(link_arg) + scan_command += list(external_ldflags) diff --git a/meta/recipes-devtools/meson/meson/gtkdoc-flags.patch b/meta/recipes-devtools/meson/meson/gtkdoc-flags.patch new file mode 100644 index 0000000000..ecf3489bbe --- /dev/null +++ b/meta/recipes-devtools/meson/meson/gtkdoc-flags.patch @@ -0,0 +1,44 @@ +Ensure that in a cross compile only the target flags are passed to gtk-doc, and +not the native flags. + +Upstream-Status: Submitted [https://github.com/mesonbuild/meson/pull/4261] +Signed-off-by: Ross Burton + +diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py +index 4af33304..8751f53c 100644 +--- a/mesonbuild/modules/gnome.py ++++ b/mesonbuild/modules/gnome.py +@@ -851,17 +851,30 @@ This will become a hard error in the future.''') + if not isinstance(incd.held_object, (str, build.IncludeDirs)): + raise MesonException( + 'Gir include dirs should be include_directories().') ++ + cflags.update(get_include_args(inc_dirs)) +- cflags.update(state.environment.coredata.get_external_args('c')) ++ if state.environment.is_cross_build(): ++ cflags.update(state.environment.cross_info.config["properties"].get('c_args', "")) ++ else: ++ cflags.update(state.environment.coredata.get_external_args('c')) ++ + ldflags = OrderedSet() + ldflags.update(internal_ldflags) +- ldflags.update(state.environment.coredata.get_external_link_args('c')) ++ if state.environment.is_cross_build(): ++ ldflags.update(state.environment.cross_info.config["properties"].get('c_link_args', "")) ++ else: ++ ldflags.update(state.environment.coredata.get_external_link_args('c')) + ldflags.update(external_ldflags) ++ + if cflags: + args += ['--cflags=%s' % ' '.join(cflags)] + if ldflags: + args += ['--ldflags=%s' % ' '.join(ldflags)] +- compiler = state.environment.coredata.compilers.get('c') ++ ++ if state.environment.is_cross_build(): ++ compiler = state.environment.coredata.cross_compilers.get('c') ++ else: ++ compiler = state.environment.coredata.compilers.get('c') + if compiler: + args += ['--cc=%s' % ' '.join(compiler.get_exelist())] + args += ['--ld=%s' % ' '.join(compiler.get_linker_exelist())] -- cgit 1.2.3-korg