From: guanghuafan Date: Fri, 28 Apr 2017 19:02:24 +0000 (-0700) Subject: android: Update gradle layer build to use cmake X-Git-Tag: upstream/1.1.92~1153 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=cfc0770a2370052d5949a94a4cc3dac9807b230f;p=platform%2Fupstream%2FVulkan-Tools.git android: Update gradle layer build to use cmake --- diff --git a/build-android/android-generate.bat b/build-android/android-generate.bat index 509fe9b..f54a173 100644 --- a/build-android/android-generate.bat +++ b/build-android/android-generate.bat @@ -33,30 +33,3 @@ py -3 ../../../scripts/lvl_genvk.py -registry ../../../scripts/vk.xml unique_obj py -3 ../../../scripts/lvl_genvk.py -registry ../../../scripts/vk.xml vk_layer_dispatch_table.h cd ../.. -copy /Y ..\layers\vk_layer_config.cpp generated\common\ -copy /Y ..\layers\vk_layer_extension_utils.cpp generated\common\ -copy /Y ..\layers\vk_layer_utils.cpp generated\common\ -copy /Y ..\layers\vk_format_utils.cpp generated\common\ -copy /Y ..\layers\vk_layer_table.cpp generated\common\ -copy /Y ..\layers\descriptor_sets.cpp generated\common\ -copy /Y ..\layers\buffer_validation.cpp generated\common\ - -REM create build-script root directory -mkdir generated\gradle-build -cd generated\gradle-build -mkdir core_validation object_tracker parameter_validation swapchain threading unique_objects -cd ..\.. -mkdir generated\layer-src -cd generated\layer-src -mkdir core_validation object_tracker parameter_validation swapchain threading unique_objects -cd ..\.. -xcopy /s gradle-templates\* generated\gradle-build\ -for %%G in (core_validation object_tracker parameter_validation swapchain threading unique_objects) Do ( - copy ..\layers\%%G.cpp generated\layer-src\%%G - echo apply from: "../common.gradle" > generated\gradle-build\%%G\build.gradle -) -copy generated\common\descriptor_sets.cpp generated\layer-src\core_validation\descriptor_sets.cpp -copy generated\common\buffer_validation.cpp generated\layer-src\core_validation\buffer_validation.cpp -copy generated\include\vk_safe_struct.cpp generated\layer-src\core_validation\vk_safe_struct.cpp -move generated\include\vk_safe_struct.cpp generated\layer-src\unique_objects\vk_safe_struct.cpp -echo apply from: "../common.gradle" > generated\gradle-build\unique_objects\build.gradle diff --git a/build-android/android-generate.sh b/build-android/android-generate.sh index 336412b..c0c05e4 100755 --- a/build-android/android-generate.sh +++ b/build-android/android-generate.sh @@ -35,40 +35,4 @@ mkdir -p generated/include generated/common ( cd generated/include; python3 ../../../scripts/lvl_genvk.py -registry ../../../scripts/vk.xml vk_loader_extensions.c ) ( cd generated/include; python3 ../../../scripts/lvl_genvk.py -registry ../../../scripts/vk.xml vk_layer_dispatch_table.h ) -cp -f ../layers/vk_layer_config.cpp generated/common/ -cp -f ../layers/vk_layer_extension_utils.cpp generated/common/ -cp -f ../layers/vk_layer_utils.cpp generated/common/ -cp -f ../layers/vk_format_utils.cpp generated/common/ -cp -f ../layers/vk_layer_table.cpp generated/common/ -cp -f ../layers/descriptor_sets.cpp generated/common/ -cp -f ../layers/buffer_validation.cpp generated/common/ - -# layer names and their original source files directory -# 1 to 1 correspondence -- one layer one source file; additional files are copied -# at fixup step -declare layers=(core_validation object_tracker parameter_validation swapchain threading unique_objects) -declare src_dirs=(../layers ../layers ../layers ../layers ../layers ../layers) - -SRC_ROOT=generated/layer-src -BUILD_ROOT=generated/gradle-build - -# create build-script root directory -cp -fr gradle-templates generated/gradle-build -for ((i = 0; i < ${#layers[@]}; i++)) -do -# copy the sources - mkdir -p ${SRC_ROOT}/${layers[i]} - cp -f ${src_dirs[i]}/${layers[i]}.cpp ${SRC_ROOT}/${layers[i]}/ - -# copy build scripts - mkdir -p ${BUILD_ROOT}/${layers[i]} - echo "apply from: \"../common.gradle\"" > ${BUILD_ROOT}/${layers[i]}/build.gradle -done - -# fixup - unique_objects need one more file -cp generated/common/descriptor_sets.cpp ${SRC_ROOT}/core_validation/descriptor_sets.cpp -cp generated/common/buffer_validation.cpp ${SRC_ROOT}/core_validation/buffer_validation.cpp -cp generated/include/vk_safe_struct.cpp ${SRC_ROOT}/core_validation/vk_safe_struct.cpp -mv generated/include/vk_safe_struct.cpp ${SRC_ROOT}/unique_objects/vk_safe_struct.cpp - exit 0 diff --git a/build-android/cmake/README.md b/build-android/cmake/README.md new file mode 100644 index 0000000..70f68cd --- /dev/null +++ b/build-android/cmake/README.md @@ -0,0 +1,40 @@ +Build Validation Layers with Android CMake +========================================= +Gradle's CMake library project in this directory builds layers into AAR; +the project could be directly added into application's gradle projects + +Pre-requirements +---------------- +Build ShaderC binary +- Building from Github Repo source +1. cd android-build +2. ./update_external_sources_android.sh +3. ./android-generate.sh + +Extra Steps if building from NDK's source tree +``` + cd ${your ANDROID_NDK_ROOT}/sources/third_party/shaderc + ndk-build APP_ABI=armeabi-v7a APP_STL=gnustl_static NDK_TOOLCHAIN_VERSION=clang NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=Android.mk libshaderc_combined +``` + +Adding layer module into Android Studio application project +-------------------------------------------------------- +1. app's settings.gradle, add +```java + include ':layerLib' + project(':layerLib').projectDir = new File('/path/to/cmake/layerlib') +``` +2. app's build.gradle: +```java +dependencies { + // force debug layer lib for packing + compile project(path: ':layerlib', configuration: 'debug') +} +``` +BUILD_IN_NDK variable in layerlib/CMakeLists.txt could detect whether the source is +from NDK or github repo clone, and would configure the file paths accordingly + +Tested +----- + Build on Mac OS, Nexus 5X test phone. Equvilaent build scripts for Windows OS are at the same directory. + diff --git a/build-android/cmake/layerlib/CMakeLists.txt b/build-android/cmake/layerlib/CMakeLists.txt new file mode 100644 index 0000000..f7c27e8 --- /dev/null +++ b/build-android/cmake/layerlib/CMakeLists.txt @@ -0,0 +1,128 @@ +cmake_minimum_required(VERSION 3.4.1) + +# Validation layers could be built with code from +# github repo OR +# ndk's snapshot +# The file structure for glslang spir-V is different, adding BUILD_IN_NDK variable +set(BUILD_IN_NDK OFF) +if (CMAKE_CURRENT_SOURCE_DIR MATCHES "sources/third_party/vulkan/src") + set(BUILD_IN_NDK ON) +endif() + +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Werror \ + -Wno-unused-function -Wno-unused-const-variable \ + -Wno-c++98-compat-pedantic -DVK_PROTOTYPES \ + -DVK_USE_PLATFORM_ANDROID_KHR") + +if (BUILD_IN_NDK) + # NDK directory structure: + # $ANDROID_NDK/sources/third_party/ + # vulkan/src + # shaderc/third_party (for glslang & spirv-tools ) + # this build uses combined lib libshaderc.a for libSPIRV-Tools.a purpose + get_filename_component(SRC_DIR + "${ANDROID_NDK}/sources/third_party/vulkan/src" ABSOLUTE) + get_filename_component(EXTERNAL_DIR + "${SRC_DIR}/../../shaderc/third_party" ABSOLUTE) + get_filename_component(SPIRV_LIB + "${SRC_DIR}/../../shaderc/libs/${ANDROID_STL}/${ANDROID_ABI}/libshaderc.a" + ABSOLUTE) +else () + # github directory structure: + # ${SRC_DIR} + # ${SRC_DIR}/build-android/external (for glslang, spirv-tools & shaderc ) + get_filename_component(SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../.." ABSOLUTE) + set(EXTERNAL_DIR "${SRC_DIR}/build-android/external") + set(SPIRV_LIB + "${EXTERNAL_DIR}/shaderc/android_test/obj/local/${ANDROID_ABI}/libSPIRV-Tools.a") +endif() +set(COMMON_DIR "${SRC_DIR}/build-android/generated") + +set(CMAKE_CXX_clone "${CMAKE_CXX_FLAGS}") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DVK_USE_PLATFORM_ANDROID_KHR \ + -fvisibility=hidden") +include_directories(${SRC_DIR}/include + ${COMMON_DIR}/include + ${SRC_DIR}/layers + ${SRC_DIR}/loader) +add_library(layer_utils STATIC + ${SRC_DIR}/layers/vk_layer_config.cpp + ${SRC_DIR}/layers/vk_layer_extension_utils.cpp + ${SRC_DIR}/layers/vk_layer_utils.cpp + ${SRC_DIR}/layers/vk_format_utils.cpp) +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_clone}") + +# assume shaderc already built externally +add_library(SPIRV-Tools-prebuilt STATIC IMPORTED) +set_target_properties(SPIRV-Tools-prebuilt PROPERTIES IMPORTED_LOCATION + ${SPIRV_LIB}) + +# build core_validation layers which including shader validation +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DVK_USE_PLATFORM_ANDROID_KHR \ + -fvisibility=hidden") +add_library(VkLayer_core_validation SHARED + ${SRC_DIR}/layers/core_validation.cpp + ${SRC_DIR}/layers/descriptor_sets.cpp + ${SRC_DIR}/layers/buffer_validation.cpp + ${SRC_DIR}/layers/vk_layer_table.cpp) +target_include_directories(VkLayer_core_validation PRIVATE + ${SRC_DIR}/include + ${SRC_DIR}/layers + ${COMMON_DIR}/include + ${SRC_DIR}/loader + ${EXTERNAL_DIR}/glslang + ${EXTERNAL_DIR}/spirv-tools/include) +target_link_libraries(VkLayer_core_validation PRIVATE + log layer_utils SPIRV-Tools-prebuilt) + +add_library(VkLayer_parameter_validation SHARED + ${SRC_DIR}/layers/parameter_validation.cpp + ${SRC_DIR}/layers/vk_layer_table.cpp) +target_include_directories(VkLayer_parameter_validation PRIVATE + ${SRC_DIR}/include + ${COMMON_DIR}/include + ${SRC_DIR}/layers + ${SRC_DIR}/loader) +target_link_libraries(VkLayer_parameter_validation PRIVATE log layer_utils) + +add_library(VkLayer_object_tracker SHARED + ${SRC_DIR}/layers/object_tracker.cpp + ${SRC_DIR}/layers/vk_layer_table.cpp) +target_include_directories(VkLayer_object_tracker PRIVATE + ${SRC_DIR}/include + ${SRC_DIR}/layers + ${COMMON_DIR}/include + ${SRC_DIR}/loader) +target_link_libraries(VkLayer_object_tracker PRIVATE log layer_utils) + +add_library(VkLayer_threading SHARED + ${SRC_DIR}/layers/threading.cpp + ${SRC_DIR}/layers/vk_layer_table.cpp) +target_include_directories(VkLayer_threading PRIVATE + ${SRC_DIR}/include + ${SRC_DIR}/layers + ${COMMON_DIR}/include + ${SRC_DIR}/loader) +target_link_libraries(VkLayer_threading PRIVATE log layer_utils) + +add_library(VkLayer_unique_objects SHARED + ${SRC_DIR}/layers/unique_objects.cpp + ${SRC_DIR}/layers/vk_layer_table.cpp) +target_include_directories(VkLayer_unique_objects PRIVATE + ${SRC_DIR}/include + ${SRC_DIR}/layers + ${COMMON_DIR}/include + ${SRC_DIR}/loader) +target_link_libraries(VkLayer_unique_objects PRIVATE log layer_utils) + +add_library(VkLayer_swapchain SHARED + ${SRC_DIR}/layers/swapchain.cpp + ${SRC_DIR}/layers/vk_layer_table.cpp) +target_include_directories(VkLayer_swapchain PRIVATE + ${SRC_DIR}/include + ${SRC_DIR}/layers + ${COMMON_DIR}/include + ${SRC_DIR}/loader) +target_link_libraries(VkLayer_swapchain PRIVATE log layer_utils) + +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_clone}") diff --git a/build-android/cmake/layerlib/build.gradle b/build-android/cmake/layerlib/build.gradle new file mode 100644 index 0000000..efa8472 --- /dev/null +++ b/build-android/cmake/layerlib/build.gradle @@ -0,0 +1,39 @@ +apply plugin: 'com.android.library' + +android { + /* + * we are interested in only the debug version of layers, so ONLY publish debug version + * library, which will enforce building ONLY debug version, and packing only the debug + * version of layers. The document is at: + * https://developer.android.com/studio/build/build-variants.html + * http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Library-Publication + */ + publishNonDefault true + + compileSdkVersion 25 + buildToolsVersion "25.0.2" + + defaultConfig { + minSdkVersion 24 + targetSdkVersion 24 + versionCode 1 + versionName "1.0" + ndk.abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64' + externalNativeBuild { + cmake.arguments '-DANDROID_TOOLCHAIN=clang', + '-DANDROID_STL=gnustl_static', + '-DANDROID_PLATFORM=android-24' + } + } + externalNativeBuild { + cmake.path 'CMakeLists.txt' + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), + 'proguard-rules.pro' + } + } +} + diff --git a/build-android/cmake/layerlib/proguard-rules.pro b/build-android/cmake/layerlib/proguard-rules.pro new file mode 100644 index 0000000..b41fe70 --- /dev/null +++ b/build-android/cmake/layerlib/proguard-rules.pro @@ -0,0 +1,17 @@ +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in ${ANDROID_SDK}/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the proguardFiles +# directive in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} diff --git a/build-android/cmake/layerlib/src/main/AndroidManifest.xml b/build-android/cmake/layerlib/src/main/AndroidManifest.xml new file mode 100644 index 0000000..78c3704 --- /dev/null +++ b/build-android/cmake/layerlib/src/main/AndroidManifest.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/build-android/cmake/layerlib/src/main/res/values/strings.xml b/build-android/cmake/layerlib/src/main/res/values/strings.xml new file mode 100644 index 0000000..66f8389 --- /dev/null +++ b/build-android/cmake/layerlib/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + Layer Library + diff --git a/build-android/gradle-templates/README.md b/build-android/gradle-templates/README.md deleted file mode 100644 index b4f7d45..0000000 --- a/build-android/gradle-templates/README.md +++ /dev/null @@ -1,3 +0,0 @@ -#Validation Layers projects - - diff --git a/build-android/gradle-templates/build.gradle b/build-android/gradle-templates/build.gradle deleted file mode 100644 index c4a425b..0000000 --- a/build-android/gradle-templates/build.gradle +++ /dev/null @@ -1,22 +0,0 @@ -// 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-experimental:0.7.0-alpha1' - // NOTE: Do not place your application dependencies here; they belong - // in the individual module build.gradle files - } -} - -allprojects { - repositories { - jcenter() - } -} - -task clean(type: Delete) { - delete rootProject.buildDir -} diff --git a/build-android/gradle-templates/common.gradle b/build-android/gradle-templates/common.gradle deleted file mode 100644 index cedc1d7..0000000 --- a/build-android/gradle-templates/common.gradle +++ /dev/null @@ -1,83 +0,0 @@ -apply plugin: 'com.android.model.native' - -// To detect host operating system -import org.apache.tools.ant.taskdefs.condition.Os - -Properties properties = new Properties() -properties.load(project.rootProject.file('local.properties').newDataInputStream()) -def ndkDir = properties.getProperty('ndk.dir') - -model { - android { - compileSdkVersion = 23 - buildToolsVersion = "23.0.2" - - defaultConfig.with { - minSdkVersion.apiLevel = 22 - targetSdkVersion.apiLevel = 24 - versionCode = 1 - versionName = "0.0.1" - } - } - - android.ndk { - moduleName = "VkLayer_${project.name}" - - // This is a workaround for clang problems on Windows - // http://llvm.org/bugs/show_bug.cgi?id=27396 - if (Os.isFamily(Os.FAMILY_WINDOWS)) { - toolchain = "gcc" - } else { - toolchain = "clang" - cppFlags.addAll(["-Werror"]) - } - - stl = "gnustl_static" - ldLibs.addAll(["log", "android"]) - cppFlags.addAll(["-std=c++11", "-DVK_PROTOTYPES", "-Wall", - "-Wno-unused-function", "-Wno-unused-const-variable", - "-DVK_USE_PLATFORM_ANDROID_KHR"]) - cppFlags.addAll(["-I${file("../../../../layers")}".toString(), - "-I${file("../../../../include")}".toString(), - "-I${file("../../../../loader")}".toString(), - "-I${file("../../include")}".toString(), - "-I${file("../../../../external/glslang")}".toString()]) - } - - // Turn on hard float support in armeabi-v7a - android.abis { - create("armeabi-v7a") { - cppFlags.addAll(["-mhard-float", "-D_NDK_MATH_NO_SOFTFP=1", "-mfloat-abi=hard"]) - ldLibs.add("m_hard") - ldFlags.add("-Wl,--no-warn-mismatch") - } - } - - android.sources { - main { - jni { - source { - srcDir "../../layer-src/${project.name}" - srcDir '../../common' - - } - } - } - } - - android.buildTypes { - release { - ndk.with { - debuggable = true - } - minifyEnabled = false - } - } - android.productFlavors { - create ("all") { - ndk.abiFilters.addAll(["armeabi-v7a", 'arm64-v8a', - 'x86', 'x86_64']) - } - } -} - diff --git a/build-android/gradle-templates/gradle.properties b/build-android/gradle-templates/gradle.properties deleted file mode 100644 index 1d3591c..0000000 --- a/build-android/gradle-templates/gradle.properties +++ /dev/null @@ -1,18 +0,0 @@ -# Project-wide Gradle settings. - -# IDE (e.g. Android Studio) users: -# Gradle settings configured through the IDE *will override* -# any settings specified in this file. - -# For more details on how to configure your build environment visit -# http://www.gradle.org/docs/current/userguide/build_environment.html - -# Specifies the JVM arguments used for the daemon process. -# The setting is particularly useful for tweaking memory settings. -# Default value: -Xmx10248m -XX:MaxPermSize=256m -# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 - -# When configured, Gradle will run in incubating parallel mode. -# This option should only be used with decoupled projects. More details, visit -# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects -# org.gradle.parallel=true \ No newline at end of file diff --git a/build-android/gradle-templates/gradle/wrapper/gradle-wrapper.jar b/build-android/gradle-templates/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index 8c0fb64..0000000 Binary files a/build-android/gradle-templates/gradle/wrapper/gradle-wrapper.jar and /dev/null differ diff --git a/build-android/gradle-templates/gradle/wrapper/gradle-wrapper.properties b/build-android/gradle-templates/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index 80472fb..0000000 --- a/build-android/gradle-templates/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,6 +0,0 @@ -#Wed Nov 25 17:13:33 GMT 2015 -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-bin.zip diff --git a/build-android/gradle-templates/gradlew b/build-android/gradle-templates/gradlew deleted file mode 100755 index 91a7e26..0000000 --- a/build-android/gradle-templates/gradlew +++ /dev/null @@ -1,164 +0,0 @@ -#!/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 - -# For Cygwin, ensure paths are in UNIX format before anything is touched. -if $cygwin ; then - [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` -fi - -# 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\"`/" >&- -APP_HOME="`pwd -P`" -cd "$SAVED" >&- - -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"` - - # 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/build-android/gradle-templates/gradlew.bat b/build-android/gradle-templates/gradlew.bat deleted file mode 100644 index 8a0b282..0000000 --- a/build-android/gradle-templates/gradlew.bat +++ /dev/null @@ -1,90 +0,0 @@ -@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/build-android/gradle-templates/local.properties b/build-android/gradle-templates/local.properties deleted file mode 100644 index 6679559..0000000 --- a/build-android/gradle-templates/local.properties +++ /dev/null @@ -1,13 +0,0 @@ -## This file is automatically generated by Android Studio. -# Do not modify this file -- YOUR CHANGES WILL BE ERASED! -# -# This file must *NOT* be checked into Version Control Systems, -# as it contains information specific to your local configuration. -# -# Location of the SDK. This is only used by Gradle. -# For customization when using a Version Control System, please read the -# header note. -#Mon Mar 28 09:29:17 PDT 2016 -sdk.dir=/path/to/your/android_sdk -ndk.dir=/path/to/your/android_ndk - diff --git a/build-android/gradle-templates/settings.gradle b/build-android/gradle-templates/settings.gradle deleted file mode 100644 index 4a900fd..0000000 --- a/build-android/gradle-templates/settings.gradle +++ /dev/null @@ -1,9 +0,0 @@ -include ':core_validation', - ':object_tracker', - ':parameter_validation', - ':swapchain', - ':threading', - ':unique_objects' - - - diff --git a/build-android/gradle-templates/win.template.gradle b/build-android/gradle-templates/win.template.gradle deleted file mode 100644 index 07596af..0000000 --- a/build-android/gradle-templates/win.template.gradle +++ /dev/null @@ -1,76 +0,0 @@ -// this template is for windows platform to build -// need gcc, could not use clang -// disable -Werror compile flag -// This is temp workaround, clean fix will be provided soon so all OSes should use -// common.gradle - -apply plugin: 'com.android.model.native' - -Properties properties = new Properties() -properties.load(project.rootProject.file('local.properties').newDataInputStream()) -def ndkDir = properties.getProperty('ndk.dir') - -model { - android { - compileSdkVersion = 23 - buildToolsVersion = "23.0.2" - - defaultConfig.with { - minSdkVersion.apiLevel = 22 - targetSdkVersion.apiLevel = 24 - versionCode = 1 - versionName = "0.0.1" - } - } - - android.ndk { - moduleName = "VkLayer_${project.name}" - toolchain = "gcc" - stl = "gnustl_static" - ldLibs.addAll(["log", "android"]) - cppFlags.addAll(["-std=c++11", "-DVK_PROTOTYPES", "-Wall", - "-Wno-unused-function", "-Wno-unused-const-variable", - "-DVK_USE_PLATFORM_ANDROID_KHR"]) - cppFlags.addAll(["-I${file("../../../../layers")}".toString(), - "-I${file("../../../../include")}".toString(), - "-I${file("../../../../loader")}".toString(), - "-I${file("../../include")}".toString(), - "-I${file("../../../../external/glslang")}".toString()]) - } - - // Turn on hard float support in armeabi-v7a - android.abis { - create("armeabi-v7a") { - cppFlags.addAll(["-mhard-float", "-D_NDK_MATH_NO_SOFTFP=1", "-mfloat-abi=hard"]) - ldLibs.add("m_hard") - ldFlags.add("-Wl,--no-warn-mismatch") - } - } - - android.sources { - main { - jni { - source { - srcDir "../../layer-src/${project.name}" - srcDir '../../common' - - } - } - } - } - - android.buildTypes { - release { - ndk.with { - debuggable = true - } - minifyEnabled = false - } - } - android.productFlavors { - create ("all") { - ndk.abiFilters.addAll(["armeabi-v7a", 'arm64-v8a', - 'x86', 'x86_64']) - } - } -} diff --git a/build-android/jni/Android.mk b/build-android/jni/Android.mk index 10c58ce..290bb12 100644 --- a/build-android/jni/Android.mk +++ b/build-android/jni/Android.mk @@ -20,10 +20,10 @@ ANDROID_DIR := $(SRC_DIR)/build-android include $(CLEAR_VARS) LOCAL_MODULE := layer_utils -LOCAL_SRC_FILES += $(LAYER_DIR)/common/vk_layer_config.cpp -LOCAL_SRC_FILES += $(LAYER_DIR)/common/vk_layer_extension_utils.cpp -LOCAL_SRC_FILES += $(LAYER_DIR)/common/vk_layer_utils.cpp -LOCAL_SRC_FILES += $(LAYER_DIR)/common/vk_format_utils.cpp +LOCAL_SRC_FILES += $(SRC_DIR)/layers/vk_layer_config.cpp +LOCAL_SRC_FILES += $(SRC_DIR)/layers/vk_layer_extension_utils.cpp +LOCAL_SRC_FILES += $(SRC_DIR)/layers/vk_layer_utils.cpp +LOCAL_SRC_FILES += $(SRC_DIR)/layers/vk_format_utils.cpp LOCAL_C_INCLUDES += $(SRC_DIR)/include \ $(LAYER_DIR)/include \ $(SRC_DIR)/layers \ @@ -33,10 +33,10 @@ include $(BUILD_STATIC_LIBRARY) include $(CLEAR_VARS) LOCAL_MODULE := VkLayer_core_validation -LOCAL_SRC_FILES += $(LAYER_DIR)/layer-src/core_validation/core_validation.cpp -LOCAL_SRC_FILES += $(LAYER_DIR)/layer-src/core_validation/descriptor_sets.cpp -LOCAL_SRC_FILES += $(LAYER_DIR)/layer-src/core_validation/buffer_validation.cpp -LOCAL_SRC_FILES += $(LAYER_DIR)/common/vk_layer_table.cpp +LOCAL_SRC_FILES += $(SRC_DIR)/layers/core_validation.cpp +LOCAL_SRC_FILES += $(SRC_DIR)/layers/descriptor_sets.cpp +LOCAL_SRC_FILES += $(SRC_DIR)/layers/buffer_validation.cpp +LOCAL_SRC_FILES += $(SRC_DIR)/layers/vk_layer_table.cpp LOCAL_C_INCLUDES += $(SRC_DIR)/include \ $(SRC_DIR)/layers \ $(LAYER_DIR)/include \ @@ -52,8 +52,8 @@ include $(BUILD_SHARED_LIBRARY) include $(CLEAR_VARS) LOCAL_MODULE := VkLayer_parameter_validation -LOCAL_SRC_FILES += $(LAYER_DIR)/layer-src/parameter_validation/parameter_validation.cpp -LOCAL_SRC_FILES += $(LAYER_DIR)/common/vk_layer_table.cpp +LOCAL_SRC_FILES += $(SRC_DIR)/layers/parameter_validation.cpp +LOCAL_SRC_FILES += $(SRC_DIR)/layers/vk_layer_table.cpp LOCAL_C_INCLUDES += $(SRC_DIR)/include \ $(LAYER_DIR)/include \ $(SRC_DIR)/layers \ @@ -67,8 +67,8 @@ include $(BUILD_SHARED_LIBRARY) include $(CLEAR_VARS) LOCAL_MODULE := VkLayer_object_tracker -LOCAL_SRC_FILES += $(LAYER_DIR)/layer-src/object_tracker/object_tracker.cpp -LOCAL_SRC_FILES += $(LAYER_DIR)/common/vk_layer_table.cpp +LOCAL_SRC_FILES += $(SRC_DIR)/layers/object_tracker.cpp +LOCAL_SRC_FILES += $(SRC_DIR)/layers/vk_layer_table.cpp LOCAL_C_INCLUDES += $(SRC_DIR)/include \ $(SRC_DIR)/layers \ $(LAYER_DIR)/include \ @@ -82,8 +82,8 @@ include $(BUILD_SHARED_LIBRARY) include $(CLEAR_VARS) LOCAL_MODULE := VkLayer_threading -LOCAL_SRC_FILES += $(LAYER_DIR)/layer-src/threading/threading.cpp -LOCAL_SRC_FILES += $(LAYER_DIR)/common/vk_layer_table.cpp +LOCAL_SRC_FILES += $(SRC_DIR)/layers/threading.cpp +LOCAL_SRC_FILES += $(SRC_DIR)/layers/vk_layer_table.cpp LOCAL_C_INCLUDES += $(SRC_DIR)/include \ $(SRC_DIR)/layers \ $(LAYER_DIR)/include \ @@ -97,8 +97,8 @@ include $(BUILD_SHARED_LIBRARY) include $(CLEAR_VARS) LOCAL_MODULE := VkLayer_unique_objects -LOCAL_SRC_FILES += $(LAYER_DIR)/layer-src/unique_objects/unique_objects.cpp -LOCAL_SRC_FILES += $(LAYER_DIR)/common/vk_layer_table.cpp +LOCAL_SRC_FILES += $(SRC_DIR)/layers/unique_objects.cpp +LOCAL_SRC_FILES += $(SRC_DIR)/layers/vk_layer_table.cpp LOCAL_C_INCLUDES += $(SRC_DIR)/include \ $(SRC_DIR)/layers \ $(LAYER_DIR)/include \ @@ -112,8 +112,8 @@ include $(BUILD_SHARED_LIBRARY) include $(CLEAR_VARS) LOCAL_MODULE := VkLayer_swapchain -LOCAL_SRC_FILES += $(LAYER_DIR)/layer-src/swapchain/swapchain.cpp -LOCAL_SRC_FILES += $(LAYER_DIR)/common/vk_layer_table.cpp +LOCAL_SRC_FILES += $(SRC_DIR)/layers/swapchain.cpp +LOCAL_SRC_FILES += $(SRC_DIR)/layers/vk_layer_table.cpp LOCAL_C_INCLUDES += $(SRC_DIR)/include \ $(SRC_DIR)/layers \ $(LAYER_DIR)/include \