diff --git a/README.md b/README.md index 6e4e78784b..0299786881 100644 --- a/README.md +++ b/README.md @@ -194,9 +194,9 @@ These commands show how to compile wheels for the supported Android ABIs: ```bash export ANDROID_SDK_ROOT=/home/rdb/local/android python3.8 makepanda/makepanda.py --everything --outputdir built-droid-arm64 --arch arm64 --target android-21 --threads 6 --wheel -python3.8 makepanda/makepanda.py --everything --outputdir built-droid-armv7a --arch armv7a --target android-19 --threads 6 --wheel +python3.8 makepanda/makepanda.py --everything --outputdir built-droid-armv7a --arch arm --target android-21 --threads 6 --wheel python3.8 makepanda/makepanda.py --everything --outputdir built-droid-x86_64 --arch x86_64 --target android-21 --threads 6 --wheel -python3.8 makepanda/makepanda.py --everything --outputdir built-droid-x86 --arch x86 --target android-19 --threads 6 --wheel +python3.8 makepanda/makepanda.py --everything --outputdir built-droid-x86 --arch x86 --target android-21 --threads 6 --wheel ``` It is now possible to use the generated wheels with `build_apps`, as explained diff --git a/makepanda/makepanda.py b/makepanda/makepanda.py index 0faf692e58..f04bb08f1c 100755 --- a/makepanda/makepanda.py +++ b/makepanda/makepanda.py @@ -485,6 +485,8 @@ elif not CrossCompiling(): else: if target_arch == 'amd64': target_arch = 'x86_64' + if target_arch == 'arm' and target == 'android': + target_arch = 'armv7a' PLATFORM = '{0}-{1}'.format(target, target_arch) @@ -1371,10 +1373,10 @@ def CompileCxx(obj,src,opts): cmd += ' -gcc-toolchain ' + SDK["ANDROID_GCC_TOOLCHAIN"].replace('\\', '/') cmd += ' -ffunction-sections -funwind-tables' cmd += ' -target ' + SDK["ANDROID_TRIPLE"] - if arch == 'armv7a': + if arch in ('armv7a', 'arm'): cmd += ' -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16' - elif arch == 'arm': - cmd += ' -march=armv5te -mtune=xscale -msoft-float' + #elif arch == 'arm': + # cmd += ' -march=armv5te -mtune=xscale -msoft-float' elif arch == 'mips': cmd += ' -mips32' elif arch == 'mips64': @@ -1897,7 +1899,7 @@ def CompileLink(dll, obj, opts): cmd += ' -gcc-toolchain ' + SDK["ANDROID_GCC_TOOLCHAIN"].replace('\\', '/') cmd += " -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now" cmd += ' -target ' + SDK["ANDROID_TRIPLE"] - if arch == 'armv7a': + if arch in ('armv7a', 'arm'): cmd += " -march=armv7-a -Wl,--fix-cortex-a8" elif arch == 'mips': cmd += ' -mips32' diff --git a/makepanda/makepandacore.py b/makepanda/makepandacore.py index edafc82454..235385f857 100644 --- a/makepanda/makepandacore.py +++ b/makepanda/makepandacore.py @@ -357,11 +357,11 @@ def SetTarget(target, arch=None): elif target == 'android' or target.startswith('android-'): if arch is None: - # If compiling on Android, default to same architecture. Otherwise, arm. + # If compiling on Android, default to same architecture. if host == 'android': arch = host_arch else: - arch = 'armv7a' + exit('Specify an Android architecture using --arch') if arch == 'aarch64': arch = 'arm64' @@ -371,12 +371,9 @@ def SetTarget(target, arch=None): target, _, api = target.partition('-') if api: ANDROID_API = int(api) - elif arch in ('mips64', 'arm64', 'x86_64'): - # 64-bit platforms were introduced in Android 21. - ANDROID_API = 21 else: # Default to the lowest API level still supported by Google. - ANDROID_API = 19 + ANDROID_API = 21 # Determine the prefix for our gcc tools, eg. arm-linux-androideabi-gcc global ANDROID_ABI, ANDROID_TRIPLE @@ -1422,6 +1419,9 @@ def GetThirdpartyDir(): elif (target == 'android'): THIRDPARTYDIR = base + "/android-libs-%s/" % (target_arch) + if target_arch == 'armv7a' and not os.path.isdir(THIRDPARTYDIR): + THIRDPARTYDIR = base + "/android-libs-arm/" + elif (target == 'emscripten'): THIRDPARTYDIR = base + "/emscripten-libs/"