Skip to content

Workflow file for this run

name: 🦕 C++ GDExtension
on: push
env:
VCPKG_ROOT: "${{ github.workspace }}/vcpkg"
vcpkg_tag: 2024.03.25
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.12
- 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
- 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: addons/imgui-godot/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.12
- 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
- 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: addons/imgui-godot/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.12
- 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 scripts/vcpkg-macos.sh
- name: GDScript bindings
run: |
cd gdext
pip install ply
brew install clang-format
- 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: addons/imgui-godot/bin
package:
name: 📦Package
runs-on: ubuntu-latest
needs: [windows, linux, macos]
steps:
- uses: actions/checkout@v3
with:
submodules: true
- uses: actions/download-artifact@v3
with:
path: addons/imgui-godot/bin
- run: ls -R
working-directory: addons/imgui-godot/bin
- name: Extract
run: |
cd addons/imgui-godot/bin
rm *.exp
rm *.lib
- name: Upload PDBs
uses: actions/upload-artifact@v3
with:
name: pdbs
path: addons/imgui-godot/bin/*.pdb
- name: Prepare files
id: prep
run: |
ls -R
rm addons/imgui-godot/bin/*.pdb
cp -r gdext/include/*.h addons/imgui-godot/include/
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 < addons/imgui-godot/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
rm -rf gdext
- name: Upload package
uses: actions/upload-artifact@v3
with:
name: ${{ steps.prep.outputs.pkgfn }}
path: |
.
!.git*