diff options
author | Jake Petroules <jake.petroules@qt.io> | 2017-05-26 19:22:47 -0700 |
---|---|---|
committer | Jake Petroules <jake.petroules@qt.io> | 2017-05-30 14:29:27 +0000 |
commit | a66281bec7dca8a0c733ecc4c61bc0415c0a3dfa (patch) | |
tree | 2c953a44e227c75429502302a13f88af1bf0be67 | |
parent | 784d3b062005d0b81ee8b6cd4fdfe680ee4a9a56 (diff) | |
download | qbs-a66281bec7dca8a0c733ecc4c61bc0415c0a3dfa.tar.gz |
Take Unified Headers into account with the Android NDK
[ChangeLog] Added support for Android NDK Unified Headers
Task-number: QBS-1109
Change-Id: If16e4eef826a684c9dd8b4bbd025b159636acbc7
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
-rw-r--r-- | share/qbs/modules/Android/ndk/ndk.qbs | 3 | ||||
-rw-r--r-- | share/qbs/modules/cpp/android-gcc.qbs | 27 |
2 files changed, 25 insertions, 5 deletions
diff --git a/share/qbs/modules/Android/ndk/ndk.qbs b/share/qbs/modules/Android/ndk/ndk.qbs index e22f01a83..3063fcf29 100644 --- a/share/qbs/modules/Android/ndk/ndk.qbs +++ b/share/qbs/modules/Android/ndk/ndk.qbs @@ -33,6 +33,7 @@ import qbs.File import qbs.FileInfo import qbs.ModUtils import qbs.Probes +import qbs.Utilities import "utils.js" as NdkUtils @@ -71,6 +72,8 @@ Module { property string ndkDir: ndkProbe.path property string platform: "android-9" + property bool useUnifiedHeaders: Utilities.versionCompare(version, "14") >= 0 + // Internal properties. property stringList availableToolchains: ndkProbe.toolchains diff --git a/share/qbs/modules/cpp/android-gcc.qbs b/share/qbs/modules/cpp/android-gcc.qbs index 34ef322b6..59df1cc25 100644 --- a/share/qbs/modules/cpp/android-gcc.qbs +++ b/share/qbs/modules/cpp/android-gcc.qbs @@ -89,11 +89,13 @@ LinuxGCC { toolchainDir, "prebuilt", Android.ndk.hostArch, "bin") + property string toolchainTriple: [targetAbi === "androideabi" ? "arm" : targetArch, + targetSystem, targetAbi].join("-") + toolchainPrefix: { if (qbs.toolchain && qbs.toolchain.contains("clang")) return undefined; - return [targetAbi === "androideabi" ? "arm" : targetArch, - targetSystem, targetAbi].join("-") + "-"; + return toolchainTriple + "-"; } machineType: { @@ -138,6 +140,10 @@ LinuxGCC { } systemIncludePaths: { var includes = []; + if (Android.ndk.useUnifiedHeaders) { + // Might not be needed with Clang in a future NDK release + includes.push(FileInfo.joinPaths(sysroot, "usr", "include", toolchainTriple)); + } if (Android.ndk.appStl === "system") { includes.push(FileInfo.joinPaths(cxxStlBaseDir, "system", "include")); } else if (Android.ndk.appStl.startsWith("gabi++")) { @@ -154,9 +160,20 @@ LinuxGCC { } return includes; } - defines: ["ANDROID"] - sysroot: FileInfo.joinPaths(Android.ndk.ndkDir, "platforms", Android.ndk.platform, - "arch-" + NdkUtils.abiNameToDirName(Android.ndk.abi)) + defines: { + var list = ["ANDROID"]; + if (Android.ndk.useUnifiedHeaders) { + // Might be superseded by an -mandroid-version or similar Clang compiler flag in future + list.push("__ANDROID_API__=" + Android.ndk.platformVersion); + } + return list; + } + syslibroot: FileInfo.joinPaths(Android.ndk.ndkDir, "platforms", + Android.ndk.platform, "arch-" + + NdkUtils.abiNameToDirName(Android.ndk.abi)) + sysroot: !Android.ndk.useUnifiedHeaders + ? syslibroot + : FileInfo.joinPaths(Android.ndk.ndkDir, "sysroot") targetArch: { switch (qbs.architecture) { |