android: Update gradle layer build to use cmake
authorguanghuafan <gfan@google.com>
Fri, 28 Apr 2017 19:02:24 +0000 (12:02 -0700)
committerCody Northrop <cnorthrop@google.com>
Tue, 23 May 2017 17:46:55 +0000 (11:46 -0600)
20 files changed:
build-android/android-generate.bat
build-android/android-generate.sh
build-android/cmake/README.md [new file with mode: 0644]
build-android/cmake/layerlib/CMakeLists.txt [new file with mode: 0644]
build-android/cmake/layerlib/build.gradle [new file with mode: 0644]
build-android/cmake/layerlib/proguard-rules.pro [new file with mode: 0644]
build-android/cmake/layerlib/src/main/AndroidManifest.xml [new file with mode: 0644]
build-android/cmake/layerlib/src/main/res/values/strings.xml [new file with mode: 0644]
build-android/gradle-templates/README.md [deleted file]
build-android/gradle-templates/build.gradle [deleted file]
build-android/gradle-templates/common.gradle [deleted file]
build-android/gradle-templates/gradle.properties [deleted file]
build-android/gradle-templates/gradle/wrapper/gradle-wrapper.jar [deleted file]
build-android/gradle-templates/gradle/wrapper/gradle-wrapper.properties [deleted file]
build-android/gradle-templates/gradlew [deleted file]
build-android/gradle-templates/gradlew.bat [deleted file]
build-android/gradle-templates/local.properties [deleted file]
build-android/gradle-templates/settings.gradle [deleted file]
build-android/gradle-templates/win.template.gradle [deleted file]
build-android/jni/Android.mk

index 509fe9b..f54a173 100644 (file)
@@ -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\r
 cd ../..\r
 \r
-copy /Y ..\layers\vk_layer_config.cpp   generated\common\\r
-copy /Y ..\layers\vk_layer_extension_utils.cpp  generated\common\\r
-copy /Y ..\layers\vk_layer_utils.cpp    generated\common\\r
-copy /Y ..\layers\vk_format_utils.cpp   generated\common\\r
-copy /Y ..\layers\vk_layer_table.cpp    generated\common\\r
-copy /Y ..\layers\descriptor_sets.cpp   generated\common\\r
-copy /Y ..\layers\buffer_validation.cpp generated\common\\r
-\r
-REM create build-script root directory\r
-mkdir generated\gradle-build\r
-cd generated\gradle-build\r
-mkdir  core_validation object_tracker parameter_validation swapchain threading unique_objects\r
-cd ..\..\r
-mkdir generated\layer-src\r
-cd generated\layer-src\r
-mkdir  core_validation object_tracker parameter_validation swapchain threading unique_objects\r
-cd ..\..\r
-xcopy /s gradle-templates\*   generated\gradle-build\\r
-for %%G in (core_validation object_tracker parameter_validation swapchain threading unique_objects) Do (\r
-    copy ..\layers\%%G.cpp   generated\layer-src\%%G\r
-    echo apply from: "../common.gradle"  > generated\gradle-build\%%G\build.gradle\r
-)\r
-copy generated\common\descriptor_sets.cpp generated\layer-src\core_validation\descriptor_sets.cpp\r
-copy generated\common\buffer_validation.cpp generated\layer-src\core_validation\buffer_validation.cpp\r
-copy generated\include\vk_safe_struct.cpp generated\layer-src\core_validation\vk_safe_struct.cpp\r
-move generated\include\vk_safe_struct.cpp generated\layer-src\unique_objects\vk_safe_struct.cpp\r
-echo apply from: "../common.gradle"  > generated\gradle-build\unique_objects\build.gradle\r
index 336412b..c0c05e4 100755 (executable)
@@ -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 (file)
index 0000000..70f68cd
--- /dev/null
@@ -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 (file)
index 0000000..f7c27e8
--- /dev/null
@@ -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 (file)
index 0000000..efa8472
--- /dev/null
@@ -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 (file)
index 0000000..b41fe70
--- /dev/null
@@ -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 (file)
index 0000000..78c3704
--- /dev/null
@@ -0,0 +1,9 @@
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.example.layerlib">
+
+    <application android:allowBackup="true" android:label="@string/app_name"
+        android:supportsRtl="true">
+
+    </application>
+
+</manifest>
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 (file)
index 0000000..66f8389
--- /dev/null
@@ -0,0 +1,3 @@
+<resources>
+    <string name="app_name">Layer Library</string>
+</resources>
diff --git a/build-android/gradle-templates/README.md b/build-android/gradle-templates/README.md
deleted file mode 100644 (file)
index b4f7d45..0000000
+++ /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 (file)
index c4a425b..0000000
+++ /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 (file)
index cedc1d7..0000000
+++ /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 (file)
index 1d3591c..0000000
+++ /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 (file)
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 (file)
index 80472fb..0000000
+++ /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 (executable)
index 91a7e26..0000000
+++ /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 (file)
index 8a0b282..0000000
+++ /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 (file)
index 6679559..0000000
+++ /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 (file)
index 4a900fd..0000000
+++ /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 (file)
index 07596af..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-// this template is for windows platform to build\r
-//   need gcc, could not use clang\r
-//   disable -Werror compile flag\r
-// This is temp workaround, clean fix will be provided soon so all OSes should use\r
-// common.gradle\r
-\r
-apply plugin: 'com.android.model.native'\r
-\r
-Properties properties = new Properties()\r
-properties.load(project.rootProject.file('local.properties').newDataInputStream())\r
-def ndkDir = properties.getProperty('ndk.dir')\r
-\r
-model {\r
-    android {\r
-        compileSdkVersion = 23\r
-        buildToolsVersion = "23.0.2"\r
-\r
-        defaultConfig.with {\r
-            minSdkVersion.apiLevel = 22\r
-            targetSdkVersion.apiLevel = 24\r
-            versionCode = 1\r
-            versionName = "0.0.1"\r
-        }\r
-    }\r
-\r
-    android.ndk {\r
-        moduleName = "VkLayer_${project.name}"\r
-        toolchain = "gcc"\r
-        stl = "gnustl_static"\r
-        ldLibs.addAll(["log", "android"])\r
-        cppFlags.addAll(["-std=c++11", "-DVK_PROTOTYPES", "-Wall",\r
-                         "-Wno-unused-function", "-Wno-unused-const-variable",\r
-                         "-DVK_USE_PLATFORM_ANDROID_KHR"])\r
-        cppFlags.addAll(["-I${file("../../../../layers")}".toString(),\r
-                         "-I${file("../../../../include")}".toString(),\r
-                         "-I${file("../../../../loader")}".toString(),\r
-                         "-I${file("../../include")}".toString(),\r
-                         "-I${file("../../../../external/glslang")}".toString()])\r
-    }\r
-\r
-    // Turn on hard float support in armeabi-v7a\r
-    android.abis {\r
-        create("armeabi-v7a") {\r
-            cppFlags.addAll(["-mhard-float", "-D_NDK_MATH_NO_SOFTFP=1", "-mfloat-abi=hard"])\r
-            ldLibs.add("m_hard")\r
-            ldFlags.add("-Wl,--no-warn-mismatch")\r
-        }\r
-    }\r
-\r
-    android.sources {\r
-        main {\r
-            jni {\r
-                source {\r
-                    srcDir "../../layer-src/${project.name}"\r
-                    srcDir '../../common'\r
-\r
-                }\r
-            }\r
-        }\r
-    }\r
-\r
-    android.buildTypes {\r
-        release {\r
-            ndk.with {\r
-                debuggable = true\r
-            }\r
-            minifyEnabled = false\r
-        }\r
-    }\r
-    android.productFlavors {\r
-        create ("all") {\r
-            ndk.abiFilters.addAll(["armeabi-v7a", 'arm64-v8a',\r
-                                   'x86', 'x86_64'])\r
-        }\r
-    }\r
-}\r
index 10c58ce..290bb12 100644 (file)
@@ -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 \