111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#!/bin/bash
211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# Copyright 2015 The Android Open Source Project
411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# Copyright (C) 2015 Valve Corporation
511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# Licensed under the Apache License, Version 2.0 (the "License");
711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# you may not use this file except in compliance with the License.
811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# You may obtain a copy of the License at
911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
1011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#      http://www.apache.org/licenses/LICENSE-2.0
1111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
1211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# Unless required by applicable law or agreed to in writing, software
1311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# distributed under the License is distributed on an "AS IS" BASIS,
1411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# See the License for the specific language governing permissions and
1611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# limitations under the License.
1711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
1811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdir=$(cd -P -- "$(dirname -- "$0")" && pwd -P)
1911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertcd $dir
2011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
2111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertrm -rf generated
2211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertmkdir -p generated/include generated/common
2311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
2411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertpython ../vk-generate.py Android dispatch-table-ops layer > generated/include/vk_dispatch_table_helper.h
2511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
2611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertpython ../vk_helper.py --gen_enum_string_helper ../include/vulkan/vulkan.h --abs_out_dir generated/include
2711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertpython ../vk_helper.py --gen_struct_wrappers ../include/vulkan/vulkan.h --abs_out_dir generated/include
2811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
2911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertpython ../vk-layer-generate.py Android object_tracker ../include/vulkan/vulkan.h > generated/include/object_tracker.cpp
3011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertpython ../vk-layer-generate.py Android unique_objects ../include/vulkan/vulkan.h > generated/include/unique_objects.cpp
3111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert( cd generated/include; python ../../../genvk.py threading -registry ../../../vk.xml thread_check.h )
3211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert( cd generated/include; python ../../../genvk.py paramchecker -registry ../../../vk.xml parameter_validation.h )
3311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
3411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertcp -f ../layers/vk_layer_config.cpp   generated/common/
3511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertcp -f ../layers/vk_layer_extension_utils.cpp  generated/common/
3611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertcp -f ../layers/vk_layer_utils.cpp    generated/common/
3711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertcp -f ../layers/vk_layer_table.cpp    generated/common/
3811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertcp -f ../layers/descriptor_sets.cpp   generated/common/
3911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
4011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# layer names and their original source files directory
4111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# 1 to 1 correspondence -- one layer one source file; additional files are copied
4211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# at fixup step
4311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdeclare layers=(core_validation device_limits image object_tracker parameter_validation swapchain threading unique_objects)
4411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdeclare src_dirs=(../layers ../layers ../layers generated/include ../layers ../layers ../layers generated/include)
4511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
4611cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertSRC_ROOT=generated/layer-src
4711cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertBUILD_ROOT=generated/gradle-build
4811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
4911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# create build-script root directory
5011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertcp -fr gradle-templates   generated/gradle-build
5111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfor ((i = 0; i < ${#layers[@]}; i++))
5211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdo
5311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#   copy the sources
5411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    mkdir  -p ${SRC_ROOT}/${layers[i]}
5511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    cp -f ${src_dirs[i]}/${layers[i]}.cpp  ${SRC_ROOT}/${layers[i]}/
5611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
5711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#   copy build scripts
5811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    mkdir -p ${BUILD_ROOT}/${layers[i]}
5911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    echo "apply from: \"../common.gradle\"" > ${BUILD_ROOT}/${layers[i]}/build.gradle
6011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdone
6111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
6211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# fixup - unique_objects need one more file
6311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertcp  generated/common/descriptor_sets.cpp ${SRC_ROOT}/core_validation/descriptor_sets.cpp
6411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertcp  generated/include/vk_safe_struct.cpp ${SRC_ROOT}/core_validation/vk_safe_struct.cpp
6511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertmv  generated/include/vk_safe_struct.cpp ${SRC_ROOT}/unique_objects/vk_safe_struct.cpp
6611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
6711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# fixup - remove copied files from generated/include
6811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertrm  generated/include/object_tracker.cpp
6911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertrm  generated/include/unique_objects.cpp
7011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertexit 0
72