summaryrefslogtreecommitdiffstats
path: root/mkspecs/features/android/default_pre.prf
blob: 9f90dcb3917c2c8f8a35cec124bc17ee67f26209 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
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