mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-02-06 07:14:55 +08:00
[godot] Fixe Live++ patch for v4, fix VSC build task.
This commit is contained in:
parent
0b5621ccd4
commit
63d0cb5ed2
22
spine-godot/.vscode/tasks.json
vendored
22
spine-godot/.vscode/tasks.json
vendored
@ -10,11 +10,23 @@
|
||||
"cwd": "${workspaceFolder}/godot"
|
||||
},
|
||||
"args": [
|
||||
"-j 16",
|
||||
"-j",
|
||||
"16",
|
||||
"target=editor",
|
||||
"dev_build=yes",
|
||||
"custom_modules=\"${workspaceFolder}/spine_godot"
|
||||
],
|
||||
"problemMatcher": "$msCompile"
|
||||
"problemMatcher": "$msCompile",
|
||||
"windows": {
|
||||
"args": [
|
||||
"-j",
|
||||
"16",
|
||||
"target=editor",
|
||||
"dev_build=yes",
|
||||
"custom_modules=\"${workspaceFolder}/spine_godot",
|
||||
"livepp=${env:LIVEPP}"
|
||||
]
|
||||
},
|
||||
},
|
||||
{
|
||||
"label": "build-v3",
|
||||
@ -25,13 +37,15 @@
|
||||
"cwd": "${workspaceFolder}/godot"
|
||||
},
|
||||
"args": [
|
||||
"-j 16",
|
||||
"-j",
|
||||
"16",
|
||||
"target=debug",
|
||||
"custom_modules=\"${workspaceFolder}/spine_godot"
|
||||
],
|
||||
"windows": {
|
||||
"args": [
|
||||
"-j 16",
|
||||
"-j",
|
||||
"16",
|
||||
"target=debug",
|
||||
"custom_modules=\"${workspaceFolder}/spine_godot",
|
||||
"livepp=${env:LIVEPP}"
|
||||
|
||||
127
spine-godot/build/build-templates-v4.sh
Normal file
127
spine-godot/build/build-templates-v4.sh
Normal file
@ -0,0 +1,127 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
|
||||
pushd $dir > /dev/null
|
||||
|
||||
if [ ! "$#" -eq 1 ]; then
|
||||
echo "Usage: ./build-templates.sh <platform>"
|
||||
echo
|
||||
echo "e.g.:"
|
||||
echo " ./build-templates.sh windows"
|
||||
echo " ./build-templates.sh linux"
|
||||
echo " ./build-templates.sh macos"
|
||||
echo " ./build-templates.sh ios"
|
||||
echo " ./build-templates.sh android"
|
||||
echo " ./build-templates.sh web"
|
||||
echo
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -d ../godot ]; then
|
||||
echo "No Godot clone found. Run ./setup.sh <Godot branch or tag> <dev> first."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
platform=${1%/}
|
||||
|
||||
cpus=2
|
||||
if [ "$OSTYPE" = "msys" ]; then
|
||||
cpus=$NUMBER_OF_PROCESSORS
|
||||
elif [[ "$OSTYPE" = "darwin"* ]]; then
|
||||
cpus=$(sysctl -n hw.logicalcpu)
|
||||
else
|
||||
cpus=$(grep -c ^processor /proc/cpuinfo)
|
||||
fi
|
||||
|
||||
pushd ../godot
|
||||
if [ "$platform" = "windows" ]; then
|
||||
# --- Windows ---
|
||||
#generates windows_64_debug.exe and windows_64_release.exe
|
||||
scons platform=windows tools=no target=release custom_modules="../spine_godot" --jobs=$cpus
|
||||
scons platform=windows tools=no target=release_debug custom_modules="../spine_godot" --jobs=$cpus
|
||||
cp bin/godot.windows.opt.64.exe bin/windows_64_release.exe
|
||||
cp bin/godot.windows.opt.debug.64.exe bin/windows_64_debug.exe
|
||||
|
||||
elif [ "$platform" = "macos" ]; then
|
||||
# --- macOS ---
|
||||
# generates osx.zip
|
||||
|
||||
scons platform=osx tools=no target=release arch=x86_64 custom_modules="../spine_godot" --jobs=$cpus
|
||||
scons platform=osx tools=no target=release_debug arch=x86_64 custom_modules="../spine_godot" --jobs=$cpus
|
||||
scons platform=osx tools=no target=release arch=arm64 custom_modules="../spine_godot" --jobs=$cpus
|
||||
scons platform=osx tools=no target=release_debug arch=arm64 custom_modules="../spine_godot" --jobs=$cpus
|
||||
lipo -create bin/godot.osx.opt.x86_64 bin/godot.osx.opt.arm64 -output bin/godot.osx.opt.universal
|
||||
lipo -create bin/godot.osx.opt.debug.x86_64 bin/godot.osx.opt.debug.arm64 -output bin/godot.osx.opt.debug.universal
|
||||
strip -S -x bin/godot.osx.opt.universal
|
||||
|
||||
pushd bin
|
||||
cp -r ../misc/dist/osx_template.app .
|
||||
mkdir -p osx_template.app/Contents/MacOS
|
||||
cp godot.osx.opt.universal osx_template.app/Contents/MacOS/godot_osx_release.64
|
||||
cp godot.osx.opt.debug.universal osx_template.app/Contents/MacOS/godot_osx_debug.64
|
||||
chmod +x osx_template.app/Contents/MacOS/godot_osx*
|
||||
rm -rf osx.zip
|
||||
zip -q -9 -r osx.zip osx_template.app
|
||||
popd
|
||||
elif [ "$platform" = "ios" ]; then
|
||||
# --- iOS --
|
||||
# generates iphone.zip
|
||||
|
||||
scons p=iphone tools=no target=release arch=arm64 custom_modules="../spine_godot" --jobs=$cpus
|
||||
scons p=iphone tools=no target=release_debug arch=arm64 custom_modules="../spine_godot" --jobs=$cpus
|
||||
scons p=iphone tools=no target=release arch=arm64 ios_simulator=yes custom_modules="../spine_godot" --jobs=$cpus
|
||||
scons p=iphone tools=no target=release arch=x86_64 ios_simulator=yes custom_modules="../spine_godot" --jobs=$cpus
|
||||
scons p=iphone tools=no target=release_debug arch=arm64 ios_simulator=yes custom_modules="../spine_godot" --jobs=$cpus
|
||||
scons p=iphone tools=no target=release_debug arch=x86_64 ios_simulator=yes custom_modules="../spine_godot" --jobs=$cpus
|
||||
lipo -create bin/libgodot.iphone.opt.arm64.simulator.a bin/libgodot.iphone.opt.x86_64.simulator.a -output bin/libgodot.iphone.opt.simulator.a
|
||||
lipo -create bin/libgodot.iphone.opt.debug.arm64.simulator.a bin/libgodot.iphone.opt.debug.x86_64.simulator.a -output bin/libgodot.iphone.opt.debug.simulator.a
|
||||
strip -S -x bin/libgodot.iphone.opt.arm64.a
|
||||
strip -S -x bin/libgodot.iphone.opt.simulator.a
|
||||
|
||||
pushd bin
|
||||
cp -r ../misc/dist/ios_xcode .
|
||||
cp libgodot.iphone.opt.arm64.a ios_xcode/libgodot.iphone.release.xcframework/ios-arm64/libgodot.a
|
||||
cp libgodot.iphone.opt.simulator.a ios_xcode/libgodot.iphone.release.xcframework/ios-arm64_x86_64-simulator/libgodot.a
|
||||
cp libgodot.iphone.opt.debug.arm64.a ios_xcode/libgodot.iphone.debug.xcframework/ios-arm64/libgodot.a
|
||||
cp libgodot.iphone.opt.debug.simulator.a ios_xcode/libgodot.iphone.debug.xcframework/ios-arm64_x86_64-simulator/libgodot.a
|
||||
rm -rf iphone.zip
|
||||
pushd ios_xcode
|
||||
zip -q -9 -r ../iphone.zip *
|
||||
popd
|
||||
popd
|
||||
elif [ "$platform" = "web" ]; then
|
||||
# --- WEB ---
|
||||
# generates webassembly_debug.zip, webassembly_release.zip
|
||||
scons platform=javascript tools=no target=release custom_modules="../spine_godot" --jobs=$cpus
|
||||
scons platform=javascript tools=no target=release_debug custom_modules="../spine_godot" --jobs=$cpus
|
||||
mv bin/godot.javascript.opt.zip bin/webassembly_release.zip
|
||||
mv bin/godot.javascript.opt.debug.zip bin/webassembly_debug.zip
|
||||
elif [ "$platform" = "android" ]; then
|
||||
# --- ANROID ---
|
||||
# generates android_release.apk, android_debug.apk, android_source.zip
|
||||
scons platform=android target=release android_arch=armv7 custom_modules="../spine_godot" --jobs=$cpus
|
||||
scons platform=android target=release_debug android_arch=armv7 custom_modules="../spine_godot" --jobs=$cpus
|
||||
scons platform=android target=release android_arch=arm64v8 custom_modules="../spine_godot" --jobs=$cpus
|
||||
scons platform=android target=release_debug android_arch=arm64v8 custom_modules="../spine_godot" --jobs=$cpus
|
||||
|
||||
pushd platform/android/java
|
||||
chmod a+x gradlew
|
||||
./gradlew generateGodotTemplates
|
||||
popd
|
||||
elif [ "$platform" = "linux" ]; then
|
||||
# --- Linix ---
|
||||
# generates linux_x11_64_release, linux_x11_64_debug
|
||||
scons platform=x11 tools=no target=release bits=64 custom_modules="../spine_godot" --jobs=$cpus
|
||||
scons platform=x11 tools=no target=release_debug bits=64 custom_modules="../spine_godot" --jobs=$cpus
|
||||
strip bin/godot.x11.opt.64
|
||||
strip bin/godot.x11.opt.debug.64
|
||||
chmod a+x bin/godot.x11.opt.64
|
||||
chmod a+x bin/godot.x11.opt.debug.64
|
||||
cp bin/godot.x11.opt.64 bin/linux_x11_64_release
|
||||
cp bin/godot.x11.opt.debug.64 bin/linux_x11_64_debug
|
||||
else
|
||||
echo "Unknown platform: $platform"
|
||||
exit 1
|
||||
fi
|
||||
popd
|
||||
75
spine-godot/build/build-v4.sh
Normal file
75
spine-godot/build/build-v4.sh
Normal file
@ -0,0 +1,75 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
|
||||
pushd $dir > /dev/null
|
||||
|
||||
if [ ! "$#" -eq 1 ]; then
|
||||
echo "Usage: ./build-v4.sh <target>"
|
||||
echo
|
||||
echo "e.g.:"
|
||||
echo " ./build.sh editor"
|
||||
echo " ./build.sh template_debug"
|
||||
echo
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -d ../godot ]; then
|
||||
echo "No Godot clone found. Run ./setup.sh <Godot branch or tag> <dev> first."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
target="target=${1%/}"
|
||||
dev="false"
|
||||
if [ -f "../godot/custom.py" ]; then
|
||||
dev="true"
|
||||
fi
|
||||
|
||||
cpus=2
|
||||
if [ "$OSTYPE" = "msys" ]; then
|
||||
cpus=$NUMBER_OF_PROCESSORS
|
||||
elif [[ "$OSTYPE" = "darwin"* ]]; then
|
||||
cpus=$(sysctl -n hw.logicalcpu)
|
||||
else
|
||||
cpus=$(grep -c ^processor /proc/cpuinfo)
|
||||
fi
|
||||
|
||||
echo "CPUS: $cpus"
|
||||
|
||||
pushd ../godot
|
||||
if [ `uname` == 'Darwin' ] && [ $dev = "false" ]; then
|
||||
scons $target arch=x86_64 compiledb=yes custom_modules="../spine_godot" --jobs=$cpus
|
||||
scons $target arch=arm64 compiledb=yes custom_modules="../spine_godot" --jobs=$cpus
|
||||
|
||||
pushd bin
|
||||
cp -r ../misc/dist/osx_tools.app .
|
||||
mv osx_tools.app Godot.app
|
||||
mkdir -p Godot.app/Contents/MacOS
|
||||
if [ "$target" = "debug" ]; then
|
||||
lipo -create godot.osx.tools.x86_64 godot.osx.tools.arm64 -output godot.osx.tools.universal
|
||||
strip -S -x godot.osx.tools.universal
|
||||
cp godot.osx.tools.universal Godot.app/Contents/MacOS/Godot
|
||||
else
|
||||
lipo -create godot.osx.opt.tools.x86_64 godot.osx.opt.tools.arm64 -output godot.osx.opt.tools.universal
|
||||
strip -S -x godot.osx.opt.tools.universal
|
||||
cp godot.osx.opt.tools.universal Godot.app/Contents/MacOS/Godot
|
||||
fi
|
||||
chmod +x Godot.app/Contents/MacOS/Godot
|
||||
popd
|
||||
else
|
||||
if [ "$OSTYPE" = "msys" ]; then
|
||||
target="$target vsproj=yes livepp=$LIVEPP"
|
||||
fi
|
||||
if [ "$dev" = "true" ]; then
|
||||
target="$target dev_build=true"
|
||||
fi
|
||||
scons $target compiledb=yes custom_modules="../spine_godot" --jobs=$cpus
|
||||
cp compile_commands.json ../build
|
||||
if [ -f "bin/godot.x11.opt.tools.64" ]; then
|
||||
strip bin/godot.x11.opt.tools.64
|
||||
chmod a+x bin/godot.x11.opt.tools.64
|
||||
fi
|
||||
fi
|
||||
popd
|
||||
|
||||
popd > /dev/null
|
||||
@ -1,58 +1,60 @@
|
||||
diff --git a/methods.py b/methods.py
|
||||
index fe84641e9d0625b4f0c4d90a65839337d6120ff8..51ef8550d3a9def0a2ff88a2fde4fa096c085de9 100644
|
||||
index 7ede259..4e0b2e6 100644
|
||||
--- a/methods.py
|
||||
+++ b/methods.py
|
||||
@@ -734,6 +734,7 @@ def generate_vs_project(env, num_jobs):
|
||||
@@ -809,6 +809,7 @@ def generate_vs_project(env, num_jobs):
|
||||
"platform=windows",
|
||||
f"target={configuration_getter}",
|
||||
"progress=no",
|
||||
"tools=!tools!",
|
||||
+ "livepp=%s" % env["livepp"],
|
||||
"-j%s" % num_jobs,
|
||||
]
|
||||
|
||||
diff --git a/platform/windows/detect.py b/platform/windows/detect.py
|
||||
index 0b18fb74fb145e4d2e88ee91abe99f8f39312a46..04880a8fa8209c4002b49f964d86227974ce9ca8 100644
|
||||
index 1b55574..8bc0fb1 100644
|
||||
--- a/platform/windows/detect.py
|
||||
+++ b/platform/windows/detect.py
|
||||
@@ -44,7 +44,7 @@ def can_build():
|
||||
@@ -164,7 +164,7 @@ def detect_build_env_arch():
|
||||
|
||||
|
||||
def get_opts():
|
||||
- from SCons.Variables import BoolVariable, EnumVariable
|
||||
+ from SCons.Variables import BoolVariable, EnumVariable, PathVariable
|
||||
|
||||
mingw32 = ""
|
||||
mingw64 = ""
|
||||
@@ -73,6 +73,7 @@ def get_opts():
|
||||
BoolVariable("use_thinlto", "Use ThinLTO", False),
|
||||
mingw = os.getenv("MINGW_PREFIX", "")
|
||||
|
||||
@@ -189,6 +189,7 @@ def get_opts():
|
||||
BoolVariable("use_static_cpp", "Link MinGW/MSVC C++ runtime libraries statically", True),
|
||||
BoolVariable("use_asan", "Use address sanitizer (ASAN)", False),
|
||||
BoolVariable("debug_crt", "Compile with MSVC's debug CRT (/MDd)", False),
|
||||
+ PathVariable("livepp", "Path to the Live++ installation", "", PathVariable.PathAccept),
|
||||
]
|
||||
|
||||
|
||||
@@ -310,6 +311,19 @@ def configure_msvc(env, manual_msvc_config):
|
||||
@@ -458,6 +459,21 @@ def configure_msvc(env, vcvars_msvc_config):
|
||||
|
||||
env.AppendUnique(LINKFLAGS=["/STACK:" + str(STACK_SIZE)])
|
||||
|
||||
+ # Check if LIVEPP_PATH is set and add #define. Perform
|
||||
+ # some sanity checks.
|
||||
+ if env.get("livepp"):
|
||||
+ if env["target"] == "release_debug" or env["target"] == "debug":
|
||||
+ print("Found Live++ at %s" % env.get("livepp"))
|
||||
+ env.AppendUnique(CPPDEFINES=["LIVEPP_PATH=%s" % env.get("livepp")])
|
||||
+ env.AppendUnique(CPPPATH=[env.get("livepp")])
|
||||
+ env.AppendUnique(LINKFLAGS=["/FUNCTIONPADMIN"])
|
||||
+ if env["target"] == "editor":
|
||||
+ if os.path.exists(env.get("livepp")):
|
||||
+ print("Found Live++ at %s" % env.get("livepp"))
|
||||
+ env.AppendUnique(CPPDEFINES=["LIVEPP_PATH=%s" % env.get("livepp")])
|
||||
+ env.AppendUnique(CPPPATH=[env.get("livepp")])
|
||||
+ env.AppendUnique(LINKFLAGS=["/FUNCTIONPADMIN"])
|
||||
+ else:
|
||||
+ printf("Specified Live++ path does not exist")
|
||||
+ else:
|
||||
+ print("Live++ can only be used with targets 'debug' and 'release_debug'")
|
||||
+ print("Live++ can only be used with targets 'editor'")
|
||||
+ else:
|
||||
+ print("No Live++ specified.")
|
||||
+
|
||||
|
||||
def configure_mingw(env):
|
||||
# Workaround for MinGW. See:
|
||||
diff --git a/platform/windows/godot_windows.cpp b/platform/windows/godot_windows.cpp
|
||||
index 8de3ef294a99c6f02f6f1380e331e4bb598864ce..8e4c15dd66d1b640a352ed826b25b23917f72cc4 100644
|
||||
index a26d3ba..8b8e2a8 100644
|
||||
--- a/platform/windows/godot_windows.cpp
|
||||
+++ b/platform/windows/godot_windows.cpp
|
||||
@@ -34,6 +34,11 @@
|
||||
@ -67,7 +69,7 @@ index 8de3ef294a99c6f02f6f1380e331e4bb598864ce..8e4c15dd66d1b640a352ed826b25b239
|
||||
// For export templates, add a section; the exporter will patch it to enclose
|
||||
// the data appended to the executable (bundled PCK)
|
||||
#ifndef TOOLS_ENABLED
|
||||
@@ -147,6 +152,16 @@ char *wc_to_utf8(const wchar_t *wc) {
|
||||
@@ -149,6 +154,16 @@ char *wc_to_utf8(const wchar_t *wc) {
|
||||
}
|
||||
|
||||
int widechar_main(int argc, wchar_t **argv) {
|
||||
@ -84,7 +86,7 @@ index 8de3ef294a99c6f02f6f1380e331e4bb598864ce..8e4c15dd66d1b640a352ed826b25b239
|
||||
OS_Windows os(nullptr);
|
||||
|
||||
setlocale(LC_CTYPE, "");
|
||||
@@ -179,6 +194,11 @@ int widechar_main(int argc, wchar_t **argv) {
|
||||
@@ -185,6 +200,11 @@ int widechar_main(int argc, wchar_t **argv) {
|
||||
}
|
||||
delete[] argv_utf8;
|
||||
|
||||
@ -97,12 +99,12 @@ index 8de3ef294a99c6f02f6f1380e331e4bb598864ce..8e4c15dd66d1b640a352ed826b25b239
|
||||
}
|
||||
|
||||
diff --git a/platform/windows/os_windows.cpp b/platform/windows/os_windows.cpp
|
||||
index 8755bc65dce7e4b88fd509d0cbdbec576356c5f5..50e0d8d0b06bf76d5f4d085d010cf6a683a9e64f 100644
|
||||
index 08299d9..362de3b 100644
|
||||
--- a/platform/windows/os_windows.cpp
|
||||
+++ b/platform/windows/os_windows.cpp
|
||||
@@ -53,6 +53,11 @@
|
||||
#include <regstr.h>
|
||||
@@ -55,6 +55,11 @@
|
||||
#include <shlobj.h>
|
||||
#include <wbemcli.h>
|
||||
|
||||
+#ifdef LIVEPP_PATH
|
||||
+#include "API/LPP_API.h"
|
||||
@ -112,10 +114,11 @@ index 8755bc65dce7e4b88fd509d0cbdbec576356c5f5..50e0d8d0b06bf76d5f4d085d010cf6a6
|
||||
extern "C" {
|
||||
__declspec(dllexport) DWORD NvOptimusEnablement = 1;
|
||||
__declspec(dllexport) int AmdPowerXpressRequestHighPerformance = 1;
|
||||
@@ -677,6 +682,9 @@ void OS_Windows::run() {
|
||||
@@ -1296,6 +1301,10 @@ void OS_Windows::run() {
|
||||
if (Main::iteration()) {
|
||||
break;
|
||||
}
|
||||
+
|
||||
+#ifdef LIVEPP_PATH
|
||||
+ lpp::lppSyncPoint(livePP);
|
||||
+#endif
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user