From 1f3c05529c0c9032ae0a289fb1f088b7541fc9b0 Mon Sep 17 00:00:00 2001
From: Jussi Kukkonen <jussi.kukkonen@intel.com>
Date: Mon, 9 Nov 2015 11:07:27 +0200
Subject: [PATCH] Enable more tests while cross-compiling

Upstream disables a few tests while cross-compiling because their build requires
running other built binaries. This usually makes sense but in the cross-compile
case we can depend on glib-2.0-native.

Upstream-Status: Inappropriate [OE specific]
Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>

---
 gio/tests/meson.build | 24 ++++++++++++------------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/gio/tests/meson.build b/gio/tests/meson.build
index 3ed23a5..5df932a 100644
--- a/gio/tests/meson.build
+++ b/gio/tests/meson.build
@@ -253,7 +253,7 @@ if host_machine.system() != 'windows'
     }
   endif
 
-  if have_dbus_daemon
+  if true
     annotate_args = [
       '--annotate', 'org.project.Bar', 'Key1', 'Value1',
       '--annotate', 'org.project.Bar', 'org.gtk.GDBus.Internal', 'Value2',
@@ -603,14 +603,14 @@ if installed_tests_enabled
   endforeach
 endif
 
-if not meson.is_cross_build() or meson.has_exe_wrapper()
+if meson.is_cross_build()
 
   compiler_type = '--compiler=@0@'.format(cc.get_id())
 
   plugin_resources_c = custom_target('plugin-resources.c',
     input : 'test4.gresource.xml',
     output : 'plugin-resources.c',
-    command : [glib_compile_resources,
+    command : ['glib-compile-resources',
                compiler_type,
                '--target=@OUTPUT@',
                '--sourcedir=' + meson.current_source_dir(),
@@ -636,7 +636,7 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
   test_gresource = custom_target('test.gresource',
     input : 'test.gresource.xml',
     output : 'test.gresource',
-    command : [glib_compile_resources,
+    command : ['glib-compile-resources',
                compiler_type,
                '--target=@OUTPUT@',
                '--sourcedir=' + meson.current_source_dir(),
@@ -649,7 +649,7 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
   test_resources2_c = custom_target('test_resources2.c',
     input : 'test3.gresource.xml',
     output : 'test_resources2.c',
-    command : [glib_compile_resources,
+    command : ['glib-compile-resources',
                compiler_type,
                '--target=@OUTPUT@',
                '--sourcedir=' + meson.current_source_dir(),
@@ -662,7 +662,7 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
   test_resources2_h = custom_target('test_resources2.h',
     input : 'test3.gresource.xml',
     output : 'test_resources2.h',
-    command : [glib_compile_resources,
+    command : ['glib-compile-resources',
                compiler_type,
                '--target=@OUTPUT@',
                '--sourcedir=' + meson.current_source_dir(),
@@ -676,7 +676,7 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
     input : 'test2.gresource.xml',
     depends : big_test_resource,
     output : 'test_resources.c',
-    command : [glib_compile_resources,
+    command : ['glib-compile-resources',
                compiler_type,
                '--target=@OUTPUT@',
                '--sourcedir=' + meson.current_source_dir(),
@@ -689,7 +689,7 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
   digit_test_resources_c = custom_target('digit_test_resources.c',
     input : '111_digit_test.gresource.xml',
     output : 'digit_test_resources.c',
-    command : [glib_compile_resources,
+    command : ['glib-compile-resources',
                compiler_type,
                '--target=@OUTPUT@',
                '--sourcedir=' + meson.current_source_dir(),
@@ -702,7 +702,7 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
   digit_test_resources_h = custom_target('digit_test_resources.h',
     input : '111_digit_test.gresource.xml',
     output : 'digit_test_resources.h',
-    command : [glib_compile_resources,
+    command : ['glib-compile-resources',
                compiler_type,
                '--target=@OUTPUT@',
                '--sourcedir=' + meson.current_source_dir(),
@@ -744,11 +744,11 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
 
   ld = find_program('ld', required : false)
 
-  if build_machine.system() == 'linux' and objcopy.found() and objcopy_supports_add_symbol and ld.found()
+  if not meson.is_cross_build()
     test_gresource_binary = custom_target('test5.gresource',
       input : 'test5.gresource.xml',
       output : 'test5.gresource',
-      command : [glib_compile_resources,
+      command : ['glib-compile-resources',
                  compiler_type,
                  '--target=@OUTPUT@',
                  '--sourcedir=' + meson.current_source_dir(),
@@ -762,7 +762,7 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
     test_resources_binary_c = custom_target('test_resources_binary.c',
       input : 'test5.gresource.xml',
       output : 'test_resources_binary.c',
-      command : [glib_compile_resources,
+      command : ['glib-compile-resources',
                  compiler_type,
                  '--target=@OUTPUT@',
                  '--sourcedir=' + meson.current_source_dir(),
