# Copyright 2016, The Android Open Source Project # # 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. #!/bin/bash ME=$0 function usage { echo >&2 "$ME: $*: Expected [-d|--dump] [-t|--trace] <SPIRV_TOOLS_PATH> <SCRIPT_NAME> <OUTPUT_DIR>)" exit 2 } function dump { if [[ -z "${DUMP:-}" ]] ; then return 0 fi eval rs2spirv "$output_folder/$script.spv" -print-as-words return $? } DUMP= TRACE= while [[ "${1:-}" = -* ]] ; do case "$1" in -d|--dump) DUMP=t ;; -t|--trace) TRACE=t ;; *) usage "Unexpected option \"$1\"" ;; esac shift done if [[ $# -ne 3 ]] ; then usage "Bad argument count (got $#)" fi if [[ -n "${TRACE:-}" ]] ; then set -x fi AND_HOME=$ANDROID_BUILD_TOP SPIRV_TOOLS_PATH=$1 script_name="$2" script=`basename ${2%.*}` # Remove enclosing directories and extension. output_folder="$3" mkdir -p $output_folder eval llvm-rs-cc -o "$output_folder" -S -emit-llvm -Wall -Werror -target-api 24 \ -I "$AND_HOME/external/clang/lib/Headers" -I "$AND_HOME/frameworks/rs/script_api/include" \ "$script_name" && eval llvm-as "$output_folder/bc32/$script.ll" -o "$output_folder/$script.bc" && eval rs2spirv "$output_folder/$script.bc" -o "$output_folder/$script.spv" && dump && eval "$SPIRV_TOOLS_PATH/spirv-val" "$output_folder/$script.spv" && exit $?