1#!/bin/bash
2
3# Copyright 2023 The Android Open Source Project
4#
5# Licensed under the Apache License, Version 2.0 (the "License");
6# you may not use this file except in compliance with the License.
7# You may obtain a copy of the License at
8#
9#      http://www.apache.org/licenses/LICENSE-2.0
10#
11# Unless required by applicable law or agreed to in writing, software
12# distributed under the License is distributed on an "AS IS" BASIS,
13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14# See the License for the specific language governing permissions and
15# limitations under the License.
16
17set -o errexit
18
19WORKING_DIRECTORY="/tmp/gfxstream-nested-vulkan-loader"
20if [ ! -z "$1" ]; then
21    WORKING_DIRECTORY=$1
22fi
23
24if [ ! -d $WORKING_DIRECTORY ]; then
25    echo "Creating working directory $WORKING_DIRECTORY."
26    mkdir -p $WORKING_DIRECTORY
27    cd $WORKING_DIRECTORY
28    git clone https://github.com/KhronosGroup/Vulkan-Loader.git .
29    git checkout -b v1.3.273 tags/v1.3.273
30else
31    echo "Reusing existing working directory $WORKING_DIRECTORY."
32    cd $WORKING_DIRECTORY
33fi
34
35echo "Applying edits for Gfxstream."
36VK_LOADER_ENV_VARS=(
37    "VK_ADD_DRIVER_FILES"
38    "VK_ADD_LAYER_PATH"
39    "VK_DRIVER_FILES"
40    "VK_ICD_FILENAMES"
41    "VK_INSTANCE_LAYERS"
42    "VK_LAYER_PATH"
43    "VK_LAYER_PATH"
44    "VK_LOADER_DEBUG"
45    "VK_LOADER_DRIVERS_DISABLE"
46    "VK_LOADER_DRIVERS_SELECT"
47    "VK_LOADER_LAYERS_ALLOW"
48    "VK_LOADER_LAYERS_DISABLE"
49    "VK_LOADER_LAYERS_ENABLE"
50)
51for var in ${VK_LOADER_ENV_VARS[@]}; do
52    echo "- Replacing occurrences of \"$var\" with \"GFXSTREAM_$var\"."
53    sed -i -e "s/\\\"$var\\\"/\\\"GFXSTREAM_$var\\\"/g" loader/*.c
54    sed -i -e "s/\\\"$var\\\"/\\\"GFXSTREAM_$var\\\"/g" loader/*.h
55done
56echo "- Adding in \"GFXSTREAM\" prefix to logging."
57sed -i -e "s/    fputs(cmd_line_msg, stderr);/    fputs(\\\"GFXSTREAM-LOADER: \\\", stderr); fputs(cmd_line_msg, stderr);/g" loader/log.c
58
59if [ ! -d build ]; then
60    echo "Creating build directory."
61    mkdir build
62    cd build
63    python ../scripts/update_deps.py
64    cmake -C helper.cmake -D CMAKE_BUILD_TYPE=Debug ..
65else
66    echo "Reusing existing build directory."
67    cd build
68fi
69
70echo "Building."
71cmake --build .
72
73cp loader/libvulkan.so loader/libvulkan_gfxstream.so
74
75echo "Use export LD_LIBRARY_PATH=\"\$LD_LIBRARY_PATH:$(pwd)/loader\" to add to your path."
76