feat: updated engine version to 4.4-rc1

This commit is contained in:
Sara 2025-02-23 14:38:14 +01:00
parent ee00efde1f
commit 21ba8e33af
5459 changed files with 1128836 additions and 198305 deletions

View file

@ -36,11 +36,16 @@ for file in sys.argv[1:]:
break
if HEADER_CHECK_OFFSET < 0:
invalid.append(file)
continue
HEADER_BEGIN_OFFSET = HEADER_CHECK_OFFSET + 1
HEADER_END_OFFSET = len(lines) - 1
if HEADER_BEGIN_OFFSET >= HEADER_END_OFFSET:
invalid.append(file)
continue
split = file.split("/") # Already in posix-format.
prefix = ""

21
engine/misc/scripts/install_d3d12_sdk_windows.py Executable file → Normal file
View file

@ -6,16 +6,9 @@ import subprocess
import sys
import urllib.request
# Enable ANSI escape code support on Windows 10 and later (for colored console output).
# <https://github.com/python/cpython/issues/73245>
if sys.platform == "win32":
from ctypes import byref, c_int, windll
sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), "../../"))
stdout_handle = windll.kernel32.GetStdHandle(c_int(-11))
mode = c_int(0)
windll.kernel32.GetConsoleMode(c_int(stdout_handle), byref(mode))
mode = c_int(mode.value | 4)
windll.kernel32.SetConsoleMode(c_int(stdout_handle), mode)
from misc.utility.color import Ansi
# Base Godot dependencies path
# If cross-compiling (no LOCALAPPDATA), we install in `bin`
@ -49,7 +42,7 @@ if not os.path.exists(deps_folder):
os.makedirs(deps_folder)
# Mesa NIR
print("\x1b[1m[1/3] Mesa NIR\x1b[0m")
print(f"{Ansi.BOLD}[1/3] Mesa NIR{Ansi.RESET}")
if os.path.isfile(mesa_archive):
os.remove(mesa_archive)
print(f"Downloading Mesa NIR {mesa_filename} ...")
@ -76,7 +69,7 @@ if dlltool == "":
dlltool = shutil.which("x86_64-w64-mingw32-dlltool") or ""
has_mingw = gendef != "" and dlltool != ""
print("\x1b[1m[2/3] WinPixEventRuntime\x1b[0m")
print(f"{Ansi.BOLD}[2/3] WinPixEventRuntime{Ansi.RESET}")
if os.path.isfile(pix_archive):
os.remove(pix_archive)
print(f"Downloading WinPixEventRuntime {pix_version} ...")
@ -107,7 +100,7 @@ else:
print(f"WinPixEventRuntime {pix_version} installed successfully.\n")
# DirectX 12 Agility SDK
print("\x1b[1m[3/3] DirectX 12 Agility SDK\x1b[0m")
print(f"{Ansi.BOLD}[3/3] DirectX 12 Agility SDK{Ansi.RESET}")
if os.path.isfile(agility_sdk_archive):
os.remove(agility_sdk_archive)
print(f"Downloading DirectX 12 Agility SDK {agility_sdk_version} ...")
@ -123,5 +116,5 @@ os.remove(agility_sdk_archive)
print(f"DirectX 12 Agility SDK {agility_sdk_version} installed successfully.\n")
# Complete message
print(f'\x1b[92mAll Direct3D 12 SDK components were installed to "{deps_folder}" successfully!\x1b[0m')
print('\x1b[92mYou can now build Godot with Direct3D 12 support enabled by running "scons d3d12=yes".\x1b[0m')
print(f'{Ansi.GREEN}All Direct3D 12 SDK components were installed to "{deps_folder}" successfully!{Ansi.RESET}')
print(f'{Ansi.GREEN}You can now build Godot with Direct3D 12 support enabled by running "scons d3d12=yes".{Ansi.RESET}')

View file

@ -2,21 +2,40 @@
set -euo pipefail
IFS=$'\n\t'
new_ver_full=''
# Check currently installed and latest available Vulkan SDK versions.
if command -v jq 2>&1 >/dev/null; then
curl -L "https://sdk.lunarg.com/sdk/download/latest/mac/config.json" -o /tmp/vulkan-sdk.json
new_ver_full=`jq -r '.version' /tmp/vulkan-sdk.json`
new_ver=`echo "$new_ver_full" | awk -F. '{ printf("%d%02d%04d%02d\n", $1,$2,$3,$4); }';`
rm -f /tmp/vulkan-sdk.json
for f in $HOME/VulkanSDK/*; do
if [ -d "$f" ]; then
f=`echo "${f##*/}" | awk -F. '{ printf("%d%02d%04d%02d\n", $1,$2,$3,$4); }';`
if [ $f -ge $new_ver ]; then
echo 'Latest or newer Vulkan SDK is already installed. Skipping installation.'
exit 0
fi
fi
done
fi
# Download and install the Vulkan SDK.
curl -L "https://sdk.lunarg.com/sdk/download/latest/mac/vulkan-sdk.dmg" -o /tmp/vulkan-sdk.dmg
hdiutil attach /tmp/vulkan-sdk.dmg -mountpoint /Volumes/vulkan-sdk
/Volumes/vulkan-sdk/InstallVulkan.app/Contents/MacOS/InstallVulkan \
--accept-licenses --default-answer --confirm-command install
curl -L "https://sdk.lunarg.com/sdk/download/latest/mac/vulkan-sdk.zip" -o /tmp/vulkan-sdk.zip
unzip /tmp/vulkan-sdk.zip -d /tmp
cnt=5
until hdiutil detach -force /Volumes/vulkan-sdk
do
[[ cnt -eq "0" ]] && break
sleep 1
((cnt--))
done
if [ -d "/tmp/InstallVulkan-$new_ver_full.app" ]; then
/tmp/InstallVulkan-$new_ver_full.app/Contents/MacOS/InstallVulkan-$new_ver_full --accept-licenses --default-answer --confirm-command install
rm -rf /tmp/InstallVulkan-$new_ver_full.app
elif [ -d "/tmp/InstallVulkan.app" ]; then
/tmp/InstallVulkan.app/Contents/MacOS/InstallVulkan --accept-licenses --default-answer --confirm-command install
rm -rf /tmp/InstallVulkan.app
fi
rm -f /tmp/vulkan-sdk.dmg
rm -f /tmp/vulkan-sdk.zip
echo 'Vulkan SDK installed successfully! You can now build Godot by running "scons".'

View file

@ -0,0 +1,120 @@
#!/usr/bin/env python3
# Script used to dump case mappings from
# the Unicode Character Database to the `ucaps.h` file.
# NOTE: This script is deliberately not integrated into the build system;
# you should run it manually whenever you want to update the data.
import os
import sys
from typing import Final, List, Tuple
from urllib.request import urlopen
if __name__ == "__main__":
sys.path.insert(1, os.path.join(os.path.dirname(__file__), "../../"))
from methods import generate_copyright_header
URL: Final[str] = "https://www.unicode.org/Public/16.0.0/ucd/UnicodeData.txt"
lower_to_upper: List[Tuple[str, str]] = []
upper_to_lower: List[Tuple[str, str]] = []
def parse_unicode_data() -> None:
lines: List[str] = [line.decode("utf-8") for line in urlopen(URL)]
for line in lines:
split_line: List[str] = line.split(";")
code_value: str = split_line[0].strip()
uppercase_mapping: str = split_line[12].strip()
lowercase_mapping: str = split_line[13].strip()
if uppercase_mapping:
lower_to_upper.append((f"0x{code_value}", f"0x{uppercase_mapping}"))
if lowercase_mapping:
upper_to_lower.append((f"0x{code_value}", f"0x{lowercase_mapping}"))
def make_cap_table(table_name: str, len_name: str, table: List[Tuple[str, str]]) -> str:
result: str = f"static const int {table_name}[{len_name}][2] = {{\n"
for first, second in table:
result += f"\t{{ {first}, {second} }},\n"
result += "};\n\n"
return result
def generate_ucaps_fetch() -> None:
parse_unicode_data()
source: str = generate_copyright_header("ucaps.h")
source += f"""
#ifndef UCAPS_H
#define UCAPS_H
// This file was generated using the `misc/scripts/ucaps_fetch.py` script.
#define LTU_LEN {len(lower_to_upper)}
#define UTL_LEN {len(upper_to_lower)}\n\n"""
source += make_cap_table("caps_table", "LTU_LEN", lower_to_upper)
source += make_cap_table("reverse_caps_table", "UTL_LEN", upper_to_lower)
source += """static int _find_upper(int ch) {
\tint low = 0;
\tint high = LTU_LEN - 1;
\tint middle;
\twhile (low <= high) {
\t\tmiddle = (low + high) / 2;
\t\tif (ch < caps_table[middle][0]) {
\t\t\thigh = middle - 1; // Search low end of array.
\t\t} else if (caps_table[middle][0] < ch) {
\t\t\tlow = middle + 1; // Search high end of array.
\t\t} else {
\t\t\treturn caps_table[middle][1];
\t\t}
\t}
\treturn ch;
}
static int _find_lower(int ch) {
\tint low = 0;
\tint high = UTL_LEN - 1;
\tint middle;
\twhile (low <= high) {
\t\tmiddle = (low + high) / 2;
\t\tif (ch < reverse_caps_table[middle][0]) {
\t\t\thigh = middle - 1; // Search low end of array.
\t\t} else if (reverse_caps_table[middle][0] < ch) {
\t\t\tlow = middle + 1; // Search high end of array.
\t\t} else {
\t\t\treturn reverse_caps_table[middle][1];
\t\t}
\t}
\treturn ch;
}
#endif // UCAPS_H
"""
ucaps_path: str = os.path.join(os.path.dirname(__file__), "../../core/string/ucaps.h")
with open(ucaps_path, "w", newline="\n") as f:
f.write(source)
print("`ucaps.h` generated successfully.")
if __name__ == "__main__":
generate_ucaps_fetch()

View file

@ -8,6 +8,7 @@ fi
if [ $# != 1 ]; then
echo "Usage: @0 <path-to-godot-executable>"
exit 1
fi
api_validation_dir="$( dirname -- "$( dirname -- "${BASH_SOURCE[0]//\.\//}" )" )/extension_api_validation/"
@ -70,7 +71,9 @@ while read -r file; do
obsolete_validation_error="$(comm -13 "$validation_output" "$allowed_errors")"
if [ -n "$obsolete_validation_error" ] && [ "$warn_extra" = "1" ]; then
make_annotation "The following validation errors no longer occur (compared to $reference_tag):" "$obsolete_validation_error" warning "$file"
#make_annotation "The following validation errors no longer occur (compared to $reference_tag):" "$obsolete_validation_error" warning "$file"
echo "The following validation errors no longer occur (compared to $reference_tag):"
echo "$obsolete_validation_error"
fi
if [ -n "$new_validation_error" ]; then
make_annotation "Compatibility to $reference_tag is broken in the following ways:" "$new_validation_error" error "$file"