mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-08-07 17:54:05 +02:00
build: only test for broken ip_mreq_source on Android. Fixes #1472
7efd76dd67
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.
This commit is contained in:
30
configure.ac
30
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 <netinet/in.h>
|
||||
]],
|
||||
[[
|
||||
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 <netinet/in.h>
|
||||
]],
|
||||
[[
|
||||
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], [
|
||||
# <wspiapi.h> in the Windows SDK and in mingw-w64 has wrappers for
|
||||
|
@@ -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 <netinet/in.h>
|
||||
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)
|
||||
|
Reference in New Issue
Block a user