Compare commits

...

13 Commits

21 changed files with 21517 additions and 492 deletions

View File

@ -11,32 +11,32 @@ on:
# Global Settings
env:
PYTHON_VERSION: "3.7"
PANDEMONIUM_BINARY_VERSION: "3.2.3"
PANDEMONIUM_BINARY_VERSION: "3.4.0"
jobs:
static-checks:
name: '📊 Static checks'
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@f1d3225b5376a0791fdee5a0e8eac5289355e43a # pin@v2
with:
submodules: true
- name: Set up Python
uses: actions/setup-python@0291cefc54fa79cd1986aee8fa5ecb89ad4defea # pin@v2
with:
python-version: ${{ env.PYTHON_VERSION }}
- name: Bootstrap
run: |
set -eux
python --version
pip install pre-commit
- name: Pre-commit hooks check
run: |
pre-commit run --all-files --show-diff-on-failure
# static-checks:
# name: '📊 Static checks'
# runs-on: ubuntu-latest
# steps:
# - name: Checkout
# uses: actions/checkout@f1d3225b5376a0791fdee5a0e8eac5289355e43a # pin@v2
# with:
# submodules: true
# - name: Set up Python
# uses: actions/setup-python@0291cefc54fa79cd1986aee8fa5ecb89ad4defea # pin@v2
# with:
# python-version: ${{ env.PYTHON_VERSION }}
# - name: Bootstrap
# run: |
# set -eux
# python --version
# pip install pre-commit
# - name: Pre-commit hooks check
# run: |
# pre-commit run --all-files --show-diff-on-failure
#################################################################################
@ -174,7 +174,7 @@ jobs:
macos-build:
name: '🍎 macOS build'
runs-on: macos-latest
runs-on: macos-13
env:
CC: clang
PLATFORM: 'osx-64'

3
.gitignore vendored
View File

@ -34,3 +34,6 @@ logs
/tests/*/lib
output.preprocessed.c
pandemonium_engine/

11
gen_copy_headers.sh Executable file
View File

@ -0,0 +1,11 @@
./pandemonium_engine/bin/pandemonium.x11.opt.tools.64 --gdnative-generate-json-api ./pandemonium_engine/modules/gdnative/api.json
cd gdnative_python/pandemonium_headers/
rm -Rf *
cp -R ../../pandemonium_engine/modules/gdnative/include/* .
cp ../../pandemonium_engine/modules/gdnative/api.json .
cp ../../pandemonium_engine/modules/gdnative/gdnative_api.json .
cd ../..

12
misc/build_containers/.gitignore vendored Normal file
View File

@ -0,0 +1,12 @@
*.tar
*.tar.gz
*.tar.bz2
*.tar.xz
*.exe
*.swp
*.dmg
*.zip
*.xip
files/mono-*/
logs/

View File

@ -0,0 +1,9 @@
FROM fedora:39
WORKDIR /root
RUN dnf -y install --setopt=install_weak_deps=False \
bash bzip2 curl file findutils git make nano patch pkgconfig python3-pip unzip which xz yasm && \
pip install scons==4.6.0
CMD /bin/bash

View File

@ -0,0 +1,25 @@
ARG img_version
FROM gdnative-python-fedora:${img_version}
# Todo host the buildroot files somewhere
ENV GODOT_SDK_LINUX_X86_64=/root/x86_64-godot-linux-gnu_sdk-buildroot
ENV GODOT_SDK_LINUX_X86_32=/root/i686-godot-linux-gnu_sdk-buildroot
ENV BASE_PATH=${PATH}
RUN dnf install -y wayland-devel && \
curl -LO https://downloads.tuxfamily.org/godotengine/toolchains/linux/2024-01-17/x86_64-godot-linux-gnu_sdk-buildroot.tar.bz2 && \
tar xf x86_64-godot-linux-gnu_sdk-buildroot.tar.bz2 && \
rm -f x86_64-godot-linux-gnu_sdk-buildroot.tar.bz2 && \
cd x86_64-godot-linux-gnu_sdk-buildroot && \
./relocate-sdk.sh && \
cd /root && \
curl -LO https://downloads.tuxfamily.org/godotengine/toolchains/linux/2024-01-17/i686-godot-linux-gnu_sdk-buildroot.tar.bz2 && \
tar xf i686-godot-linux-gnu_sdk-buildroot.tar.bz2 && \
rm -f i686-godot-linux-gnu_sdk-buildroot.tar.bz2 && \
cd i686-godot-linux-gnu_sdk-buildroot && \
./relocate-sdk.sh
CMD /bin/bash

View File

@ -0,0 +1,30 @@
ARG img_version
FROM gdnative-python-fedora:${img_version}
ENV OSX_SDK=14.2
COPY files/* /root/files/
RUN dnf -y install --setopt=install_weak_deps=False \
automake autoconf bzip2-devel cmake gcc gcc-c++ libdispatch libicu-devel libtool \
libxml2-devel openssl-devel uuid-devel yasm && \
git clone --progress https://github.com/tpoechtrager/osxcross && \
cd /root/osxcross && \
git checkout ff8d100f3f026b4ffbe4ce96d8aac4ce06f1278b && \
curl -LO https://github.com/tpoechtrager/osxcross/pull/415.patch && \
git apply 415.patch && \
ln -s /root/files/MacOSX${OSX_SDK}.sdk.tar.xz /root/osxcross/tarballs && \
export UNATTENDED=1 && \
export SDK_VERSION=${OSX_SDK} && \
# Custom build Apple Clang to ensure compatibility.
# Find the equivalent LLVM version for the SDK from:
# https://en.wikipedia.org/wiki/Xcode#Toolchain_versions
CLANG_VERSION=16.0.0 ENABLE_CLANG_INSTALL=1 INSTALLPREFIX=/usr ./build_apple_clang.sh && \
./build.sh && \
./build_compiler_rt.sh && \
rm -rf /root/osxcross/build && rm -rf /root/files
ENV OSXCROSS_ROOT=/root/osxcross
ENV PATH="/root/osxcross/target/bin:${PATH}"
CMD /bin/bash

View File

@ -0,0 +1,7 @@
ARG img_version
FROM gdnative-python-fedora:${img_version}
RUN dnf -y install --setopt=install_weak_deps=False \
mingw32-gcc mingw32-gcc-c++ mingw32-winpthreads-static mingw64-gcc mingw64-gcc-c++ mingw64-winpthreads-static
CMD /bin/bash

View File

@ -0,0 +1,25 @@
ARG img_version
FROM gdnative-python-fedora:${img_version}
RUN dnf -y install --setopt=install_weak_deps=False \
clang xar xar-devel xz-devel cpio && \
git clone --progress https://github.com/nrosenstein-stuff/pbzx && \
cd pbzx && \
git checkout bf536e167f2e514866f91d7baa0df1dff5a13711 && \
clang -O3 -llzma -lxar -I /usr/local/include pbzx.c -o pbzx
ENV XCODE_SDKV=
ENV OSX_SDKV=
CMD mkdir -p /root/xcode && \
cd /root/xcode && \
xar -xf /root/files/Xcode_${XCODE_SDKV}.xip && \
/root/pbzx/pbzx -n Content | cpio -i && \
export OSX_SDK=MacOSX${OSX_SDKV}.sdk && \
cp -r Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk /tmp/${OSX_SDK} && \
cd /tmp && \
tar -cJf /root/files/${OSX_SDK}.tar.xz ${OSX_SDK} && \
rm -rf ${OSX_SDK}

View File

@ -0,0 +1,10 @@
# Godot engine build containers
Based on https://github.com/godotengine/build-containers
This repository contains the Dockerfiles for the official Godot engine builds. These containers should help you build Godot for all platforms supported on any machine that can run Docker containers.
## Building
There is a 'build.sh' script included to build the containers themselves. The in-container build scripts will follow shortly.

View File

@ -0,0 +1,69 @@
#!/bin/bash
set -e
basedir=$(pwd)/
cd ../..
project_root=$(pwd)/
img_version=pgp
mkdir -p logs
custom_envvars=''
if [[ -z "${OFFICIAL}" ]]; then
custom_envvars='-e BUILD_NAME=official'
fi
# Windows Build
docker run ${custom_envvars} \
-v ${basedir}/engine_build_scripts:/root/engine_build_scripts \
-v ${project_root}:/root/project \
-w /root/project gdnative-python-windows:${img_version} \
bash /root/engine_build_scripts/windows.sh "$@" 2>&1 | tee logs/windows.log
# Linux Build
docker run ${custom_envvars} \
-v ${basedir}/engine_build_scripts:/root/engine_build_scripts \
-v ${project_root}:/root/project \
-w /root/project gdnative-python-linux:${img_version} \
bash /root/engine_build_scripts/linux.sh "$@" 2>&1 | tee logs/linux.log
# OSX Build
docker run ${custom_envvars} \
-v ${basedir}/engine_build_scripts:/root/engine_build_scripts \
-v ${project_root}:/root/project \
-w /root/project gdnative-python-osx:${img_version} \
bash /root/engine_build_scripts/osx.sh "$@" 2>&1 | tee logs/osx.log
# Check files
cd ./bin/
files=(
# Windows
"pandemonium.windows.opt.64.exe"
# Linux
"pandemonium.x11.opt.32"
# OSX
"pandemonium.osx.opt.universal"
)
error=0
for f in ${files[*]}
do
if [ ! -e $f ]; then
error=1
echo "$f is not present!"
fi
done
if [ $error -eq 0 ]; then
echo "All files are present!"
fi
cd ..

View File

@ -0,0 +1,30 @@
#!/bin/bash
set -e
files_root=$(pwd)/files
img_version=pe
mkdir -p logs
# You can add --no-cache as an option to docker_build below to rebuild all containers from scratch
export docker_build="docker build --build-arg img_version=${img_version} "
docker build -t gdnative-python-fedora:${img_version} -f Dockerfile.base . 2>&1 | tee logs/base.log
$docker_build -t gdnative-python-linux:${img_version} -f Dockerfile.linux . 2>&1 | tee logs/linux.log
$docker_build -t gdnative-python-windows:${img_version} -f Dockerfile.windows . 2>&1 | tee logs/windows.log
XCODE_SDK=15.2
OSX_SDK=14.2
if [ ! -e files/MacOSX${OSX_SDK}.sdk.tar.xz ]; then
if [ ! -e files/Xcode_${XCODE_SDK}.xip ]; then
echo "files/Xcode_${XCODE_SDK}.xip is required. It can be downloaded from https://developer.apple.com/download/more/ with a valid apple ID."
exit 1
fi
echo "Building OSX and iOS SDK packages. This will take a while"
$docker_build -t gdnative-python-xcode-packer:${img_version} -f Dockerfile.xcode . 2>&1 | tee logs/xcode.log
docker run -it --rm -v ${files_root}:/root/files -e XCODE_SDKV="${XCODE_SDK}" -e OSX_SDKV="${OSX_SDK}" gdnative-python-xcode-packer:${img_version} 2>&1 | tee logs/xcode_packer.log
fi
$docker_build -t gdnative-python-osx:${img_version} -f Dockerfile.osx . 2>&1 | tee logs/osx.log

View File

@ -0,0 +1,13 @@
#!/bin/bash
set -e
export PATH="${GODOT_SDK_LINUX_X86_64}/bin:${BASE_PATH}"
# Linux 64 bit
scons production=yes tools=yes target=release_debug custom_modules_shared=no debug_symbols=no platform=x11 bits=64 "$@"
export PATH="${GODOT_SDK_LINUX_X86_32}/bin:${BASE_PATH}"
# Linux 32 bit
scons production=yes tools=yes target=release_debug custom_modules_shared=no debug_symbols=no platform=x11 bits=32 "$@"

View File

@ -0,0 +1,16 @@
#!/bin/bash
set -e
# OSX
scons production=yes tools=yes target=release_debug custom_modules_shared=no debug_symbols=no platform=osx arch=x86_64 "$@" osxcross_sdk=darwin23.3
# OSX lipo
#pushd misc/osx
#./lipo.sh
#popd

View File

@ -0,0 +1,9 @@
#!/bin/bash
set -e
# Windows 64 bit
scons production=yes tools=yes target=release_debug debug_symbols=no platform=windows bits=64 "$@"
# Windows 32 bit
scons production=yes tools=yes target=release_debug debug_symbols=no platform=windows bits=32 "$@"

View File

@ -0,0 +1,118 @@
From b875d7c1360c8ff2077463d7a5a12e1cff1cc683 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= <rverschelde@gmail.com>
Date: Mon, 12 Jul 2021 13:34:32 +0200
Subject: [PATCH] compiler-rt: Add option to automate install process
Also mention that compiler-rt can be needed to build code using
`__builtin_available()`.
Fixes #278.
---
README.COMPILER-RT.md | 4 ++++
README.md | 3 +++
build_compiler_rt.sh | 33 ++++++++++++++++++++++++---------
3 files changed, 31 insertions(+), 9 deletions(-)
diff --git a/README.COMPILER-RT.md b/README.COMPILER-RT.md
index b2754dfcf..dced89686 100644
--- a/README.COMPILER-RT.md
+++ b/README.COMPILER-RT.md
@@ -10,6 +10,10 @@ Ensure you have finished `build.sh`,
then run: `./build_compiler_rt.sh`.
+By default, installation steps for compiler-rt will be printed to the terminal
+to run manually, but you can automate the installation process by defining
+`ENABLE_COMPILER_RT_INSTALL`.
+
You can verify compiler-rt is working by invoking the following command:
echo "int main(void){return 0;}" | xcrun clang -xc -o/dev/null -v - 2>&1 | \
diff --git a/README.md b/README.md
index 60d19f917..f32bf626c 100644
--- a/README.md
+++ b/README.md
@@ -33,6 +33,9 @@ It also includes scripts for optionally building
* the "compiler-rt" runtime library, and
* the `llvm-dsymutil` tool required for debugging.
+Note: The "compiler-rt" library can be needed to link code that uses the
+`__builtin_available()` runtime version check.
+
### WHAT CAN BE BUILT WITH IT? ###
diff --git a/build_compiler_rt.sh b/build_compiler_rt.sh
index 8f47262a2..508742cab 100755
--- a/build_compiler_rt.sh
+++ b/build_compiler_rt.sh
@@ -182,22 +182,39 @@ fi
rm -f $BUILD_DIR/.compiler-rt_build_complete
+# Installation. Can be either automated (ENABLE_COMPILER_RT_INSTALL) or will
+# print the commands that the user should run manually.
+
+function print_or_run() {
+ if [ -z "$ENABLE_COMPILER_RT_INSTALL" ]; then
+ echo "$@"
+ else
+ $@
+ fi
+}
+
echo ""
echo ""
echo ""
-echo "Please run the following commands by hand to install compiler-rt:"
+if [ -z "$ENABLE_COMPILER_RT_INSTALL" ]; then
+ echo "Please run the following commands by hand to install compiler-rt:"
+else
+ echo "Installing compiler-rt headers and libraries to the following paths:"
+ echo " ${CLANG_INCLUDE_DIR}"
+ echo " ${CLANG_DARWIN_LIB_DIR}"
+fi
echo ""
-echo "mkdir -p ${CLANG_INCLUDE_DIR}"
-echo "mkdir -p ${CLANG_DARWIN_LIB_DIR}"
-echo "cp -rv $BUILD_DIR/compiler-rt/compiler-rt/include/sanitizer ${CLANG_INCLUDE_DIR}"
+print_or_run mkdir -p ${CLANG_INCLUDE_DIR}
+print_or_run mkdir -p ${CLANG_DARWIN_LIB_DIR}
+print_or_run cp -rv $BUILD_DIR/compiler-rt/compiler-rt/include/sanitizer ${CLANG_INCLUDE_DIR}
if [ $USE_CMAKE -eq 1 ]; then
### CMAKE ###
- echo "cp -v $BUILD_DIR/compiler-rt/compiler-rt/build/lib/darwin/*.a ${CLANG_DARWIN_LIB_DIR}"
- echo "cp -v $BUILD_DIR/compiler-rt/compiler-rt/build/lib/darwin/*.dylib ${CLANG_DARWIN_LIB_DIR}"
+ print_or_run cp -v $BUILD_DIR/compiler-rt/compiler-rt/build/lib/darwin/*.a ${CLANG_DARWIN_LIB_DIR}
+ print_or_run cp -v $BUILD_DIR/compiler-rt/compiler-rt/build/lib/darwin/*.dylib ${CLANG_DARWIN_LIB_DIR}
### CMAKE END ###
@@ -209,7 +226,7 @@ else
function print_install_command() {
if [ -f "$1" ]; then
- echo "cp $PWD/compiler-rt/$1 ${CLANG_DARWIN_LIB_DIR}/$2"
+ print_or_run cp $PWD/compiler-rt/$1 ${CLANG_DARWIN_LIB_DIR}/$2
fi
}
@@ -219,14 +236,12 @@ else
print_install_command "cc_kext/libcompiler_rt.a" "libclang_rt.cc_kext.a"
print_install_command "profile_osx/libcompiler_rt.a" "libclang_rt.profile_osx.a"
-
print_install_command "ubsan_osx_dynamic/libcompiler_rt.dylib" \
"libclang_rt.ubsan_osx_dynamic.dylib"
print_install_command "asan_osx_dynamic/libcompiler_rt.dylib" \
"libclang_rt.asan_osx_dynamic.dylib"
-
popd &>/dev/null
### MAKE END ###

File diff suppressed because it is too large Load Diff

View File

@ -36,7 +36,7 @@
extern "C" {
#endif
#if defined(_WIN32) || defined(__ANDROID__)
#if defined(_WIN32) || defined(__ANDROID__) || defined(GDNATIVE_LINUX_BSD_WEB)
#define GDCALLINGCONV
#elif defined(__APPLE__)
#include "TargetConditionals.h"
@ -46,7 +46,7 @@ extern "C" {
#define GDCALLINGCONV __attribute__((sysv_abi))
#endif
#else // Linux/BSD/Web
#if defined(__aarch64__)
#if defined(__aarch64__) || defined(__arm__) || defined(__riscv)
#define GDCALLINGCONV
#else
#define GDCALLINGCONV __attribute__((sysv_abi))

View File

@ -55,7 +55,7 @@ typedef enum {
PANDEMONIUM_PROPERTY_HINT_ENUM, ///< hint_text= "val1,val2,val3,etc"
PANDEMONIUM_PROPERTY_HINT_EXP_EASING, /// exponential easing function (Math::ease) use "attenuation" hint string to revert (flip h), "full" to also include in/out. (ie: "attenuation,inout")
PANDEMONIUM_PROPERTY_HINT_LENGTH, ///< hint_text= "length" (as integer)
PANDEMONIUM_PROPERTY_HINT_BUTTON, // Use a button in the inspector for this property. The property's type has to be Variant::NIL. hint_text="call_func:name/theme_type" -> calls call_func on press, optional: ":name/theme_type" -> get_theme_icon("name", "theme_type")
PANDEMONIUM_PROPERTY_HINT_BUTTON, // Use a button in the inspector for this property. The property's type has to be Variant::NIL. hint_text="call_func:name/theme_type" -> calls call_func(const StringName &p_property) on press, optional: ":name/theme_type" -> get_theme_icon("name", "theme_type")
PANDEMONIUM_PROPERTY_HINT_KEY_ACCEL, ///< hint_text= "length" (as integer)
PANDEMONIUM_PROPERTY_HINT_FLAGS, ///< hint_text= "flag1,flag2,etc" (as bit flags)
PANDEMONIUM_PROPERTY_HINT_LAYERS_2D_RENDER,
@ -91,6 +91,7 @@ typedef enum {
PANDEMONIUM_PROPERTY_HINT_SAVE_FILE, ///< a file path must be passed, hint_text (optionally) is a filter "*.png,*.wav,*.doc,". This opens a save dialog
PANDEMONIUM_PROPERTY_HINT_ENUM_SUGGESTION, ///< hint_text= "val1,val2,val3,etc"
PANDEMONIUM_PROPERTY_HINT_LINK,
PANDEMONIUM_PROPERTY_HINT_LOCALE_ID,
PANDEMONIUM_PROPERTY_HINT_MAX,
} pandemonium_property_hint;
@ -105,6 +106,7 @@ typedef enum {
PANDEMONIUM_PROPERTY_USAGE_INTERNATIONALIZED = 64, //hint for internationalized strings
PANDEMONIUM_PROPERTY_USAGE_GROUP = 128, //used for grouping props in the editor
PANDEMONIUM_PROPERTY_USAGE_CATEGORY = 256,
PANDEMONIUM_PROPERTY_USAGE_ARRAY = 512, // Used in the inspector to group properties as elements of an array.
PANDEMONIUM_PROPERTY_USAGE_NO_INSTANCE_STATE = 2048,
PANDEMONIUM_PROPERTY_USAGE_RESTART_IF_CHANGED = 4096,
PANDEMONIUM_PROPERTY_USAGE_SCRIPT_VARIABLE = 8192,

View File

@ -1 +1 @@
__version__ = "0.50.0+dev"
__version__ = "0.8.3"

View File

@ -75,6 +75,7 @@ class PropertyHint(enum.IntEnum):
PANDEMONIUM_PROPERTY_HINT_SAVE_FILE = pandemonium_property_hint.PANDEMONIUM_PROPERTY_HINT_SAVE_FILE
PANDEMONIUM_PROPERTY_HINT_ENUM_SUGGESTION = pandemonium_property_hint.PANDEMONIUM_PROPERTY_HINT_ENUM_SUGGESTION
PANDEMONIUM_PROPERTY_HINT_LINK = pandemonium_property_hint.PANDEMONIUM_PROPERTY_HINT_LINK
PANDEMONIUM_PROPERTY_HINT_LOCALE_ID = pandemonium_property_hint.PANDEMONIUM_PROPERTY_HINT_LOCALE_ID
MAX = pandemonium_property_hint.PANDEMONIUM_PROPERTY_HINT_MAX
class PropertyUsageFlag(enum.IntFlag):
@ -87,6 +88,7 @@ class PropertyUsageFlag(enum.IntFlag):
INTERNATIONALIZED = pandemonium_property_usage_flags.PANDEMONIUM_PROPERTY_USAGE_INTERNATIONALIZED
GROUP = pandemonium_property_usage_flags.PANDEMONIUM_PROPERTY_USAGE_GROUP
CATEGORY = pandemonium_property_usage_flags.PANDEMONIUM_PROPERTY_USAGE_CATEGORY
PANDEMONIUM_PROPERTY_USAGE_ARRAY = pandemonium_property_usage_flags.PANDEMONIUM_PROPERTY_USAGE_ARRAY
NO_INSTANCE_STATE = pandemonium_property_usage_flags.PANDEMONIUM_PROPERTY_USAGE_NO_INSTANCE_STATE
RESTART_IF_CHANGED = pandemonium_property_usage_flags.PANDEMONIUM_PROPERTY_USAGE_RESTART_IF_CHANGED
SCRIPT_VARIABLE = pandemonium_property_usage_flags.PANDEMONIUM_PROPERTY_USAGE_SCRIPT_VARIABLE