load(default_pre) build_pass:armeabi-v7a { QT_ARCH = armeabi-v7a } else:build_pass:arm64-v8a { QT_ARCH = arm64-v8a } else:build_pass:x86 { QT_ARCH = x86 } else:build_pass:x86_64 { QT_ARCH = x86_64 } else:count(ALL_ANDROID_ABIS, 1) { QT_ARCH = $$ALL_ANDROID_ABIS CONFIG += single_android_abi $$QT_ARCH } else { # default architecture QT_ARCH = arm64-v8a } DEFAULT_ANDROID_TARGET_ARCH=$${QT_ARCH} ANDROID_TARGET_ARCH = $$(ANDROID_TARGET_ARCH) isEmpty(ANDROID_TARGET_ARCH): ANDROID_TARGET_ARCH = $$DEFAULT_ANDROID_TARGET_ARCH # Follow https://android.googlesource.com/platform/ndk/+/ndk-release-r20/docs/BuildSystemMaintainers.md equals(ANDROID_TARGET_ARCH, armeabi-v7a): \ QMAKE_CFLAGS = -target armv7a-linux-androideabi$$replace(ANDROID_PLATFORM, "android-", "") else: equals(ANDROID_TARGET_ARCH, arm64-v8a): \ QMAKE_CFLAGS = -target aarch64-linux-android$$replace(ANDROID_PLATFORM, "android-", "") else: equals(ANDROID_TARGET_ARCH, x86): \ QMAKE_CFLAGS = -target i686-linux-android$$replace(ANDROID_PLATFORM, "android-", "") -mstackrealign else: equals(ANDROID_TARGET_ARCH, x86_64): \ QMAKE_CFLAGS = -target x86_64-linux-android$$replace(ANDROID_PLATFORM, "android-", "") QMAKE_CFLAGS += -fno-limit-debug-info QMAKE_LINK = $$QMAKE_CXX $$QMAKE_CFLAGS equals(ANDROID_TARGET_ARCH, armeabi-v7a): \ QMAKE_LINK += -Wl,--exclude-libs,libunwind.a ANDROID_STDCPP_PATH = $$NDK_LLVM_PATH/sysroot/usr/lib/ # -fstack-protector-strong offers good protection against stack smashing attacks. # It is (currently) enabled only on Android because we know for sure that Android compilers supports it QMAKE_CFLAGS += -fPIC -fstack-protector-strong -DANDROID equals(ANDROID_TARGET_ARCH, armeabi-v7a) | equals(ANDROID_TARGET_ARCH, armeabi) { CONFIG += optimize_size QMAKE_CFLAGS_DEBUG = -g -marm -O0 QMAKE_CFLAGS_RELEASE += -mthumb QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -mthumb } QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO = $$QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO QMAKE_CXXFLAGS = $$QMAKE_CFLAGS QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD QMAKE_LIBS_EGL = -lEGL QMAKE_LIBS_OPENGL_ES2 = -lGLESv2 QMAKE_STRIP = #$${CROSS_COMPILE}strip equals(QT_ARCH, x86): CROSS_COMPILE = $$NDK_LLVM_PATH/bin/i686-linux-android- else: equals(QT_ARCH, x86_64): CROSS_COMPILE = $$NDK_LLVM_PATH/bin/x86_64-linux-android- else: equals(QT_ARCH, arm64-v8a): CROSS_COMPILE = $$NDK_LLVM_PATH/bin/aarch64-linux-android- else: CROSS_COMPILE = $$NDK_LLVM_PATH/bin/arm-linux-androideabi- QMAKE_RANLIB = $${CROSS_COMPILE}ranlib QMAKE_LINK_SHLIB = $$QMAKE_LINK QMAKE_LFLAGS = QMAKE_LIBS_PRIVATE = -llog -lz -lm -ldl -lc