+diff -u -r ../meson-0.41.2/mesonbuild/build.py ./mesonbuild/build.py
+--- ../meson-0.41.2/mesonbuild/build.py 2017-07-19 11:39:22.000000000 +0200
++++ ./mesonbuild/build.py 2017-07-29 00:28:05.082804622 +0200
+@@ -21,7 +21,7 @@
+ from .mesonlib import File, MesonException
+ from .mesonlib import flatten, typeslistify, stringlistify, classify_unity_sources
+ from .mesonlib import get_filenames_templates_dict, substitute_values
+-from .environment import for_windows, for_darwin, for_cygwin
++from .environment import for_windows, for_darwin, for_cygwin, for_android
+ from .compilers import is_object, clike_langs, sort_clike, lang_suffixes
+
+ known_basic_kwargs = {'install': True,
+@@ -1164,6 +1164,7 @@
+ if not hasattr(self, 'suffix'):
+ self.suffix = None
+ self.basic_filename_tpl = '{0.prefix}{0.name}.{0.suffix}'
++ self.is_cross = is_cross
+ self.determine_filenames(is_cross, environment)
+
+ def determine_filenames(self, is_cross, env):
+@@ -1272,25 +1273,26 @@
+
+ def process_kwargs(self, kwargs, environment):
+ super().process_kwargs(kwargs, environment)
+- # Shared library version
+- if 'version' in kwargs:
+- self.ltversion = kwargs['version']
+- if not isinstance(self.ltversion, str):
+- raise InvalidArguments('Shared library version needs to be a string, not ' + type(self.ltversion).__name__)
+- if not re.fullmatch(r'[0-9]+(\.[0-9]+){0,2}', self.ltversion):
+- raise InvalidArguments('Invalid Shared library version "{0}". Must be of the form X.Y.Z where all three are numbers. Y and Z are optional.'.format(self.ltversion))
+- # Try to extract/deduce the soversion
+- if 'soversion' in kwargs:
+- self.soversion = kwargs['soversion']
+- if isinstance(self.soversion, int):
+- self.soversion = str(self.soversion)
+- if not isinstance(self.soversion, str):
+- raise InvalidArguments('Shared library soversion is not a string or integer.')
+- elif self.ltversion:
+- # library version is defined, get the soversion from that
+- # We replicate what Autotools does here and take the first
+- # number of the version by default.
+- self.soversion = self.ltversion.split('.')[0]
++ if not for_android(self.is_cross, environment):
++ # Shared library version
++ if 'version' in kwargs:
++ self.ltversion = kwargs['version']
++ if not isinstance(self.ltversion, str):
++ raise InvalidArguments('Shared library version needs to be a string, not ' + type(self.ltversion).__name__)
++ if not re.fullmatch(r'[0-9]+(\.[0-9]+){0,2}', self.ltversion):
++ raise InvalidArguments('Invalid Shared library version "{0}". Must be of the form X.Y.Z where all three are numbers. Y and Z are optional.'.format(self.ltversion))
++ # Try to extract/deduce the soversion
++ if 'soversion' in kwargs:
++ self.soversion = kwargs['soversion']
++ if isinstance(self.soversion, int):
++ self.soversion = str(self.soversion)
++ if not isinstance(self.soversion, str):
++ raise InvalidArguments('Shared library soversion is not a string or integer.')
++ elif self.ltversion:
++ # library version is defined, get the soversion from that
++ # We replicate what Autotools does here and take the first
++ # number of the version by default.
++ self.soversion = self.ltversion.split('.')[0]
+ # Visual Studio module-definitions file
+ if 'vs_module_defs' in kwargs:
+ path = kwargs['vs_module_defs']
+diff -u -r ../meson-0.41.2/mesonbuild/environment.py ./mesonbuild/environment.py
+--- ../meson-0.41.2/mesonbuild/environment.py 2017-07-19 11:39:22.000000000 +0200
++++ ./mesonbuild/environment.py 2017-07-29 00:08:12.592115029 +0200
+@@ -212,6 +212,17 @@
+ return env.cross_info.config['host_machine']['system'] == 'darwin'
+ return False
+
++def for_android(is_cross, env):
++ """
++ Host machine is Android?
++
++ Note: 'host' is the machine on which compiled binaries will run
++ """
++ if not is_cross:
++ return mesonlib.is_android()
++ elif env.cross_info.has_host():
++ return env.cross_info.config['host_machine']['system'] == 'android'
++ return False
+
+ def search_version(text):
+ # Usually of the type 4.1.4 but compiler output may contain
+diff -u -r ../meson-0.41.2/mesonbuild/mesonlib.py ./mesonbuild/mesonlib.py
+--- ../meson-0.41.2/mesonbuild/mesonlib.py 2017-07-19 11:39:22.000000000 +0200
++++ ./mesonbuild/mesonlib.py 2017-07-29 00:08:27.543948195 +0200
+@@ -219,6 +219,12 @@
+ def is_linux():
+ return platform.system().lower() == 'linux'
+
++def is_android():
++ import sysconfig
++ # Taken from Lib/test/support/__init__.py of the python source:
++ _ANDROID_API_LEVEL = sysconfig.get_config_var('ANDROID_API_LEVEL')
++ return _ANDROID_API_LEVEL is not None and _ANDROID_API_LEVEL > 0
++
+ def is_windows():
+ platname = platform.system().lower()
+ return platname == 'windows' or 'mingw' in platname