From 99caee2819afc0278ef95ea0960f34d1f84541bf Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Fri, 3 Aug 2018 10:15:46 +0200 Subject: [PATCH] build: only test for broken ip_mreq_source on Android. Fixes #1472 7efd76dd6796f8 added these configure time tests to work around a bug with older Android. Since the test didn't take Windows into account it wrongfully applied the workaround on Windows too, breaking the build. With meson this wasn't an issue since the check is skipped on Windows there and our CI didn't catch this issue. Change the test to run on Android only for meson and autotools. This also makes it clear that the test+code can be dropped again if we stop supporting older Android versions at some point. --- configure.ac | 30 ++++++++++++++++-------------- gio/meson.build | 6 +++++- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/configure.ac b/configure.ac index 11fde900f..3fd519ecd 100644 --- a/configure.ac +++ b/configure.ac @@ -922,20 +922,22 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM( AC_MSG_RESULT(no) ]) -AC_MSG_CHECKING([if ip_mreq_source.imr_interface has s_addr member]) -AC_COMPILE_IFELSE([AC_LANG_PROGRAM( - [[ - #include - ]], - [[ - struct ip_mreq_source mc_req_src; - mc_req_src.imr_interface.s_addr = 0; - ]])], [ - AC_MSG_RESULT(yes) - ], [ - AC_MSG_RESULT(no) - AC_DEFINE(BROKEN_IP_MREQ_SOURCE_STRUCT, 1, [struct ip_mreq_source definition is broken on Android NDK <= r16]) -]) +# See https://bugzilla.gnome.org/show_bug.cgi?id=740791 +AS_IF([test $glib_native_android = yes], [ + AC_MSG_CHECKING([if ip_mreq_source.imr_interface has s_addr member]) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM( + [[ + #include + ]], + [[ + struct ip_mreq_source mc_req_src; + mc_req_src.imr_interface.s_addr = 0; + ]])], [ + AC_MSG_RESULT(yes) + ], [ + AC_MSG_RESULT(no) + AC_DEFINE(BROKEN_IP_MREQ_SOURCE_STRUCT, 1, [struct ip_mreq_source definition is broken on Android NDK <= r16]) + ])]) AS_IF([test $glib_native_win32 = yes], [ # in the Windows SDK and in mingw-w64 has wrappers for diff --git a/gio/meson.build b/gio/meson.build index a6af822b5..4b2c8f2ca 100644 --- a/gio/meson.build +++ b/gio/meson.build @@ -152,6 +152,11 @@ if host_system != 'windows' glib_conf.set('HAVE_SIOCGIFADDR', '/**/') endif +endif + +if host_system.contains('android') + # struct ip_mreq_source definition is broken on Android NDK <= r16 + # See https://bugzilla.gnome.org/show_bug.cgi?id=740791 if not cc.compiles('''#include int main(int argc, char ** argv) { struct ip_mreq_source mc_req_src; @@ -161,7 +166,6 @@ if host_system != 'windows' name : 'ip_mreq_source.imr_interface has s_addr member') glib_conf.set('BROKEN_IP_MREQ_SOURCE_STRUCT', 1) endif - endif gnetworking_h_conf.set('WSPIAPI_INCLUDE', gnetworking_h_wspiapi_include)