Skip to content

Add native GDExtension #94

Add native GDExtension

Add native GDExtension #94

Workflow file for this run

name: 🦕 C++ GDExtension
on:
push:
tags:
- "v*"
pull_request:
env:
VCPKG_ROOT: "${{ github.workspace }}/vcpkg"
vcpkg_tag: 2023.10.19
jobs:
windows:
name: 🪟Windows
runs-on: windows-latest
steps:
- uses: actions/checkout@v3
with:
submodules: true
- name: Setup Python 3.x
uses: actions/setup-python@v4
with:
python-version: 3.11
- name: Setup scons
run: |
python -m pip install scons
scons --version
- name: Get vcpkg
run: |
git clone -n https://github.com/microsoft/vcpkg
cd vcpkg
git checkout ${{ env.vcpkg_tag }}
.\bootstrap-vcpkg.bat
- name: vcpkg install
run: |
cd gdext
${{ env.VCPKG_ROOT }}\vcpkg install --triplet x64-windows-static
- name: GDScript bindings
run: |
cd gdext
pip install ply
python gds_bindings.py
- name: Build debug
run: |
cd gdext
scons debug_symbols=yes
- name: Build release
run: |
cd gdext
scons debug_symbols=yes target=template_release
- name: Upload binaries
uses: actions/upload-artifact@v3
with:
name: gdext-windows
path: gdext/proj/addons/imgui-godot-native/bin
linux:
name: 🐧Linux
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
submodules: true
- name: Setup Python 3.x
uses: actions/setup-python@v4
with:
python-version: 3.11
- name: Setup scons
run: |
python -m pip install scons
scons --version
- name: Get vcpkg
run: |
git clone -n https://github.com/microsoft/vcpkg
cd vcpkg
git checkout ${{ env.vcpkg_tag }}
./bootstrap-vcpkg.sh
- name: vcpkg install
run: |
cd gdext
${{ env.VCPKG_ROOT }}/vcpkg install --triplet x64-linux
- name: GDScript bindings
run: |
cd gdext
pip install ply
sudo apt install clang-format
python gds_bindings.py
- name: Build debug
run: |
cd gdext
scons
- name: Build release
run: |
cd gdext
scons target=template_release
- name: Upload binaries
uses: actions/upload-artifact@v3
with:
name: gdext-linux
path: gdext/proj/addons/imgui-godot-native/bin
macos:
name: 🍎macOS
runs-on: macos-latest
steps:
- uses: actions/checkout@v3
with:
submodules: true
- name: Setup Python 3.x
uses: actions/setup-python@v4
with:
python-version: 3.11
- name: Setup scons
run: |
python -m pip install scons
scons --version
- name: Get vcpkg
run: |
git clone -n https://github.com/microsoft/vcpkg
cd vcpkg
git checkout ${{ env.vcpkg_tag }}
./bootstrap-vcpkg.sh
- name: vcpkg install
run: |
cd gdext
zsh vcpkg-macos.sh
- name: GDScript bindings
run: |
cd gdext
pip install ply
brew install clang-format
python gds_bindings.py
- name: Build debug
run: |
export PATH="$(brew --prefix llvm@15)/bin:$PATH"
echo $PATH
clang++ --version
cd gdext
scons
- name: Build release
run: |
export PATH="$(brew --prefix llvm@15)/bin:$PATH"
echo $PATH
cd gdext
scons target=template_release
- name: Upload binaries
uses: actions/upload-artifact@v3
with:
name: gdext-macos
path: gdext/proj/addons/imgui-godot-native/bin
package:
name: 📦Package
runs-on: ubuntu-latest
needs: [windows, linux, macos]
steps:
- uses: actions/checkout@v3
- uses: actions/download-artifact@v3
with:
path: gdext/proj/addons/imgui-godot-native/bin
- run: ls -R
working-directory: gdext/proj/addons/imgui-godot-native/bin
- name: Extract
run: |
cd gdext/proj/addons/imgui-godot-native/bin
mv gdext-*/* .
rmdir gdext-*
rm *.exp
rm *.lib
- name: Upload PDBs
uses: actions/upload-artifact@v3
with:
name: pdbs
path: gdext/proj/addons/imgui-godot-native/bin/*.pdb
- name: Prepare files
id: prep
run: |
ls -R
mv gdext/proj/addons/imgui-godot-native addons/
ls -R
rm addons/imgui-godot-native/bin/*.pdb
cp -r gdext/include/*.h addons/imgui-godot-native/include/
git submodule status gdext/imgui | awk '{print substr($1,2)}' > addons/imgui-godot-native/include/imgui-git-commit.txt
env
imgui_ver=$(grep -m 1 "^#define IMGUI_VERSION " < gdext/imgui/imgui.h | awk '{ print $3 }' | sed 's/"//g')
godot_ver=$(grep -m 1 compatibility_minimum < gdext/proj/addons/imgui-godot-native/imgui-godot-native.gdextension | sed 's/compatibility_minimum = //')
plugin_ver=$(grep -m 1 "version=" < addons/imgui-godot/plugin.cfg | sed 's/version=//' | sed 's/"//g')
pkgfn=imgui-godot-native-${plugin_ver}_godot-${godot_ver}_imgui-${imgui_ver}
echo $pkgfn
echo "pkgfn=$pkgfn" >> $GITHUB_OUTPUT
- name: Upload package
uses: actions/upload-artifact@v3
with:
name: ${{ steps.prep.outputs.pkgfn }}
path: |
.
!.git*