From f8343e9efc640a50c9b4d082e6b29bed6791b49a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Rydg=C3=A5rd?= Date: Mon, 13 Mar 2017 23:45:25 +0100 Subject: [PATCH] Add Gradle build. This time, we don't remove the old build system and we don't switch Travis. --- .gitignore | 12 +- .travis.sh | 4 + CMakeLists.txt | 65 ++++--- Common/MipsCPUDetect.cpp | 2 +- Core/MIPS/MIPSAsm.cpp | 18 +- android/.gitignore | 6 + android/build.gradle | 87 ++++++++++ android/project.properties | 2 - build.gradle | 15 ++ com.bda.controller/build.gradle | 2 + .../com.bda.controller.jar | Bin ext/cmake/armips/CMakeLists.txt | 3 + ext/native/base/PCMain.cpp | 6 - gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 53636 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 160 ++++++++++++++++++ gradlew.bat | 90 ++++++++++ android/macshaders.sh => macshaders.sh | 0 settings.gradle | 1 + 19 files changed, 429 insertions(+), 50 deletions(-) create mode 100644 android/build.gradle create mode 100644 build.gradle create mode 100644 com.bda.controller/build.gradle rename {android/libs => com.bda.controller}/com.bda.controller.jar (100%) create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100755 gradlew create mode 100644 gradlew.bat rename android/macshaders.sh => macshaders.sh (100%) create mode 100644 settings.gradle 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 0000000000000000000000000000000000000000..13372aef5e24af05341d49695ee84e5f9b594659 GIT binary patch literal 53636 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

6wH6mKJv6+^~l# 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 \(.*\)$'` + 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'