aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCourtney Goeltzenleuchter <courtneygo@google.com>2016-03-31 20:27:16 -0600
committerCourtney Goeltzenleuchter <courtneygo@google.com>2016-03-31 20:27:16 -0600
commit27b0070bc3fa5e55e195b4cce54c6341a065f084 (patch)
treee9a3b3a0abfac6f7c9ae409ea370036b910e6175
parentbb38d613945d2c23ae4dfd30146c86c4acfe852e (diff)
parentc1c85c42190721dcc5ee324d684a11b262a80ea0 (diff)
downloadvulkan-validation-layers-27b0070bc3fa5e55e195b4cce54c6341a065f084.tar.gz
Merge remote-tracking branch 'aosp/upstream-android_layers'
Merge in gradle build for validation layers
-rw-r--r--build-android/android-generate.bat61
-rwxr-xr-xbuild-android/android-generate.sh68
-rw-r--r--build-android/gradle-templates/README.md3
-rw-r--r--build-android/gradle-templates/build.gradle22
-rw-r--r--build-android/gradle-templates/common.gradle71
-rw-r--r--build-android/gradle-templates/gradle.properties18
-rw-r--r--build-android/gradle-templates/gradle/wrapper/gradle-wrapper.jarbin0 -> 49896 bytes
-rw-r--r--build-android/gradle-templates/gradle/wrapper/gradle-wrapper.properties6
-rwxr-xr-xbuild-android/gradle-templates/gradlew164
-rw-r--r--build-android/gradle-templates/gradlew.bat90
-rw-r--r--build-android/gradle-templates/local.properties13
-rw-r--r--build-android/gradle-templates/settings.gradle11
-rw-r--r--build-android/gradle-templates/win.template.gradle76
-rw-r--r--build-android/jni/Android.mk (renamed from buildAndroid/jni/Android.mk)66
-rw-r--r--build-android/jni/Application.mk (renamed from buildAndroid/jni/Application.mk)0
-rw-r--r--buildAndroid/android-generate.bat33
-rwxr-xr-xbuildAndroid/android-generate.sh33
17 files changed, 639 insertions, 96 deletions
diff --git a/build-android/android-generate.bat b/build-android/android-generate.bat
new file mode 100644
index 000000000..303177eb6
--- /dev/null
+++ b/build-android/android-generate.bat
@@ -0,0 +1,61 @@
+@echo off
+REM # Copyright 2015 The Android Open Source Project
+REM # Copyright (C) 2015 Valve Corporation
+REM
+REM # Licensed under the Apache License, Version 2.0 (the "License");
+REM # you may not use this file except in compliance with the License.
+REM # You may obtain a copy of the License at
+REM
+REM # http://www.apache.org/licenses/LICENSE-2.0
+REM
+REM # Unless required by applicable law or agreed to in writing, software
+REM # distributed under the License is distributed on an "AS IS" BASIS,
+REM # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+REM # See the License for the specific language governing permissions and
+REM # limitations under the License.
+
+if exist generated (
+ rmdir /s /q generated
+)
+mkdir generated\include generated\common
+
+python ../vk-generate.py Android dispatch-table-ops layer > generated/include/vk_dispatch_table_helper.h
+
+python ../vk_helper.py --gen_enum_string_helper ../include/vulkan/vulkan.h --abs_out_dir generated/include
+python ../vk_helper.py --gen_struct_wrappers ../include/vulkan/vulkan.h --abs_out_dir generated/include
+
+python ../vk-layer-generate.py Android object_tracker ../include/vulkan/vulkan.h > generated/include/object_tracker.cpp
+python ../vk-layer-generate.py Android unique_objects ../include/vulkan/vulkan.h > generated/include/unique_objects.cpp
+
+cd generated/include
+python ../../../genvk.py threading -registry ../../../vk.xml thread_check.h
+python ../../../genvk.py paramchecker -registry ../../../vk.xml parameter_validation.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_layer_table.cpp generated\common\
+
+REM create build-script root directory
+mkdir generated\gradle-build
+cd generated\gradle-build
+mkdir core_validation device_limits image object_tracker parameter_validation swapchain threading unique_objects
+cd ..\..
+mkdir generated\layer-src
+cd generated\layer-src
+mkdir core_validation device_limits image object_tracker parameter_validation swapchain threading unique_objects
+cd ..\..
+xcopy /s gradle-templates\* generated\gradle-build\
+for %%G in (core_validation device_limits image parameter_validation swapchain threading) Do (
+ copy ..\layers\%%G.cpp generated\layer-src\%%G
+ echo apply from: "../win.template.gradle" > generated\gradle-build\%%G\build.gradle
+)
+copy generated\include\object_tracker.cpp generated\layer-src\object_tracker
+echo apply from: "../win.template.gradle" > generated\gradle-build\object_tracker\build.gradle
+copy generated\include\unique_objects.cpp generated\layer-src\unique_objects
+move generated\include\vk_safe_struct.cpp generated\layer-src\unique_objects\vk_safe_struct.cpp
+echo apply from: "../win.template.gradle" > generated\gradle-build\unique_objects\build.gradle
+
+del /f /q generated\include\object_tracker.cpp
+del /f /q generated\include\unique_objects.cpp
diff --git a/build-android/android-generate.sh b/build-android/android-generate.sh
new file mode 100755
index 000000000..0ded569ba
--- /dev/null
+++ b/build-android/android-generate.sh
@@ -0,0 +1,68 @@
+#!/bin/bash
+
+# Copyright 2015 The Android Open Source Project
+# Copyright (C) 2015 Valve Corporation
+
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+
+# http://www.apache.org/licenses/LICENSE-2.0
+
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+dir=$(cd -P -- "$(dirname -- "$0")" && pwd -P)
+cd $dir
+
+rm -rf generated
+mkdir -p generated/include generated/common
+
+python ../vk-generate.py Android dispatch-table-ops layer > generated/include/vk_dispatch_table_helper.h
+
+python ../vk_helper.py --gen_enum_string_helper ../include/vulkan/vulkan.h --abs_out_dir generated/include
+python ../vk_helper.py --gen_struct_wrappers ../include/vulkan/vulkan.h --abs_out_dir generated/include
+
+python ../vk-layer-generate.py Android object_tracker ../include/vulkan/vulkan.h > generated/include/object_tracker.cpp
+python ../vk-layer-generate.py Android unique_objects ../include/vulkan/vulkan.h > generated/include/unique_objects.cpp
+( cd generated/include; python ../../../genvk.py threading -registry ../../../vk.xml thread_check.h )
+( cd generated/include; python ../../../genvk.py paramchecker -registry ../../../vk.xml parameter_validation.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_layer_table.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 device_limits image object_tracker parameter_validation swapchain threading unique_objects)
+declare src_dirs=(../layers ../layers ../layers generated/include ../layers ../layers ../layers generated/include)
+
+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
+mv generated/include/vk_safe_struct.cpp ${SRC_ROOT}/unique_objects/vk_safe_struct.cpp
+
+# fixup - remove copied files from generated/include
+rm generated/include/object_tracker.cpp
+rm generated/include/unique_objects.cpp
+
+exit 0
diff --git a/build-android/gradle-templates/README.md b/build-android/gradle-templates/README.md
new file mode 100644
index 000000000..b4f7d456e
--- /dev/null
+++ b/build-android/gradle-templates/README.md
@@ -0,0 +1,3 @@
+#Validation Layers projects
+
+
diff --git a/build-android/gradle-templates/build.gradle b/build-android/gradle-templates/build.gradle
new file mode 100644
index 000000000..c4a425bab
--- /dev/null
+++ b/build-android/gradle-templates/build.gradle
@@ -0,0 +1,22 @@
+// 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
new file mode 100644
index 000000000..f39578f6f
--- /dev/null
+++ b/build-android/gradle-templates/common.gradle
@@ -0,0 +1,71 @@
+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 = "clang"
+ stl = "gnustl_static"
+ ldLibs.addAll(["log", "android"])
+ cppFlags.addAll(["-std=c++11", "-DVK_PROTOTYPES", "-Wall", "-Werror",
+ "-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("../../../../../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
new file mode 100644
index 000000000..1d3591c8a
--- /dev/null
+++ b/build-android/gradle-templates/gradle.properties
@@ -0,0 +1,18 @@
+# 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
new file mode 100644
index 000000000..8c0fb64a8
--- /dev/null
+++ b/build-android/gradle-templates/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/build-android/gradle-templates/gradle/wrapper/gradle-wrapper.properties b/build-android/gradle-templates/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 000000000..80472fb12
--- /dev/null
+++ b/build-android/gradle-templates/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#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
new file mode 100755
index 000000000..91a7e269e
--- /dev/null
+++ b/build-android/gradle-templates/gradlew
@@ -0,0 +1,164 @@
+#!/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
new file mode 100644
index 000000000..8a0b282aa
--- /dev/null
+++ b/build-android/gradle-templates/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/build-android/gradle-templates/local.properties b/build-android/gradle-templates/local.properties
new file mode 100644
index 000000000..667955948
--- /dev/null
+++ b/build-android/gradle-templates/local.properties
@@ -0,0 +1,13 @@
+## 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
new file mode 100644
index 000000000..00a0cba56
--- /dev/null
+++ b/build-android/gradle-templates/settings.gradle
@@ -0,0 +1,11 @@
+include ':core_validation',
+ ':device_limits',
+ ':image',
+ ':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
new file mode 100644
index 000000000..6efae6fa3
--- /dev/null
+++ b/build-android/gradle-templates/win.template.gradle
@@ -0,0 +1,76 @@
+// 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("../../../../../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/buildAndroid/jni/Android.mk b/build-android/jni/Android.mk
index e9dfc36e7..bd785207b 100644
--- a/buildAndroid/jni/Android.mk
+++ b/build-android/jni/Android.mk
@@ -16,23 +16,26 @@
LOCAL_PATH := $(abspath $(call my-dir))
MY_PATH := $(LOCAL_PATH)
SRC_DIR := $(LOCAL_PATH)/../../
+LAYER_DIR := $(LOCAL_PATH)/../generated
include $(CLEAR_VARS)
LOCAL_MODULE := layer_utils
-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 += $(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_C_INCLUDES += $(SRC_DIR)/include \
+ ${SRC_DIR}/layers \
$(SRC_DIR)/loader
LOCAL_CPPFLAGS += -DVK_USE_PLATFORM_ANDROID_KHR
include $(BUILD_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := VkLayer_core_validation
-LOCAL_SRC_FILES += $(SRC_DIR)/layers/core_validation.cpp
-LOCAL_SRC_FILES += $(SRC_DIR)/layers/vk_layer_table.cpp
+LOCAL_SRC_FILES += $(LAYER_DIR)/layer-src/core_validation/core_validation.cpp
+LOCAL_SRC_FILES += $(LAYER_DIR)/common/vk_layer_table.cpp
LOCAL_C_INCLUDES += $(SRC_DIR)/include \
- $(MY_PATH)/../generated \
+ ${SRC_DIR}/layers \
+ $(MY_PATH)/../generated/include \
$(SRC_DIR)/loader \
$(SRC_DIR)/../glslang
LOCAL_STATIC_LIBRARIES += layer_utils
@@ -42,10 +45,11 @@ include $(BUILD_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := VkLayer_device_limits
-LOCAL_SRC_FILES += $(SRC_DIR)/layers/device_limits.cpp
-LOCAL_SRC_FILES += $(SRC_DIR)/layers/vk_layer_table.cpp
+LOCAL_SRC_FILES += $(LAYER_DIR)/layer-src/device_limits/device_limits.cpp
+LOCAL_SRC_FILES += $(LAYER_DIR)/common/vk_layer_table.cpp
LOCAL_C_INCLUDES += $(SRC_DIR)/include \
- $(MY_PATH)/../generated \
+ ${SRC_DIR}/layers \
+ $(MY_PATH)/../generated/include \
$(SRC_DIR)/loader
LOCAL_STATIC_LIBRARIES += layer_utils
LOCAL_CPPFLAGS += -DVK_USE_PLATFORM_ANDROID_KHR
@@ -54,10 +58,11 @@ include $(BUILD_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := VkLayer_image
-LOCAL_SRC_FILES += $(SRC_DIR)/layers/image.cpp
-LOCAL_SRC_FILES += $(SRC_DIR)/layers/vk_layer_table.cpp
+LOCAL_SRC_FILES += $(LAYER_DIR)/layer-src/image/image.cpp
+LOCAL_SRC_FILES += $(LAYER_DIR)/common/vk_layer_table.cpp
LOCAL_C_INCLUDES += $(SRC_DIR)/include \
- $(MY_PATH)/../generated \
+ ${SRC_DIR}/layers \
+ $(MY_PATH)/../generated/include \
$(SRC_DIR)/loader
LOCAL_STATIC_LIBRARIES += layer_utils
LOCAL_CPPFLAGS += -DVK_USE_PLATFORM_ANDROID_KHR
@@ -66,10 +71,10 @@ include $(BUILD_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := VkLayer_parameter_validation
-LOCAL_SRC_FILES += $(SRC_DIR)/layers/parameter_validation.cpp
-LOCAL_SRC_FILES += $(SRC_DIR)/layers/vk_layer_table.cpp
+LOCAL_SRC_FILES += $(LAYER_DIR)/layer-src/parameter_validation/parameter_validation.cpp
+LOCAL_SRC_FILES += $(LAYER_DIR)/common/vk_layer_table.cpp
LOCAL_C_INCLUDES += $(SRC_DIR)/include \
- $(MY_PATH)/../generated \
+ $(MY_PATH)/../generated/include \
$(SRC_DIR)/layers \
$(SRC_DIR)/loader
LOCAL_STATIC_LIBRARIES += layer_utils
@@ -79,11 +84,11 @@ include $(BUILD_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := VkLayer_object_tracker
-LOCAL_SRC_FILES += $(MY_PATH)/../generated/object_tracker.cpp
-LOCAL_SRC_FILES += $(SRC_DIR)/layers/vk_layer_table.cpp
+LOCAL_SRC_FILES += $(LAYER_DIR)/layer-src/object_tracker/object_tracker.cpp
+LOCAL_SRC_FILES += $(LAYER_DIR)/common/vk_layer_table.cpp
LOCAL_C_INCLUDES += $(SRC_DIR)/include \
$(SRC_DIR)/layers \
- $(MY_PATH)/../generated \
+ $(MY_PATH)/../generated/include \
$(SRC_DIR)/loader
LOCAL_STATIC_LIBRARIES += layer_utils
LOCAL_CPPFLAGS += -DVK_USE_PLATFORM_ANDROID_KHR
@@ -92,11 +97,11 @@ include $(BUILD_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := VkLayer_threading
-LOCAL_SRC_FILES += $(SRC_DIR)/layers/threading.cpp
-LOCAL_SRC_FILES += $(SRC_DIR)/layers/vk_layer_table.cpp
+LOCAL_SRC_FILES += $(LAYER_DIR)/layer-src/threading/threading.cpp
+LOCAL_SRC_FILES += $(LAYER_DIR)/common/vk_layer_table.cpp
LOCAL_C_INCLUDES += $(SRC_DIR)/include \
$(SRC_DIR)/layers \
- $(MY_PATH)/../generated \
+ $(MY_PATH)/../generated/include \
$(SRC_DIR)/loader
LOCAL_STATIC_LIBRARIES += layer_utils
LOCAL_CPPFLAGS += -DVK_USE_PLATFORM_ANDROID_KHR
@@ -105,13 +110,13 @@ include $(BUILD_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := VkLayer_unique_objects
-LOCAL_SRC_FILES += $(MY_PATH)/../generated/unique_objects.cpp
-LOCAL_SRC_FILES += $(MY_PATH)/../generated/vk_safe_struct.cpp
-LOCAL_SRC_FILES += $(SRC_DIR)/layers/vk_layer_table.cpp
+LOCAL_SRC_FILES += $(LAYER_DIR)/layer-src/unique_objects/unique_objects.cpp
+LOCAL_SRC_FILES += $(LAYER_DIR)/layer-src/unique_objects/vk_safe_struct.cpp
+LOCAL_SRC_FILES += $(LAYER_DIR)/common/vk_layer_table.cpp
LOCAL_C_INCLUDES += $(SRC_DIR)/include \
$(SRC_DIR)/layers \
- $(MY_PATH)/../generated \
- $(SRC_DIR)/loader
+ $(MY_PATH)/../generated/include \
+ $(SRC_DIR)/loader
LOCAL_STATIC_LIBRARIES += layer_utils
LOCAL_CPPFLAGS += -DVK_USE_PLATFORM_ANDROID_KHR
LOCAL_LDLIBS := -llog
@@ -119,11 +124,12 @@ include $(BUILD_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := VkLayer_swapchain
-LOCAL_SRC_FILES += $(SRC_DIR)/layers/swapchain.cpp
-LOCAL_SRC_FILES += $(SRC_DIR)/layers/vk_layer_table.cpp
+LOCAL_SRC_FILES += $(LAYER_DIR)/layer-src/swapchain/swapchain.cpp
+LOCAL_SRC_FILES += $(LAYER_DIR)/common/vk_layer_table.cpp
LOCAL_C_INCLUDES += $(SRC_DIR)/include \
- $(MY_PATH)/../generated \
- $(SRC_DIR)/loader
+ ${SRC_DIR}/layers \
+ $(MY_PATH)/../generated/include \
+ $(SRC_DIR)/loader
LOCAL_STATIC_LIBRARIES += layer_utils
LOCAL_CPPFLAGS += -DVK_USE_PLATFORM_ANDROID_KHR
LOCAL_LDLIBS := -llog
diff --git a/buildAndroid/jni/Application.mk b/build-android/jni/Application.mk
index 13ec240dd..13ec240dd 100644
--- a/buildAndroid/jni/Application.mk
+++ b/build-android/jni/Application.mk
diff --git a/buildAndroid/android-generate.bat b/buildAndroid/android-generate.bat
deleted file mode 100644
index bf053528d..000000000
--- a/buildAndroid/android-generate.bat
+++ /dev/null
@@ -1,33 +0,0 @@
-@echo off
-REM # Copyright 2015 The Android Open Source Project
-REM # Copyright (C) 2015 Valve Corporation
-REM
-REM # Licensed under the Apache License, Version 2.0 (the "License");
-REM # you may not use this file except in compliance with the License.
-REM # You may obtain a copy of the License at
-REM
-REM # http://www.apache.org/licenses/LICENSE-2.0
-REM
-REM # Unless required by applicable law or agreed to in writing, software
-REM # distributed under the License is distributed on an "AS IS" BASIS,
-REM # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-REM # See the License for the specific language governing permissions and
-REM # limitations under the License.
-
-if exist generated (
- rmdir /s /q generated
-)
-mkdir generated
-
-python ../vk-generate.py Android dispatch-table-ops layer > generated/vk_dispatch_table_helper.h
-
-python ../vk_helper.py --gen_enum_string_helper ../include/vulkan/vulkan.h --abs_out_dir generated
-python ../vk_helper.py --gen_struct_wrappers ../include/vulkan/vulkan.h --abs_out_dir generated
-
-python ../vk-layer-generate.py Android object_tracker ../include/vulkan/vulkan.h > generated/object_tracker.cpp
-python ../vk-layer-generate.py Android unique_objects ../include/vulkan/vulkan.h > generated/unique_objects.cpp
-
-cd generated
-python ../../genvk.py threading -registry ../../vk.xml thread_check.h
-python ../../genvk.py paramchecker -registry ../../vk.xml parameter_validation.h
-cd ..
diff --git a/buildAndroid/android-generate.sh b/buildAndroid/android-generate.sh
deleted file mode 100755
index 928a17621..000000000
--- a/buildAndroid/android-generate.sh
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/bin/bash
-
-# Copyright 2015 The Android Open Source Project
-# Copyright (C) 2015 Valve Corporation
-
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-
-# http://www.apache.org/licenses/LICENSE-2.0
-
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-dir=$(cd -P -- "$(dirname -- "$0")" && pwd -P)
-cd $dir
-
-rm -rf generated
-mkdir -p generated
-python ../vk-generate.py Android dispatch-table-ops layer > generated/vk_dispatch_table_helper.h
-
-python ../vk_helper.py --gen_enum_string_helper ../include/vulkan/vulkan.h --abs_out_dir generated
-python ../vk_helper.py --gen_struct_wrappers ../include/vulkan/vulkan.h --abs_out_dir generated
-
-python ../vk-layer-generate.py Android object_tracker ../include/vulkan/vulkan.h > generated/object_tracker.cpp
-python ../vk-layer-generate.py Android unique_objects ../include/vulkan/vulkan.h > generated/unique_objects.cpp
-( cd generated; python ../../genvk.py threading -registry ../../vk.xml thread_check.h )
-( cd generated; python ../../genvk.py paramchecker -registry ../../vk.xml parameter_validation.h )
-
-exit 0