1*90277196SAndroid Build Coastguard Worker# Copyright 2024 The Khronos Group Inc. 2*90277196SAndroid Build Coastguard Worker# SPDX-License-Identifier: Apache-2.0 3*90277196SAndroid Build Coastguard Worker 4*90277196SAndroid Build Coastguard Worker# Makefile.release - update external files generated in Vulkan spec 5*90277196SAndroid Build Coastguard Worker# repository when a public specification update is done. 6*90277196SAndroid Build Coastguard Worker 7*90277196SAndroid Build Coastguard Worker# Needed to get the right version of test, apparently 8*90277196SAndroid Build Coastguard WorkerSHELL = /bin/bash 9*90277196SAndroid Build Coastguard Worker 10*90277196SAndroid Build Coastguard WorkerREVISION = 999 11*90277196SAndroid Build Coastguard Worker 12*90277196SAndroid Build Coastguard Worker# Location of other repository clones 13*90277196SAndroid Build Coastguard WorkerGIT = .. 14*90277196SAndroid Build Coastguard WorkerSPEC = $(GIT)/Vulkan-Docs 15*90277196SAndroid Build Coastguard WorkerHPP = $(GIT)/Vulkan-Hpp 16*90277196SAndroid Build Coastguard WorkerREGISTRY = $(GIT)/registry/vulkan 17*90277196SAndroid Build Coastguard Worker 18*90277196SAndroid Build Coastguard Workerupdate: version-check create-branch update-files push-branch 19*90277196SAndroid Build Coastguard Worker 20*90277196SAndroid Build Coastguard Worker# Working branch for the update, and a test if it exists 21*90277196SAndroid Build Coastguard WorkerBRANCH = update-$(REVISION) 22*90277196SAndroid Build Coastguard Worker 23*90277196SAndroid Build Coastguard Worker# Switch to new branch which will contain the update 24*90277196SAndroid Build Coastguard Workercreate-branch: version-check 25*90277196SAndroid Build Coastguard Worker git switch -q main 26*90277196SAndroid Build Coastguard Worker git pull -q 27*90277196SAndroid Build Coastguard Worker # If branch already exists, do nothing 28*90277196SAndroid Build Coastguard Worker @if test `git branch -l $(BRANCH) | wc -l` == 1 ; then \ 29*90277196SAndroid Build Coastguard Worker echo "Branch $(BRANCH) already exists" ; \ 30*90277196SAndroid Build Coastguard Worker git switch $(BRANCH) ; \ 31*90277196SAndroid Build Coastguard Worker else \ 32*90277196SAndroid Build Coastguard Worker echo "Creating branch $(BRANCH)" ; \ 33*90277196SAndroid Build Coastguard Worker git switch -c $(BRANCH) ; \ 34*90277196SAndroid Build Coastguard Worker fi 35*90277196SAndroid Build Coastguard Worker 36*90277196SAndroid Build Coastguard Worker# Update headers and scripts in the new branch 37*90277196SAndroid Build Coastguard Workerupdate-files: remove-files update-headers update-scripts 38*90277196SAndroid Build Coastguard Worker 39*90277196SAndroid Build Coastguard Worker# Vulkan SC Vulkan-Hpp headers not published in the Vulkan-Headers repository 40*90277196SAndroid Build Coastguard WorkerSCHPPFILES = \ 41*90277196SAndroid Build Coastguard Worker include/vulkan/vulkansc.hpp \ 42*90277196SAndroid Build Coastguard Worker include/vulkan/vulkansc.cppm \ 43*90277196SAndroid Build Coastguard Worker include/vulkan/vulkansc_*.hpp 44*90277196SAndroid Build Coastguard Worker 45*90277196SAndroid Build Coastguard Workerupdate-headers: 46*90277196SAndroid Build Coastguard Worker if test ! -d $(SPEC)/gen/include/ ; then \ 47*90277196SAndroid Build Coastguard Worker echo "No C header file source directory $(SPEC)/gen/include" ; \ 48*90277196SAndroid Build Coastguard Worker exit 1 ; \ 49*90277196SAndroid Build Coastguard Worker fi 50*90277196SAndroid Build Coastguard Worker if test ! -d $(HPP)/vulkan ; then \ 51*90277196SAndroid Build Coastguard Worker echo "No C++ header file source directory $(HPP)/vulkan" ; \ 52*90277196SAndroid Build Coastguard Worker exit 1 ; \ 53*90277196SAndroid Build Coastguard Worker fi 54*90277196SAndroid Build Coastguard Worker cp -r $(SPEC)/gen/include/* include/ 55*90277196SAndroid Build Coastguard Worker cp -r $(HPP)/vulkan/* include/vulkan/ 56*90277196SAndroid Build Coastguard Worker rm -f $(SCHPPFILES) 57*90277196SAndroid Build Coastguard Worker 58*90277196SAndroid Build Coastguard Worker# Top-level scripts / XML to install 59*90277196SAndroid Build Coastguard WorkerSCRIPTS = \ 60*90277196SAndroid Build Coastguard Worker $(SPEC)/scripts/cgenerator.py \ 61*90277196SAndroid Build Coastguard Worker $(SPEC)/scripts/generator.py \ 62*90277196SAndroid Build Coastguard Worker $(SPEC)/scripts/parse_dependency.py \ 63*90277196SAndroid Build Coastguard Worker $(SPEC)/scripts/reg.py \ 64*90277196SAndroid Build Coastguard Worker $(SPEC)/scripts/stripAPI.py \ 65*90277196SAndroid Build Coastguard Worker $(SPEC)/scripts/apiconventions.py \ 66*90277196SAndroid Build Coastguard Worker $(SPEC)/scripts/vkconventions.py \ 67*90277196SAndroid Build Coastguard Worker $(SPEC)/xml/vk.xml \ 68*90277196SAndroid Build Coastguard Worker $(SPEC)/xml/video.xml \ 69*90277196SAndroid Build Coastguard Worker $(REGISTRY)/specs/1.3-extensions/validation/validusage.json 70*90277196SAndroid Build Coastguard Worker 71*90277196SAndroid Build Coastguard Worker# Scripts in registry/spec_tools to install 72*90277196SAndroid Build Coastguard WorkerSCRIPT_TOOLS = \ 73*90277196SAndroid Build Coastguard Worker $(SPEC)/scripts/spec_tools/conventions.py \ 74*90277196SAndroid Build Coastguard Worker $(SPEC)/scripts/spec_tools/util.py 75*90277196SAndroid Build Coastguard Worker 76*90277196SAndroid Build Coastguard Worker# Profiles to install 77*90277196SAndroid Build Coastguard WorkerPROFILES = \ 78*90277196SAndroid Build Coastguard Worker $(wildcard $(SPEC)/xml/profiles/*) 79*90277196SAndroid Build Coastguard Worker 80*90277196SAndroid Build Coastguard Workerupdate-scripts: 81*90277196SAndroid Build Coastguard Worker cp $(SCRIPTS) registry/ 82*90277196SAndroid Build Coastguard Worker cp $(PROFILES) registry/profiles/ 83*90277196SAndroid Build Coastguard Worker cp $(SCRIPT_TOOLS) registry/spec_tools/ 84*90277196SAndroid Build Coastguard Worker 85*90277196SAndroid Build Coastguard Worker# To ensure updates are caught, old versions of installed files are 86*90277196SAndroid Build Coastguard Worker# removed. 87*90277196SAndroid Build Coastguard Worker 88*90277196SAndroid Build Coastguard Worker# Files in include/ to keep 89*90277196SAndroid Build Coastguard WorkerHEADERS_KEEP = \ 90*90277196SAndroid Build Coastguard Worker include/vulkan/vk_icd.h \ 91*90277196SAndroid Build Coastguard Worker include/vulkan/vk_layer.h 92*90277196SAndroid Build Coastguard Worker 93*90277196SAndroid Build Coastguard Workerremove-files: 94*90277196SAndroid Build Coastguard Worker rm -rf $(filter-out $(HEADERS_KEEP), $(wildcard include/vulkan/*)) 95*90277196SAndroid Build Coastguard Worker rm -rf include/vk_video 96*90277196SAndroid Build Coastguard Worker rm -rf registry 97*90277196SAndroid Build Coastguard Worker mkdir include/vk_video registry registry/profiles registry/spec_tools 98*90277196SAndroid Build Coastguard Worker 99*90277196SAndroid Build Coastguard Worker# Once the branch is updated, push it to upstream 100*90277196SAndroid Build Coastguard Worker# This does not actually push it for safety reasons 101*90277196SAndroid Build Coastguard Workerpush-branch: 102*90277196SAndroid Build Coastguard Worker @echo Verify that all new files are 'git add'ed and obsolete files removed, then: 103*90277196SAndroid Build Coastguard Worker @echo git commit -m \"Update for Vulkan-Docs 1.3.$(REVISION)\" 104*90277196SAndroid Build Coastguard Worker @echo git push --set-upstream origin $(BRANCH) 105*90277196SAndroid Build Coastguard Worker @echo git switch main 106*90277196SAndroid Build Coastguard Worker 107*90277196SAndroid Build Coastguard Workerversion-check: 108*90277196SAndroid Build Coastguard Worker @if test $(REVISION) = 999 ; then echo "Must specify explicit REVISION= in make invocation" ; exit 1 ; fi 109