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