Revision 4321929879c1ed5b87ff95a99ca7da91e28d18fd authored by Ellie Hermaszewska on 08 December 2023, 11:24:34 UTC, committed by GitHub on 08 December 2023, 11:24:34 UTC
* More robust input and output selection in generator tools * Add cmake build system * Get slang-test running with cmake * Bump lz4 and miniz dependencies * Make cmake build more declarative * Correct preprocessor logic in slang.h * Add cuda test to compute/simple * Remove empty cmake files * output placement for cmake, and commenting * Correct include paths in spirv-embed-generator * Format cmake with gersemi * Make cmake build clerer * Neaten header generation Also work around https://gitlab.kitware.com/cmake/cmake/-/issues/18399 by introducing correct_generated_properties to set the GENERATED flag in the correct scope * remove unused files * use 3.20 to set GENERATOR property properly * spelling * more flexible linker arg setting * replace slang-static with obj collection * Set rpath and linker path correctly * neaten generated file generation * tests working with cmake build * fix premake5 build * comment and neaten cmake * remove unnecessary dependency * Build aftermath example only when aftermath is enabled * Add slang-llvm and other dependencies * Put modules alongside binaries * Find slang-glslang correctly * Better option handling * comments * add llvm build test * Better option handling * cmake wobble * use UNICODE and _UNICODE * remove other workflows * use ccache * neaten * limit parallel for llvm build * use ninja for build * Windows and Darwin slang-llvm builds * cache key * verbose llvm build * cl on windows * sccache and cl.exe * use cl.exe * Correct package detection * less verbosity * Simplify miniz inclusion * fix build with sccache * Neaten llvm building * neaten * Neaten slang-llvm fetching * more surgical workarounds * Add ci action * Get version from git * better variable naming * add missing include * clean up after premake in cmake * more docs on cmake build * ci wobble * add imgui target * more selective source * do not download swiftshader * Some missing dependencies * only build llvm on dispatch * Disable /Zi in CI where sccache is present * simplify * set PIC for miniz * set policies before project * reengage workaround * more runs on ci * Add cmake presets * Add cpack * move iterator debug level to preset * Correct lib flag * simplify action * Neaten cmake init * Add todo * Add simple test wrapper * Add tests to workflow presets * rename packing preset * Correctly set definitions * docs * correct preset names * Make slang-test depend on test-server/test-process * neaten * use workflow in actions * install docs * Correct module install dir * debug dist workflow * Install headers * neaten header globbing * Neaten dependency handling * make lib and bin variables * Do not set compiler for vs builds, unnecessary * docs * allow setting explicit source for target * maintain archive subdir * cmake docs * install headers * place targets into folders * cmake docs * nest external projects in folder * remove name clash * Neater external packages * meta targets in folder structure * cleaner slang-glslang dll * Add missing static directive to slang-no-embedded-stdlib * more robust module copying * make slang-test the startup project * folder tweak * Make FETCH_BINARY the default on all platforms * Set DEBUG_DIR * add natvis files to source * skip spirv tests * remove test step from debug dist * Add build to .gitignore * redo warnings to be more like premake * Update imgui * clean more premake files * Disable PCH for glslang, gcc throws a warning * Add /MP for msvc builds * warning wobble * Add script to build llvm * Add slang-llvm and generators components * Build slang-llvm in ci * comments * fetch llvm with git * better abi approximation for cache * better sccache key * formatting * Correct logic around disabling problematic debug info for ccache * exclude gcc and clang from windows ci * Make dist workflows use system llvm * naming * restore normal dist builds * formatting * run tests in ci * Correct slang-llvm url setting * Rely on the system to find the test tool library * actions matrix wiggle * cope with OSX ancient bash * Correct compilers on windows * more ci debugging * Correct rpath handling on OSX * neaten * correct path to slang-llvm * Correct rpath separator on osx * Find slang-llvm correctly * smoke tests only on osx * ci wobble * Give MacOS module a dylib suffix * get swiftshader correctly * cope with bsd cp * remove debug output * full tests on osx * ci wobble * Add some vk tests to expected failures * simplify ci * ci wobble * exclude dx12 tests from github ci * remove cmake code for building llvm * warnings * warnings as errors for cl * spirv-tools in path * add aarch64 ci build * Add SLANG_GENERATORS_PATH option for prebuilt generators * neaten * Correct generator target name * remove yaml anchors because github actions does not support them * Demote CMake in docs Also add info on cross compiling * Restore premake CI * use minimal ci for cmake * Write miniz_export for premake build and .gitignore it * Mention build config tool options in docs * Remove redefined macro for miniz * regenerate vs project
1 parent 9903688
bump-glslang.sh
#!/usr/bin/env bash
set -e
EXTERNAL_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
refDef=refs/heads/master
ref=$refDef
upstreamDef=https://github.com/KhronosGroup/glslang
upstream=$upstreamDef
while [[ "$#" -gt 0 ]]; do
case $1 in
-h | --help) help=1 ;;
--release)
ref="refs/tags/$2"
shift
;;
--ref)
ref="$2"
shift
;;
--upstream)
upstream="$2"
shift
;;
--do-commit)
do_commit=1
;;
*)
echo "Unknown parameter passed: $1" >&2
exit 1
;;
esac
shift
done
if [ $help ]; then
me=$(basename "$0")
cat <<EOF
$me: Update external/glslang and dependencies
- Merge the latest upstream glslang (or a specified commit)
- Checkout the 'known good' revision of and spirv-headers
- Merge the 'known_good' revision of spirv-tools with our changes
- Regenerate the contents of external/glslang-generated and external/spirv-tools-generated
- Optionally commit the changes
Options:
--ref 2b2523f : merge this specific commit into our branch
defaults to $refDef
--release foo : short for --ref refs/tags/foo
--upstream https://example.com/glslang
: Specify the url of the repo from which to merge
defaults to $upstreamDef
--do-commit : Commit the changes to git
EOF
exit
fi
big_msg()
{
echo
echo "################################################################"
echo "$1"
echo "################################################################"
}
require_bin()
{
if ! command -v "$1" &> /dev/null
then
echo "This script needs $1, but it isn't in \$PATH"
missing_bin=1
fi
}
require_bin "jq"
require_bin "git"
require_bin "python"
require_bin "cmake"
if [ $missing_bin ]; then
exit 1
fi
glslang=$EXTERNAL_DIR/glslang
glslang_generated=$EXTERNAL_DIR/glslang-generated
spirv_headers=$EXTERNAL_DIR/spirv-headers
spirv_tools=$EXTERNAL_DIR/spirv-tools
spirv_tools_generated=$EXTERNAL_DIR/spirv-tools-generated
effcee=$spirv_tools/external/effcee
re2=$spirv_tools/external/re2
if ! test -f "$glslang/.git"; then
echo "$glslang doesn't appear to be a git repo"
echo "Perhaps you need to 'git submodule update --init'"
exit 1
fi
known_good_commit(){
jq <"$glslang/known_good.json" \
".commits | .[] | select(.name == \"$1\") | .commit" \
--raw-output
}
bump_dep(){
commit=$(known_good_commit "$2")
big_msg "Fetching $commit from origin in $1"
git -C "$1" fetch origin "$commit"
big_msg "Checking out $commit in $1"
git -C "$1" checkout "$commit"
}
declare -A old_ref
declare -A new_ref
merge_dep(){
name=$1
dir=$2
up=$3
r=$4
old_ref["$1"]=$(git -C "$dir" describe --exclude master-tot --tags HEAD)
big_msg "Fetching $name $r from $up"
git -C "$dir" fetch --tags --force "$up"
git -C "$dir" fetch "$up" "$r"
big_msg "Merging $r into our branch"
git -C "$dir" merge --no-edit FETCH_HEAD
new_ref["$1"]=$(git -C "$dir" describe --exclude master-tot --tags HEAD)
}
merge_dep glslang "$glslang" "$upstream" "$ref"
spirv_tools_upstream=https://github.com/$(
jq <"$glslang/known_good.json" \
".commits | .[] | select(.name == \"spirv-tools\") | .subrepo" \
--raw-output
)
merge_dep spirv-tools "$spirv_tools" "$spirv_tools_upstream" "$(known_good_commit "spirv-tools")"
bump_dep "$spirv_headers" "spirv-tools/external/spirv-headers"
# Make sure we have the dependencies of spirv-tools up to date
test -d "$effcee" || git clone https://github.com/google/effcee.git "$effcee"
git -C "$effcee" pull
test -d "$re2" || git clone https://github.com/google/re2.git "$re2"
git -C "$re2" pull
rm -rf "$spirv_tools/external/spirv-headers"
ln -s "$spirv_headers" "$spirv_tools/external/spirv-headers"
#
# We have now checked out everything, time to generate the files for
# glslang-generated and friends.
#
big_msg "Generating files for glslang-generated"
set -x
(cd "$glslang" && python build_info.py . -i build_info.h.tmpl -o "$glslang_generated"/glslang/build_info.h)
set +x
big_msg "Generating files for spirv-tools"
build="$spirv_tools/build"
mkdir -p "$build"
echo "Building spirv-tools"
cmake -Wno-dev -B "$build" "$spirv_tools"
# These are the targets which generate .inc and .h files (just what we need,
# specify them here to avoid a lengthy compile)
cmake --build "$build" \
--target spirv-tools-build-version \
--target core_tables \
--target enum_string_mapping \
--target extinst_tables
echo "Replacing existing .inc and .h files in $spirv_tools_generated"
set -x
rm -f "$spirv_tools_generated/*.{inc,h}"
cp --target-directory "$spirv_tools_generated" "$build"/*.{inc,h}
set +x
if [ $do_commit ]; then
big_msg "Committing changes"
msg=$(cat <<EOF
external/glslang: ${old_ref["glslang"]} -> ${new_ref["glslang"]}
external/spirv-tools: ${old_ref["spirv-tools"]} -> ${new_ref["spirv-tools"]}"
EOF
)
git commit \
--message "$msg" \
"$glslang" \
"$glslang_generated" \
"$spirv_headers" \
"$spirv_tools" \
"$spirv_tools_generated"
else
cat <<EOFF
Commit these changes with:
msg=\$(cat <<EOF
external/glslang: ${old_ref["glslang"]} -> ${new_ref["glslang"]}
external/spirv-tools: ${old_ref["spirv-tools"]} -> ${new_ref["spirv-tools"]}"
EOF
)
git commit \\
--message "\$msg"
"$glslang" \\
"$glslang_generated" \\
"$spirv_headers" \\
"$spirv_tools" \\
"$spirv_tools_generated"
EOFF
fi
echo "Please also don't forget to push the new commits in external/glslang and"
echo "external/spirv-tools to our forks!"
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...