Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/workflows/benchmarks.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ on:

jobs:
build:
name: Build and run benchmarks
name: Build and Run Benchmarks (Smoke Test)
runs-on: ubuntu-24.04

steps:
Expand All @@ -33,12 +33,12 @@ jobs:
-DBUILD_BENCHMARKS=ON -DBENCH_INCLUDE_BGL=ON -DCMAKE_BUILD_TYPE=Release
continue-on-error: false

- name: Build the benchmarks
- name: Build the Benchmarks
run: |
cmake --build build_bench/ -j$(nproc)
continue-on-error: false

- name: Execute the smoke test
- name: Execute the Smoke Test
run: |
./build_bench/benchmarks/cpp-gl-bench \
--benchmark_repetitions=1 --benchmark_display_aggregates_only=true \
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/clang.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ on:

jobs:
build:
name: Build and run tests
name: Build and Run Tests (Clang)
runs-on: ubuntu-24.04

steps:
Expand All @@ -27,12 +27,12 @@ jobs:
cmake -B build_clang -DBUILD_TESTS=ON -DCMAKE_CXX_COMPILER=$CXX -DCMAKE_C_COMPILER=$CC
continue-on-error: false

- name: Build test executable
- name: Build Tests
run: |
cmake --build build_clang/ -j$(nproc)
continue-on-error: false

- name: Run tests
- name: Run Tests
run: |
./build_clang/tests/gl
./build_clang/tests/hgl
88 changes: 88 additions & 0 deletions .github/workflows/documentation.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
name: Documentation

on:
pull_request:
branches:
- "*"
push:
tags:
- "v*"

permissions:
contents: write

jobs:
build-and-deploy:
name: Build & Deploy Documentation
runs-on: ubuntu-24.04

steps:
- name: Check out repository
uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: recursive

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.14"

- name: Install system dependencies
run: sudo apt-get update && sudo apt-get install doxygen -y

- name: Install Python dependencies (uv)
run: |
pip install uv
uv sync

- name: Validate Internal Project Versions
run: |
VERSION=$(uv run python scripts/check_version.py)
echo "project version = $VERSION"
echo "VERSION=$VERSION" >> $GITHUB_ENV

- name: Validate Git Tag (Deploy Only)
if: github.event_name == 'push'
run: |
VERSION_TAG="${GITHUB_REF_NAME}"
echo "git version tag = $VERSION_TAG"
if [[ "$VERSION_TAG" != "v$VERSION" ]]; then
echo "Error: Tag mismatch: git version tag = $VERSION_TAG, project version: v$VERSION"
exit 1
fi

- name: Build Docs (PR Validation Only)
if: github.event_name == 'pull_request'
run: make build-docs

# See: https://api.github.com/users/github-actions%5Bbot%5D
- name: Configure Git (Deploy Only)
if: github.event_name == 'push'
run: |
git config --local user.name "github-actions[bot]"
git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com"

- name: Determine if Latest Tag (Deploy Only)
if: github.event_name == 'push'
run: |
CURRENT_VERSION="v${VERSION}"
git fetch --tags --force
ALL_TAGS=$(git tag | grep -E '^v[0-9]+\.[0-9]+\.[0-9]+$' | sort -V)
LATEST_TAG=$(echo "$ALL_TAGS" | tail -n 1)

if [ "$CURRENT_VERSION" = "$LATEST_TAG" ]; then
echo "DEPLOY_LATEST=true" >> $GITHUB_ENV
else
echo "DEPLOY_LATEST=false" >> $GITHUB_ENV
fi

- name: Deploy with mike (Latest)
if: github.event_name == 'push' && env.DEPLOY_LATEST == 'true'
run: |
make docs TAGS="--push --update-aliases v${VERSION} latest"
uv run mike set-default --push latest

- name: Deploy with mike (Older Version)
if: github.event_name == 'push' && env.DEPLOY_LATEST == 'false'
run: make docs TAGS="--push v${VERSION}"
2 changes: 1 addition & 1 deletion .github/workflows/format.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ jobs:
- name: Set up python
uses: actions/setup-python@v5
with:
python-version: "3.12"
python-version: "3.14"

- name: Test formatting
shell: bash
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/gpp.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ on:

jobs:
build:
name: Build and run tests
name: Build and Run Tests (G++)
runs-on: ubuntu-24.04

steps:
Expand All @@ -27,12 +27,12 @@ jobs:
cmake -B build_gcc -DBUILD_TESTS=ON -DCMAKE_CXX_COMPILER=$CXX -DCMAKE_C_COMPILER=$CC
continue-on-error: false

- name: Build test executable
- name: Build Tests
run: |
cmake --build build_gcc/ -j$(nproc)
continue-on-error: false

- name: Run tests
- name: Run Tests
run: |
./build_gcc/tests/gl
./build_gcc/tests/hgl
4 changes: 2 additions & 2 deletions .github/workflows/licence.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ on:

jobs:
build:
name: Test code formatting
name: Test License Comments
runs-on: ubuntu-24.04

steps:
Expand All @@ -23,7 +23,7 @@ jobs:
with:
python-version: "3.12"

- name: Test formatting
- name: Validate Licence Comments
shell: bash
run: |
python3 scripts/check_licence.py
2 changes: 1 addition & 1 deletion Doxyfile
Original file line number Diff line number Diff line change
Expand Up @@ -1028,7 +1028,7 @@ EXCLUDE_PATTERNS = *.mk
# wildcard * is used, a substring. Examples: ANamespace, AClass,
# ANamespace::AClass, ANamespace::*Test

EXCLUDE_SYMBOLS = std doctest doctest_detail_test_suite_ns detail *::detail
EXCLUDE_SYMBOLS = std doctest doctest_detail_test_suite_ns detail *::detail impl *::impl

# The EXAMPLE_PATH tag can be used to specify one or more files or directories
# that contain example code fragments that are included (see the \include
Expand Down
15 changes: 11 additions & 4 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,18 +1,25 @@
# Default to 'dev' if TAGS is not specified on the command line
TAGS ?= dev

.PHONY: docs serve-docs clean-docs clean
.PHONY: docs build-docs serve-docs clean-docs clean

# Example usage: `make docs TAGS="v2.0.0 latest --update-aliases"`
# Target for CI Pull Requests: Just builds to verify everything works (no deployment)
build-docs: clean-docs
@echo "==> Building MkDocs documentation..."
doxygen Doxyfile
uv run python docs/scripts/gen_concept_docs.py --config docs/config/concepts.json --xml documentation/xml --out docs/cpp-gl
uv run mkdocs build --strict

# Example usage: `make docs TAGS="v2.0.0 latest --update-aliases --push"`
docs: clean-docs
@echo "==> Deploying MkDocs documentation locally via mike (Tags: $(TAGS))..."
@echo "==> Deploying MkDocs documentation (Tags: $(TAGS))..."
doxygen Doxyfile
uv run python docs/scripts/gen_concept_docs.py --config docs/config/concepts.json --xml documentation/xml --out docs/cpp-gl
uv run mike deploy $(TAGS)
@echo "==> Documentation deployed to local gh-pages branch."

serve-docs: docs
@echo "==> Serving versioned MkDocs documentation locally via mike..."
@echo "==> Serving versioned MkDocs documentation..."
uv run mike serve

clean-docs:
Expand Down
Loading
Loading