diff --git a/.gitignore b/.gitignore index 306a5b23e7..02709f3f3a 100644 --- a/.gitignore +++ b/.gitignore @@ -47,20 +47,18 @@ PPSSPPControls.dat # Qt Linguist files *.qm -#Android stuff +# Gradle/Android Studio +.gradle .idea -android/.idea +*.iml +build +build.ios Logs Memstick memstick Cheats -bin -gen -libs -obj -build*/ /git-version.cpp .pspsh.hist diff --git a/.travis.sh b/.travis.sh index 6113d3497f..d04ba935f9 100644 --- a/.travis.sh +++ b/.travis.sh @@ -119,6 +119,10 @@ travis_script() { pushd android ./ab.sh -j2 APP_ABI=$APP_ABI popd + +# When we can get this to work... +# chmod +x gradlew +# ./gradlew assembleRelease fi if [ "$PPSSPP_BUILD_TYPE" = "iOS" ]; then ./b.sh --ios diff --git a/CMakeLists.txt b/CMakeLists.txt index f3da2b4056..e1ffb152ad 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,7 +9,6 @@ project(PPSSPP) enable_language(ASM) list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/Modules) -add_definitions(-DPPSSPP) add_definitions(-D__STDC_CONSTANT_MACROS) # Of the CMake platforms, we only support Vulkan on Android and Windows. @@ -50,8 +49,10 @@ include(ccache) # Remove soon? set(USE_FFMPEG ON) -if(ARM OR SIMULATOR) - set(USING_EGL ON) +if(NOT ANDROID) + if(ARM OR SIMULATOR) + set(USING_EGL ON) + endif() endif() if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") @@ -168,21 +169,23 @@ if(X86_64) message("Generating for x86_64, ${CMAKE_BUILD_TYPE}") endif() if(ARM64) - message("Generating for ARMv8, ${CMAKE_BUILD_TYPE}") + message("Generating for ARMv8, ${CMAKE_BUILD_TYPE}") endif() - +message("hello") if(NOT MSVC) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") - if (NOT ANDROID) - set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g -D_DEBUG") - set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} -Os -D_NDEBUG") - set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -D_NDEBUG") - set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -O2 -g -D_NDEBUG") - set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -g -D_DEBUG") - set(CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL} -Os -D_NDEBUG") - set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3 -D_NDEBUG") - set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -O2 -g -D_NDEBUG") - endif() + if (NOT ANDROID) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") + set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g -D_DEBUG") + set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} -Os -D_NDEBUG") + set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -D_NDEBUG") + set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -O2 -g -D_NDEBUG") + set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -g -D_DEBUG") + set(CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL} -Os -D_NDEBUG") + set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3 -D_NDEBUG") + set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -O2 -g -D_NDEBUG") + else() + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11 -Wno-switch -Wno-uninitialized") + endif() #TODO: Remove this and include the file properly everywhere it makes sense # First step is too use the macros everywhere # Second step is to remove the compatibility defines @@ -192,6 +195,7 @@ if(NOT MSVC) # Disable some warnings add_definitions(-Wno-multichar) + add_definitions(-Wno-deprecated-register) # Don't compile with strict aliasing, we're not 100% aliasing-safe add_definitions(-fno-strict-aliasing) @@ -206,17 +210,19 @@ if(NOT MSVC) if(IOS) elseif(APPLE AND NOT CMAKE_CROSSCOMPILING) - # We want C++11, so target 10.7+ - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mmacosx-version-min=10.7") + # We want C++11, so target 10.7+ + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mmacosx-version-min=10.7") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mmacosx-version-min=10.7 -stdlib=libc++ -U__STRICT_ANSI__") set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++") - else() + elseif(NOT ANDROID) if (NOT CMAKE_C_COMPILER_ID STREQUAL "Intel" AND NOT CMAKE_C_COMPILER_ID STREQUAL "Clang") add_definitions(-Wno-psabi) endif() add_definitions(-D_XOPEN_SOURCE=700) add_definitions(-D_XOPEN_SOURCE_EXTENDED -D__BSD_VISIBLE=1) add_definitions(-D_LARGEFILE64_SOURCE=1 -D_FILE_OFFSET_BITS=64) + elseif(ANDROID) + add_definitions(-fsigned-char) endif() else() # Disable warnings about MS-specific _s variants of libc functions @@ -228,8 +234,10 @@ else() set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -D_NDEBUG") endif() +if(NOT ANDROID) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib") set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib") +endif() # This sets up the MSVC project dirs according to the physical project dirs macro(setup_target_project TargetName ProjectDir) @@ -287,7 +295,7 @@ if(NOT (X86 OR ARM OR MIPS)) set(CommonFake Common/FakeCPUDetect.cpp Common/FakeEmitter.h) - source_group(Fake FILES ${CommonFake}) + source_group(Fake FILES ${CommonFake}) endif() set(CommonWindows @@ -395,12 +403,12 @@ if(USE_FFMPEG) if(ANDROID) if(ARMV7) set(PLATFORM_ARCH "android/armv7") - elseif(ARM) - set(PLATFORM_ARCH "android/arm") + elseif(ARM64) + set(PLATFORM_ARCH "android/arm64") + elseif(X86_64) + set(PLATFORM_ARCH "android/x86_64") elseif(X86) set(PLATFORM_ARCH "android/x86") - else() - set(PLATFORM_ARCH "android/x86_64") endif() elseif(IOS) set(PLATFORM_ARCH "ios/universal") @@ -417,7 +425,7 @@ if(USE_FFMPEG) set(PLATFORM_ARCH "linux/mips32") elseif(CMAKE_SIZEOF_VOID_P EQUAL 8) set(PLATFORM_ARCH "linux/x86_64") - else() + elseif(X86) set(PLATFORM_ARCH "linux/x86") endif() elseif(WIN32) @@ -439,7 +447,7 @@ if(USE_FFMPEG) endif(USE_FFMPEG) find_package(ZLIB) -if(ZLIB_FOUND) +if(ZLIB_FOUND AND NOT ANDROID) include_directories(${ZLIB_INCLUDE_DIR}) add_definitions(-DSHARED_ZLIB) else() @@ -1569,6 +1577,8 @@ if(ANDROID) set(CoreExtraLibs -Wl,--gc-sections -Wl,--exclude-libs,ALL) endif() endif() + +set(CoreExtraLibs ${CoreExtraLibs} armips) set(GlslangLibs glslang OGLCompiler OSDependent SPIRV SPVRemapper) @@ -1773,9 +1783,10 @@ if (TargetBin) endif() # installs +if(NOT ANDROID) file(INSTALL ${NativeAssets} DESTINATION assets) file(INSTALL flash0 DESTINATION assets) - +endif() # packaging and code signing if(IOS) file(GLOB IOSAssets ios/assets/*.png) diff --git a/Common/MipsCPUDetect.cpp b/Common/MipsCPUDetect.cpp index 1841741599..5edb3ebe78 100644 --- a/Common/MipsCPUDetect.cpp +++ b/Common/MipsCPUDetect.cpp @@ -158,7 +158,7 @@ void CPUInfo::Detect() { // Set some defaults here HTT = false; -#ifdef PPSSPP_ARCH(MIPS64) +#if PPSSPP_ARCH(MIPS64) OS64bit = true; CPU64bit = true; Mode64bit = true; diff --git a/Core/MIPS/MIPSAsm.cpp b/Core/MIPS/MIPSAsm.cpp index 50f33e6ddf..19d6c938e1 100644 --- a/Core/MIPS/MIPSAsm.cpp +++ b/Core/MIPS/MIPSAsm.cpp @@ -8,6 +8,12 @@ #include "Common/CommonTypes.h" #if defined(_WIN32) || defined(__ANDROID__) +// Temporarily turned off on Android +#define USE_ARMIPS +#endif + + +#ifdef USE_ARMIPS // This has to be before basictypes to avoid a define conflict. #include "ext/armips/Core/Assembler.h" #endif @@ -27,7 +33,7 @@ std::wstring GetAssembleError() return errorText; } -#if defined(_WIN32) || defined(__ANDROID__) +#ifdef USE_ARMIPS class PspAssemblerFile: public AssemblerFile { public: @@ -38,8 +44,7 @@ public: bool open(bool onlyCheck) override{ return true; }; void close() override { }; bool isOpen() override { return true; }; - bool write(void* data, size_t length) override - { + bool write(void* data, size_t length) override { if (!Memory::IsValidAddress((u32)(address+length-1))) return false; @@ -55,8 +60,7 @@ public: int64_t getVirtualAddress() override { return address; }; int64_t getPhysicalAddress() override { return getVirtualAddress(); }; int64_t getHeaderSize() override { return 0; } - bool seekVirtual(int64_t virtualAddress) override - { + bool seekVirtual(int64_t virtualAddress) override { if (!Memory::IsValidAddress(virtualAddress)) return false; address = virtualAddress; @@ -72,7 +76,7 @@ private: bool MipsAssembleOpcode(const char* line, DebugInterface* cpu, u32 address) { -#if defined(_WIN32) || defined(__ANDROID__) +#ifdef USE_ARMIPS PspAssemblerFile file; StringList errors; @@ -108,4 +112,4 @@ bool MipsAssembleOpcode(const char* line, DebugInterface* cpu, u32 address) #endif } -} +} // namespace diff --git a/android/.gitignore b/android/.gitignore index 9cf56195f9..4aa0d52b74 100644 --- a/android/.gitignore +++ b/android/.gitignore @@ -1,5 +1,11 @@ +bin +gen +libs +obj +build*/ gen obj +.externalNativeBuild android.iml #ui_atlas.zim ui_atlas.zim.png diff --git a/android/build.gradle b/android/build.gradle new file mode 100644 index 0000000000..382178f57f --- /dev/null +++ b/android/build.gradle @@ -0,0 +1,87 @@ +apply plugin: 'com.android.application' + +android { + signingConfigs { + config { + } + } + compileSdkVersion 25 + buildToolsVersion '25.0.0' + defaultConfig { + applicationId 'org.ppsspp.ppsspp' + minSdkVersion 9 + targetSdkVersion 25 + ndk { + abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64' + } + signingConfig signingConfigs.config + } + buildTypes { + release { + minifyEnabled = false + signingConfig signingConfigs.config + } + debug { + minifyEnabled = false + jniDebuggable true + } + } + externalNativeBuild { + cmake { + path '../CMakeLists.txt' + } + } + sourceSets { + main { + manifest.srcFile 'AndroidManifest.xml' + res.srcDirs = ['res'] + java.srcDirs = ['src'] + aidl.srcDirs = ['src'] + resources.srcDirs = ['src'] + assets.srcDirs = [ + 'assets', + ] + jni.srcDirs = ['..'] + } + + } + productFlavors { + normal { + applicationId 'org.ppsspp.ppsspp' + signingConfig signingConfigs.config + externalNativeBuild { + cmake { + // Available arguments listed at https://developer.android.com/ndk/guides/cmake.html + arguments '-DANDROID=true', + '-DANDROID_PLATFORM=android-15', + '-DANDROID_TOOLCHAIN=clang', + '-DANDROID_CPP_FEATURES=', + '-DANDROID_STL=gnustl_static', + '-DANDROID_ARM_NEON=TRUE' + } + } + } + gold { + applicationId 'org.ppsspp.ppssppgold' + signingConfig signingConfigs.config + externalNativeBuild { + cmake { + // Available arguments listed at https://developer.android.com/ndk/guides/cmake.html + arguments '-DANDROID=true', + '-DANDROID_PLATFORM=android-15', + '-DANDROID_TOOLCHAIN=clang', + '-DANDROID_CPP_FEATURES=', + '-DANDROID_STL=gnustl_static', + '-DANDROID_ARM_NEON=TRUE', + '-DGOLD=TRUE' + } + } + } + } +} +afterEvaluate { + android.sourceSets.main.assets.getSrcDirs().each { println it } +} +dependencies { + compile project(':com.bda.controller') +} diff --git a/android/project.properties b/android/project.properties index f72b9716b3..8b8e6098e7 100644 --- a/android/project.properties +++ b/android/project.properties @@ -7,8 +7,6 @@ # "ant.properties", and override values to adapt the script to your # project structure. # -# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): -#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt # Project target. target=android-25 diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000000..c3ff3a0eb8 --- /dev/null +++ b/build.gradle @@ -0,0 +1,15 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. +buildscript { + repositories { + jcenter() + } + dependencies { + classpath 'com.android.tools.build:gradle:2.3.0' + } +} + +allprojects { + repositories { + jcenter() + } +} diff --git a/com.bda.controller/build.gradle b/com.bda.controller/build.gradle new file mode 100644 index 0000000000..6a92640775 --- /dev/null +++ b/com.bda.controller/build.gradle @@ -0,0 +1,2 @@ +configurations.maybeCreate("default") +artifacts.add("default", file('com.bda.controller.jar')) \ No newline at end of file diff --git a/android/libs/com.bda.controller.jar b/com.bda.controller/com.bda.controller.jar similarity index 100% rename from android/libs/com.bda.controller.jar rename to com.bda.controller/com.bda.controller.jar diff --git a/ext/cmake/armips/CMakeLists.txt b/ext/cmake/armips/CMakeLists.txt index 04a9786671..3a1689334a 100644 --- a/ext/cmake/armips/CMakeLists.txt +++ b/ext/cmake/armips/CMakeLists.txt @@ -16,6 +16,9 @@ endif() include_directories(${ARMIPS_PATH}) add_library(armips + ${ARMIPS_PATH}/stdafx.cpp + ${ARMIPS_PATH}/stdafx.h + ${ARMIPS_PATH}/Util/ByteArray.cpp ${ARMIPS_PATH}/Util/ByteArray.h ${ARMIPS_PATH}/Util/CRC.cpp diff --git a/ext/native/base/PCMain.cpp b/ext/native/base/PCMain.cpp index 4df0bfd434..0281f5a2b3 100644 --- a/ext/native/base/PCMain.cpp +++ b/ext/native/base/PCMain.cpp @@ -488,9 +488,7 @@ int main(int argc, char *argv[]) { if (mode & SDL_WINDOW_FULLSCREEN_DESKTOP) { pixel_xres = g_DesktopWidth; pixel_yres = g_DesktopHeight; -#ifdef PPSSPP g_Config.bFullScreen = true; -#endif } else { // set a sensible default resolution (2x) pixel_xres = 480 * 2 * set_scale; @@ -498,9 +496,7 @@ int main(int argc, char *argv[]) { if (portrait) { std::swap(pixel_xres, pixel_yres); } -#ifdef PPSSPP g_Config.bFullScreen = false; -#endif } set_dpi = 1.0f / set_dpi; @@ -547,9 +543,7 @@ int main(int argc, char *argv[]) { EGL_Init(); #endif -#ifdef PPSSPP SDL_SetWindowTitle(g_Screen, (app_name_nice + " " + PPSSPP_GIT_VERSION).c_str()); -#endif #ifdef MOBILE_DEVICE SDL_ShowCursor(SDL_DISABLE); diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000..13372aef5e Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000000..063599a2d7 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Mon Mar 13 14:55:51 CET 2017 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip diff --git a/gradlew b/gradlew new file mode 100755 index 0000000000..9d82f78915 --- /dev/null +++ b/gradlew @@ -0,0 +1,160 @@ +#!/usr/bin/env bash + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# 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 +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; +esac + +# 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 + +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" ] ; 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, switch paths to Windows format before running java +if $cygwin ; 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=$((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 + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000000..aec99730b4 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,90 @@ +@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 + +@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= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@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 init + +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 init + +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 + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +: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 %CMD_LINE_ARGS% + +: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/android/macshaders.sh b/macshaders.sh similarity index 100% rename from android/macshaders.sh rename to macshaders.sh diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000000..4402ed0f66 --- /dev/null +++ b/settings.gradle @@ -0,0 +1 @@ +include ':android', ':com.bda.controller'