diff options
-rw-r--r-- | share/qbs/imports/qbs/Probes/AndroidNdkProbe.qbs | 3 | ||||
-rw-r--r-- | share/qbs/modules/Android/ndk/ndk.qbs | 1 | ||||
-rw-r--r-- | share/qbs/modules/Android/sdk/sdk.qbs | 1 | ||||
-rw-r--r-- | tests/auto/blackbox/find/find-android.qbs | 1 | ||||
-rw-r--r-- | tests/auto/blackbox/testdata-java/android/teapot/teapot.qbs | 35 | ||||
-rw-r--r-- | tests/auto/blackbox/tst_blackboxjava.cpp | 4 |
6 files changed, 42 insertions, 3 deletions
diff --git a/share/qbs/imports/qbs/Probes/AndroidNdkProbe.qbs b/share/qbs/imports/qbs/Probes/AndroidNdkProbe.qbs index 4ef0e795a..82a60bccd 100644 --- a/share/qbs/imports/qbs/Probes/AndroidNdkProbe.qbs +++ b/share/qbs/imports/qbs/Probes/AndroidNdkProbe.qbs @@ -57,6 +57,7 @@ PathProbe { } // Outputs + property string samplesDir property var hostArch property stringList toolchains: [] property string ndkVersion @@ -74,6 +75,8 @@ PathProbe { for (j in platforms) { if (File.exists(FileInfo.joinPaths(allPaths[i], "prebuilt", platforms[j]))) { path = allPaths[i]; + if (File.exists(FileInfo.joinPaths(path, "samples"))) + samplesDir = FileInfo.joinPaths(path, "samples"); // removed in r11 hostArch = platforms[j]; toolchains = File.directoryEntries(FileInfo.joinPaths(path, "toolchains"), File.Dirs | File.NoDotAndDotDot); diff --git a/share/qbs/modules/Android/ndk/ndk.qbs b/share/qbs/modules/Android/ndk/ndk.qbs index 3063fcf29..aee0b30ba 100644 --- a/share/qbs/modules/Android/ndk/ndk.qbs +++ b/share/qbs/modules/Android/ndk/ndk.qbs @@ -70,6 +70,7 @@ Module { property string hostArch: ndkProbe.hostArch property string ndkDir: ndkProbe.path + property string ndkSamplesDir: ndkProbe.samplesDir property string platform: "android-9" property bool useUnifiedHeaders: Utilities.versionCompare(version, "14") >= 0 diff --git a/share/qbs/modules/Android/sdk/sdk.qbs b/share/qbs/modules/Android/sdk/sdk.qbs index d07c2778f..bca52a203 100644 --- a/share/qbs/modules/Android/sdk/sdk.qbs +++ b/share/qbs/modules/Android/sdk/sdk.qbs @@ -51,6 +51,7 @@ Module { property path sdkDir: sdkProbe.path property path ndkDir: ndkProbe.path + property path ndkSamplesDir: ndkProbe.samplesDir property string buildToolsVersion: sdkProbe.buildToolsVersion property var buildToolsVersionParts: buildToolsVersion ? buildToolsVersion.split('.').map(function(item) { return parseInt(item, 10); }) : [] property int buildToolsVersionMajor: buildToolsVersionParts[0] diff --git a/tests/auto/blackbox/find/find-android.qbs b/tests/auto/blackbox/find/find-android.qbs index 7b4ac159b..23c8b2f91 100644 --- a/tests/auto/blackbox/find/find-android.qbs +++ b/tests/auto/blackbox/find/find-android.qbs @@ -24,6 +24,7 @@ Product { if (product.moduleProperty("Android.ndk", "present")) { tools["ndk"] = product.moduleProperty("Android.ndk", "ndkDir"); + tools["ndk-samples"] = product.Android.ndk.ndkSamplesDir; } var tf; diff --git a/tests/auto/blackbox/testdata-java/android/teapot/teapot.qbs b/tests/auto/blackbox/testdata-java/android/teapot/teapot.qbs index dbacef92d..ff3077335 100644 --- a/tests/auto/blackbox/testdata-java/android/teapot/teapot.qbs +++ b/tests/auto/blackbox/testdata-java/android/teapot/teapot.qbs @@ -1,4 +1,5 @@ import qbs +import qbs.File Project { minimumQbsVersion: qbs.version @@ -62,9 +63,24 @@ Project { Depends { name: "native-glue" } Depends { name: "ndk-helper" } + Probe { + id: teapotProbeJni + property string samplesDir: Android.ndk.ndkSamplesDir + property string jniDir + configure: { + var paths = ["/teapots/classic-teapot/src/main/cpp/", "/Teapot/app/src/main/jni/"]; + for (var i = 0; i < paths.length; ++i) { + if (File.exists(samplesDir + paths[i])) { + jniDir = samplesDir + paths[i]; + break; + } + } + } + } + Group { name: "C++ sources" - prefix: Android.ndk.ndkDir + "/samples/Teapot/app/src/main/jni/" + prefix: teapotProbeJni.jniDir files: [ "TeapotNativeActivity.cpp", "TeapotRenderer.cpp", @@ -81,8 +97,23 @@ Project { } AndroidApk { + Probe { + id: teapotProbe + property string samplesDir: Android.sdk.ndkSamplesDir + property string dir + configure: { + var paths = ["/teapots/classic-teapot/src/main", "/Teapot/app/src/main"]; + for (var i = 0; i < paths.length; ++i) { + if (File.exists(samplesDir + paths[i])) { + dir = samplesDir + paths[i]; + break; + } + } + } + } + name: "com.sample.teapot" - sourceSetDir: Android.sdk.ndkDir + "/samples/Teapot/app/src/main" + sourceSetDir: teapotProbe.dir Depends { productTypes: ["android.nativelibrary"] } } } diff --git a/tests/auto/blackbox/tst_blackboxjava.cpp b/tests/auto/blackbox/tst_blackboxjava.cpp index 0dc7e6346..50c7dd5df 100644 --- a/tests/auto/blackbox/tst_blackboxjava.cpp +++ b/tests/auto/blackbox/tst_blackboxjava.cpp @@ -54,6 +54,7 @@ QMap<QString, QString> TestBlackboxJava::findAndroid(int *status) return QMap<QString, QString> { {"sdk", QDir::fromNativeSeparators(tools["sdk"].toString())}, {"ndk", QDir::fromNativeSeparators(tools["ndk"].toString())}, + {"ndk-samples", QDir::fromNativeSeparators(tools["ndk-samples"].toString())}, }; } @@ -71,8 +72,9 @@ void TestBlackboxJava::android() const auto androidPaths = findAndroid(&status); const auto ndkPath = androidPaths["ndk"]; + const auto ndkSamplesPath = androidPaths["ndk-samples"]; static const QStringList ndkSamplesDirs = QStringList() << "teapot" << "no-native"; - if (!ndkPath.isEmpty() && !QFileInfo(ndkPath + "/samples").isDir() + if (!ndkPath.isEmpty() && !QFileInfo(ndkSamplesPath).isDir() && ndkSamplesDirs.contains(projectDir)) QSKIP("NDK samples directory not present"); |