diff fuhtark_test/Vulkan-Headers-1.4.334/Makefile.release @ 1501:f40d9d814c08 default tip

did: correct vulkan-api generator
author sam <sam@basx.dev>
date Wed, 26 Nov 2025 23:34:29 +0700
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fuhtark_test/Vulkan-Headers-1.4.334/Makefile.release	Wed Nov 26 23:34:29 2025 +0700
@@ -0,0 +1,141 @@
+# Copyright 2024-2025 The Khronos Group Inc.
+# SPDX-License-Identifier: Apache-2.0
+
+# Makefile.release - update external files generated in Vulkan spec
+# repository when a public specification update is done.
+
+# Needed to get the right version of test, apparently
+SHELL  = /bin/bash
+
+REVISION = 999
+
+# Location of other repository clones
+GIT	 = ..
+SPEC	 = $(GIT)/Vulkan-Docs
+# As of 1.4.322 spec update, the build process has been changed to use a
+# Vulkan-Hpp located underneath Vulkan-Docs (not a submodule).
+# If you are using one located elsewhere then override HPP.
+HPP	 = $(SPEC)/Vulkan-Hpp
+REGISTRY = $(GIT)/registry/vulkan
+
+update: revision-check create-branch update-files push-branch
+
+# Working branch for the update, and a test if it exists
+BRANCH = update-$(REVISION)
+
+# Switch to new branch which will contain the update
+create-branch: revision-check
+	git switch -q main
+	git pull -q
+	# If branch already exists, do nothing
+	@if test `git branch -l $(BRANCH) | wc -l` == 1 ; then \
+	    echo "Branch $(BRANCH) already exists" ; \
+	    git switch $(BRANCH) ; \
+	else \
+	    echo "Creating branch $(BRANCH)" ; \
+	    git switch -c $(BRANCH) ; \
+	fi
+
+# Update headers and scripts in the new branch
+update-files: remove-files update-headers update-scripts
+
+# To ensure updates are caught, old versions of installed files are
+# removed.
+# Files in include/ to keep
+HEADERS_KEEP = \
+    include/vulkan/vk_icd.h \
+    include/vulkan/vk_layer.h
+
+remove-files:
+	rm -rf $(filter-out $(HEADERS_KEEP), $(wildcard include/vulkan/*))
+	rm -rf include/vk_video
+	rm -rf registry
+	mkdir include/vk_video registry registry/profiles registry/spec_tools
+
+# Vulkan SC Vulkan-Hpp headers not published in the Vulkan-Headers repository
+SCHPPFILES = \
+    include/vulkan/vulkansc.hpp \
+    include/vulkan/vulkansc.cppm \
+    include/vulkan/vulkansc_*.hpp
+
+update-headers:
+	if test ! -d $(SPEC)/gen/include/ ; then \
+	    echo "No C header file source directory $(SPEC)/gen/include" ; \
+	    exit 1 ; \
+	fi
+	if test ! -d $(HPP)/vulkan ; then \
+	    echo "No C++ header file source directory $(HPP)/vulkan" ; \
+	    exit 1 ; \
+	fi
+	cp -r $(SPEC)/gen/include/* include/
+	cp -r $(HPP)/vulkan/* include/vulkan/
+	rm -f $(SCHPPFILES)
+
+# Top-level scripts / XML to install
+SCRIPTS = \
+    $(SPEC)/scripts/base_generator.py \
+    $(SPEC)/scripts/cgenerator.py \
+    $(SPEC)/scripts/generator.py \
+    $(SPEC)/scripts/parse_dependency.py \
+    $(SPEC)/scripts/reg.py \
+    $(SPEC)/scripts/stripAPI.py \
+    $(SPEC)/scripts/apiconventions.py \
+    $(SPEC)/scripts/vkconventions.py \
+    $(SPEC)/scripts/vulkan_object.py \
+    $(SPEC)/xml/vk.xml \
+    $(SPEC)/xml/video.xml \
+    $(REGISTRY)/specs/latest/validation/validusage.json
+
+# Scripts in registry/spec_tools to install
+SCRIPT_TOOLS = \
+    $(SPEC)/scripts/spec_tools/conventions.py \
+    $(SPEC)/scripts/spec_tools/util.py
+
+# Profiles to install
+PROFILES = \
+    $(wildcard $(SPEC)/xml/profiles/*)
+
+update-scripts:
+	cp $(SCRIPTS) registry/
+	cp $(PROFILES) registry/profiles/
+	cp $(SCRIPT_TOOLS) registry/spec_tools/
+
+# Once the branch is updated, push it to upstream and create an MR
+# This should be used cautiously after verifying the branch contents are
+# indeed correct and updates.
+#
+# Ideally we could automatically create the github PR.
+# This will require additional software, see e.g.
+#   https://medium.com/@ravipatel.it/creating-a-git-pull-request-using-the-command-line-a-detailed-guide-4ef1ea017fe2
+#   https://gist.github.com/devinschumacher/bc66c162d9c6c167952f1943d0e6419c
+# Gitlab supports this via 'git push' options e.g.
+#   -o merge_request.create -o merge_request.target=main -o merge_request.remove_source_branch \
+#   -o merge_request.title="Update for Vulkan-Docs 1.4.$(REVISION)" \
+#   -o merge_request.assign=oddhack
+# But for github we must manually create a PR after pushing
+push-branch: revision-check
+	git switch $(BRANCH)
+	git add -u
+	echo "Detect new files and add them. This may not always succeed."
+	echo "Adding new files:" `git diff --name-only main`
+	git add `git diff --name-only main`
+	git commit -m "Update for Vulkan-Docs 1.4.$(REVISION)"
+	git push --set-upstream origin $(BRANCH)
+	git switch main
+	git branch -d $(BRANCH)
+	echo "Now create a pull request by going to the URL:"
+	echo "  https://github.com/KhronosGroup/Vulkan-Headers/pull/new/$(BRANCH)"
+	echo "After accepting this PR, continue with:"
+	echo "    cd $(shell pwd) && make -f Makefile.release REVISION=$(REVISION) tag-branch"
+
+# Tag main for the update after accepting the update PR
+TAG = v1.4.$(REVISION)
+tag-branch:
+	git switch main
+	git pull
+	git tag -a $(TAG) -m "Update for Vulkan-Docs 1.4.$(REVISION)"
+	git push origin $(TAG)
+	echo "Now continue with Step 12 of the process (update public registry) from the wiki, until more scripting is done"
+
+revision-check:
+	@if test $(REVISION) = 999 ; then echo "Must specify explicit REVISION= in make invocation" ; exit 1 ; fi