naett.c

Tiny cross-platform HTTP / HTTPS client library in C.
git clone git://git.finwo.net/lib/naett.c
Log | Files | Refs | README | LICENSE

commit bc86814f6b3df8a32c996a2ade5960ad6e66ab1a
parent 1f813e5b867838b00ebf7107d87ce6410d5457fa
Author: Erik Agsjö <erik.agsjo@gmail.com>
Date:   Sun, 12 Dec 2021 22:31:28 +0100

Android test setup

Diffstat:
Atestrig/android/.gitignore | 19+++++++++++++++++++
Atestrig/android/app/build.gradle | 56++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Atestrig/android/app/src/androidTest/java/com/example/naett/NaettTests.java | 14++++++++++++++
Atestrig/android/app/src/main/AndroidManifest.xml | 29+++++++++++++++++++++++++++++
Atestrig/android/app/src/main/cpp/CMakeLists.txt | 40++++++++++++++++++++++++++++++++++++++++
Atestrig/android/app/src/main/cpp/jniglue.h | 115+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Atestrig/android/app/src/main/cpp/log.h | 14++++++++++++++
Atestrig/android/app/src/main/cpp/naettactivity.cpp | 98+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Atestrig/android/app/src/main/res/drawable/icon.png | 0
Atestrig/android/app/src/main/res/values/ic_launcher_background.xml | 5+++++
Atestrig/android/app/src/main/res/values/strings.xml | 4++++
Atestrig/android/build.gradle | 30++++++++++++++++++++++++++++++
Atestrig/android/gradle.properties | 3+++
Atestrig/android/gradle/wrapper/gradle-wrapper.jar | 0
Atestrig/android/gradle/wrapper/gradle-wrapper.properties | 5+++++
Atestrig/android/gradlew | 185+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Atestrig/android/gradlew.bat | 89+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Atestrig/android/settings.gradle | 11+++++++++++
18 files changed, 717 insertions(+), 0 deletions(-)

diff --git a/testrig/android/.gitignore b/testrig/android/.gitignore @@ -0,0 +1,19 @@ +# Ignore Gradle project-specific cache directory +.gradle + +# Ignore Gradle build output directory +build + +# macOS lint +.DS_Store + +# build temporaries +**/.cxx + +# Android studio lint +.idea +local.properties +*.iml + +.debug +skrot diff --git a/testrig/android/app/build.gradle b/testrig/android/app/build.gradle @@ -0,0 +1,56 @@ +plugins { + id 'com.android.application' +} + +android { + compileSdk 29 + ndkVersion '21.0.6113669' + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + defaultConfig { + applicationId 'com.example.naett' + minSdk 26 + targetSdk 29 + externalNativeBuild { + cmake { + arguments '-DANDROID_STL=c++_static', '-std=c++17' + } + } + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + } + buildTypes { + release { + minifyEnabled true + shrinkResources true + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + debug { + externalNativeBuild { + cmake { + cFlags '-g' + } + } + packagingOptions { + doNotStrip '**.so' + } + } + } + externalNativeBuild { + cmake { + // version '3.10.2' + path 'src/main/cpp/CMakeLists.txt' + } + } +} + +dependencies { + androidTestImplementation 'androidx.test:runner:1.4.0' + androidTestImplementation 'androidx.test:rules:1.4.0' +} + +task printAppID { + println("APPID:${android.defaultConfig.applicationId}") +} diff --git a/testrig/android/app/src/androidTest/java/com/example/naett/NaettTests.java b/testrig/android/app/src/androidTest/java/com/example/naett/NaettTests.java @@ -0,0 +1,14 @@ +package com.example.naett; + +import org.junit.Test; +import static org.junit.Assert.assertTrue; + +public class NaettTests { + @Test + public void naett_Test() { + System.loadLibrary("native-activity"); + assertTrue(runTests() != 0); + } + + private native int runTests(); +} diff --git a/testrig/android/app/src/main/AndroidManifest.xml b/testrig/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="utf-8"?> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="com.sedgelake.timogr" + android:versionCode="1" + android:versionName="1.0"> + + <uses-permission android:name="android.permission.INTERNET" /> + + <application + android:allowBackup="false" + android:fullBackupContent="false" + android:icon="@drawable/icon" + android:label="@string/app_name" + android:hasCode="true" + android:usesCleartextTraffic="true" + android:theme="@android:style/Theme.Black.NoTitleBar"> + + <activity android:name="android.app.NativeActivity" + android:label="@string/app_name"> + <meta-data android:name="android.app.lib_name" + android:value="native-activity" /> + <intent-filter> + <action android:name="android.intent.action.MAIN" /> + <category android:name="android.intent.category.LAUNCHER" /> + </intent-filter> + </activity> + </application> + +</manifest> diff --git a/testrig/android/app/src/main/cpp/CMakeLists.txt b/testrig/android/app/src/main/cpp/CMakeLists.txt @@ -0,0 +1,40 @@ +# +# Copyright (C) The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +cmake_minimum_required(VERSION 3.4.1) + +set(${CMAKE_C_FLAGS}, "${CMAKE_C_FLAGS}") +add_library(naett STATIC ../../../../../../naett.c ../../../../../test.c) + +# now build app's shared lib +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11 -Wall -Werror") + +# Export ANativeActivity_onCreate(), +# Refer to: https://github.com/android-ndk/ndk/issues/381. +set(CMAKE_SHARED_LINKER_FLAGS + "${CMAKE_SHARED_LINKER_FLAGS} -u ANativeActivity_onCreate") + +add_library(native-activity SHARED naettactivity.cpp) + +target_include_directories(native-activity PRIVATE ../../../../../../) + +# add lib dependencies +target_link_libraries(native-activity + naett + android + EGL + GLESv3 + log) diff --git a/testrig/android/app/src/main/cpp/jniglue.h b/testrig/android/app/src/main/cpp/jniglue.h @@ -0,0 +1,115 @@ +#ifndef JNIGLUE_H +#define JNIGLUE_H + +#include "log.h" + +class JNIGlue { + public: + JNIGlue(JavaVM* vm) { + vm->GetEnv((void**)&_env, JNI_VERSION_1_6); + _env->PushLocalFrame(100); + } + + ~JNIGlue() { + _env->PopLocalFrame(NULL); + } + + jobject callObjectMethod(jclass clazz, const char* method, const char* signature, jobject instance, ...) { + jmethodID methodID = _env->GetMethodID(clazz, method, signature); + va_list args; + va_start(args, instance); + jobject result = _env->CallObjectMethodV(instance, methodID, args); + va_end(args); + checkException(); + return result; + } + + jobject callObjectMethod(const char* className, const char* method, const char* signature, jobject instance, ...) { + jmethodID methodID = getMethod(className, method, signature); + va_list args; + va_start(args, instance); + jobject result = _env->CallObjectMethodV(instance, methodID, args); + va_end(args); + checkException(); + return result; + } + + int callIntMethod(const char* className, const char* method, const char* signature, jobject instance, ...) { + jmethodID methodID = getMethod(className, method, signature); + va_list args; + va_start(args, instance); + int result = _env->CallIntMethodV(instance, methodID, args); + va_end(args); + checkException(); + return result; + } + + void callVoidMethod(jobject instance, const char* method, const char* signature, ...) { + jclass clazz = _env->GetObjectClass(instance); + jmethodID methodID = _env->GetMethodID(clazz, method, signature); + va_list args; + va_start(args, signature); + _env->CallVoidMethodV(instance, methodID, args); + va_end(args); + checkException(); + } + + void callVoidMethod(const char* className, const char* method, const char* signature, jobject instance, ...) { + jmethodID methodID = getMethod(className, method, signature); + va_list args; + va_start(args, instance); + _env->CallVoidMethodV(instance, methodID, args); + va_end(args); + checkException(); + } + + void callStaticVoidMethod(jclass clazz, const char* method, const char* signature, ...) { + jmethodID methodID = _env->GetMethodID(clazz, method, signature); + va_list args; + va_start(args, signature); + _env->CallStaticVoidMethodV(clazz, methodID, args); + va_end(args); + checkException(); + } + + int getStaticIntField(const char* className, const char* fieldName) { + jclass clazz = _env->FindClass(className); + jfieldID fieldID = _env->GetStaticFieldID(clazz, fieldName, "I"); + return _env->GetStaticIntField(clazz, fieldID); + } + + void throwException(const char* message) { + jclass clazz = _env->FindClass("java/lang/Exception"); + _env->ThrowNew(clazz, message); + } + + private: + void checkException() { + if (_env->ExceptionCheck()) { + jthrowable ex = _env->ExceptionOccurred(); + _env->ExceptionClear(); + jclass clazz = _env->GetObjectClass(ex); + jmethodID getMessage = _env->GetMethodID(clazz, "getMessage", "()Ljava/lang/String;"); + jstring message = (jstring)_env->CallObjectMethod(ex, getMessage); + const char* messageChars = _env->GetStringUTFChars(message, NULL); + LOGE("JNI Exception: %s", messageChars); + _env->ReleaseStringUTFChars(message, messageChars); + } + } + + jmethodID getMethod(const char* className, const char* method, const char* signature) { + jclass clazz = _env->FindClass(className); + jmethodID methodID = _env->GetMethodID(clazz, method, signature); + return methodID; + } + + jfieldID getStaticField(const char* className, const char* fieldName, const char* signature) { + jclass clazz = _env->FindClass(className); + jfieldID fieldID = _env->GetStaticFieldID(clazz, fieldName, signature); + return fieldID; + } + + JNIEnv* _env; +}; + +#endif // JNIGLUE_H diff --git a/testrig/android/app/src/main/cpp/log.h b/testrig/android/app/src/main/cpp/log.h @@ -0,0 +1,14 @@ +#ifndef LOG_H +#define LOG_H + +#include <android/log.h> + +#ifndef NDEBUG +# define LOGD(...) ((void)__android_log_print(ANDROID_LOG_DEBUG, "timogr", __VA_ARGS__)) +#else +# define LOGD(...) ((void)0) +#endif +#define LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, "timogr", __VA_ARGS__)) +#define LOGE(...) ((void)__android_log_print(ANDROID_LOG_ERROR, "timogr", __VA_ARGS__)) + +#endif // LOG_H diff --git a/testrig/android/app/src/main/cpp/naettactivity.cpp b/testrig/android/app/src/main/cpp/naettactivity.cpp @@ -0,0 +1,98 @@ +#include <android/native_activity.h> + +#include "jniglue.h" +#include "log.h" +#include "naett.h" + +static void onStart(ANativeActivity* activity) { + LOGD("onStart"); +} + +static void onResume(ANativeActivity* activity) { + LOGD("onResume"); +} + +static void* onSaveInstanceState(ANativeActivity* activity, size_t* outSize) { + LOGD(__func__); + return NULL; +} + +static void onPause(ANativeActivity* activity) { + LOGD("onPause"); +} + +static void onStop(ANativeActivity* activity) { + LOGD("onStop"); +} + +static void onDestroy(ANativeActivity* activity) { + LOGD("onDestroy"); +} + +static void onWindowFocusChanged(ANativeActivity* activity, int focused) { +} + +static void onNativeWindowCreated(ANativeActivity* activity, ANativeWindow* window) { + LOGD("onNativeWindowCreated"); +} + +static void onNativeWindowDestroyed(ANativeActivity* activity, ANativeWindow* window) { + LOGD("onNativeWindowDestroyed"); +} + +static void onInputQueueCreated(ANativeActivity* activity, AInputQueue* queue) { + LOGD(__func__); +} + +static void onInputQueueDestroyed(ANativeActivity* activity, AInputQueue* queue) { + LOGD(__func__); +} + +static void onContentRectChanged(ANativeActivity* activity, const ARect* rect) { + LOGD(__func__); +} + +static void onConfigurationChanged(ANativeActivity* activity) { + LOGD(__func__); +} + +static void onLowMemory(ANativeActivity* activity) { + LOGD(__func__); +} + +JNIEXPORT +void ANativeActivity_onCreate(ANativeActivity* activity, void* savedState, size_t savedStateSize) { + LOGD("onCreate"); + activity->callbacks->onStart = onStart; + activity->callbacks->onResume = onResume; + activity->callbacks->onSaveInstanceState = onSaveInstanceState; + activity->callbacks->onPause = onPause; + activity->callbacks->onStop = onStop; + activity->callbacks->onDestroy = onDestroy; + activity->callbacks->onWindowFocusChanged = onWindowFocusChanged; + activity->callbacks->onNativeWindowCreated = onNativeWindowCreated; + activity->callbacks->onNativeWindowDestroyed = onNativeWindowDestroyed; + activity->callbacks->onInputQueueCreated = onInputQueueCreated; + activity->callbacks->onInputQueueDestroyed = onInputQueueDestroyed; + activity->callbacks->onContentRectChanged = onContentRectChanged; + activity->callbacks->onConfigurationChanged = onConfigurationChanged; + activity->callbacks->onLowMemory = onLowMemory; + activity->instance = 0; + + JNIEnv* env; + activity->vm->GetEnv((void**)&env, JNI_VERSION_1_6); +} + +extern "C" { + +int runTests(const char* endpoint); + +JNIEXPORT +int JNICALL Java_com_example_naett_NaettTests_runTests(JNIEnv* env, jobject obj) { + JavaVM* vm = nullptr; + env->GetJavaVM(&vm); + naettInit(vm); + return runTests("http://10.0.2.2:4711"); +} + +} diff --git a/testrig/android/app/src/main/res/drawable/icon.png b/testrig/android/app/src/main/res/drawable/icon.png Binary files differ. diff --git a/testrig/android/app/src/main/res/values/ic_launcher_background.xml b/testrig/android/app/src/main/res/values/ic_launcher_background.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <color name="ic_launcher_background">#FFFFFF</color> +</resources> +\ No newline at end of file diff --git a/testrig/android/app/src/main/res/values/strings.xml b/testrig/android/app/src/main/res/values/strings.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <string name="app_name">naett</string> +</resources> diff --git a/testrig/android/build.gradle b/testrig/android/build.gradle @@ -0,0 +1,30 @@ +/* + * This file was generated by the Gradle 'init' task. + * + * This is a general purpose Gradle build. + * Learn more about Gradle by exploring our samples at https://docs.gradle.org/6.8.1/samples + */ +buildscript { + + repositories { + google() + mavenCentral() + } + dependencies { + classpath "com.android.tools.build:gradle:7.0.3" + } +} + +allprojects { + repositories { + google() + mavenCentral() + } + + dependencies { + } +} + +task clean(type: Delete) { + delete rootProject.buildDir +} diff --git a/testrig/android/gradle.properties b/testrig/android/gradle.properties @@ -0,0 +1,3 @@ +android.enableJetifier=true +android.useAndroidX=true +org.gradle.jvmargs=-Xmx1536m diff --git a/testrig/android/gradle/wrapper/gradle-wrapper.jar b/testrig/android/gradle/wrapper/gradle-wrapper.jar Binary files differ. diff --git a/testrig/android/gradle/wrapper/gradle-wrapper.properties b/testrig/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-all.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/testrig/android/gradlew b/testrig/android/gradlew @@ -0,0 +1,185 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/testrig/android/gradlew.bat b/testrig/android/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/testrig/android/settings.gradle b/testrig/android/settings.gradle @@ -0,0 +1,11 @@ +/* + * This file was generated by the Gradle 'init' task. + * + * The settings file is used to specify which projects to include in your build. + * + * Detailed information about configuring a multi-project build in Gradle can be found + * in the user manual at https://docs.gradle.org/6.8.1/userguide/multi_project_builds.html + */ + +rootProject.name = 'naett' +include ':app'