Skip to content

Multi-threaded custom pipelines #4870

Multi-threaded custom pipelines

Multi-threaded custom pipelines #4870

Workflow file for this run

name: CI
on: [ push, pull_request ]
jobs:
build-linux:
runs-on: ubuntu-latest
timeout-minutes: 30
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v3
- name: install bake
run: |
git clone https://github.com/SanderMertens/bake
make -C bake/build-$(uname)
bake/bake setup
- name: build flecs
run: |
bake --strict
build-macos:
runs-on: macOS-latest
timeout-minutes: 30
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v3
- name: install bake
run: |
git clone https://github.com/SanderMertens/bake
make -C bake/build-$(uname)
bake/bake setup
- name: build flecs
run: |
bake --strict
build-windows:
runs-on: windows-latest
timeout-minutes: 30
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v3
- uses: ilammy/msvc-dev-cmd@v1
- name: install bake
run: |
git clone https://github.com/SanderMertens/bake
cd bake\build-Windows
nmake
cd ..
./bake setup --local
- name: build flecs
run: bake/bake --strict
build-configs:
needs: build-linux
runs-on: ubuntu-20.04
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
compiler:
- cc: gcc-7
cxx: g++-7
- cc: gcc-8
cxx: g++-8
- cc: gcc-9
cxx: g++-9
- cc: gcc-10
cxx: g++-10
- cc: gcc-11
cxx: g++-11
- cc: clang-8
cxx: clang++-8
- cc: clang-9
cxx: clang++-9
- cc: clang-10
cxx: clang++-10
- cc: clang-11
cxx: clang++-11
- cc: clang-12
cxx: clang++-12
env:
CC: ${{ matrix.compiler.cc }}
CXX: ${{ matrix.compiler.cxx }}
steps:
- uses: actions/checkout@v3
- name: hack sources.list
run: sudo sed -i 's|http://azure.archive.ubuntu.com/ubuntu/|https://mirror.enzu.com/ubuntu//|g' /etc/apt/sources.list
- name: install compiler
run: |
sudo apt-get update
sudo apt-get install -y ${{ matrix.compiler.cc }}
sudo apt-get install -y ${{ matrix.compiler.cxx }}
- name: install bake
run: |
git clone https://github.com/SanderMertens/bake
make -C bake/build-$(uname)
bake/bake setup
- name: build flecs (debug)
run: |
bake --strict --cfg debug
- name: build flecs (release)
run: |
bake --strict --cfg release
- name: build examples (debug)
run: |
bake examples/c --strict --cfg debug
bake examples/cpp --strict --cfg debug
bake examples/os_api --strict --cfg debug
bake examples/os_api/bake --strict --cfg debug
- name: build examples (release)
run: |
bake examples/c --strict --cfg release
bake examples/cpp --strict --cfg release
bake examples/os_api --strict --cfg release
bake examples/os_api/bake --strict --cfg release
build-configs-windows:
needs: [build-windows]
runs-on: windows-latest
timeout-minutes: 30
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v3
- uses: ilammy/msvc-dev-cmd@v1
- name: install bake
run: |
git clone https://github.com/SanderMertens/bake
cd bake\build-Windows
nmake
cd ..
./bake setup --local
- name: build flecs (debug)
run: bake/bake --strict --cfg debug
- name: build flecs (release)
run: bake/bake --strict --cfg release
- name: build examples (debug)
run: bake/bake examples --strict --cfg debug
- name: build examples (release)
run: bake/bake examples --strict --cfg debug
build-configs-windows-cmake:
runs-on: windows-latest
timeout-minutes: 30
strategy:
matrix:
toolset: [default, v141, v142, clang-cl]
include:
- toolset: v141
toolset_option: -T"v141"
- toolset: v142
toolset_option: -T"v142"
- toolset: clang-cl
toolset_option: -T"ClangCl"
steps:
- uses: actions/checkout@v3
- name: create cmake build folders
run: |
mkdir cmake_build
mkdir examples/c/cmake_build
mkdir examples/cpp/cmake_build
- name: build flecs
working-directory: cmake_build
run: |
cmake ${{ matrix.toolset_option }} ..
cmake --build . -j 4
- name: build c examples
working-directory: examples/c/cmake_build
run: |
cmake ${{ matrix.toolset_option }} ..
cmake --build . -j 4
- name: build c++ examples
working-directory: examples/cpp/cmake_build
run: |
cmake ${{ matrix.toolset_option }} ..
cmake --build . -j 4
test-c-unix:
needs: [build-linux, build-macos]
runs-on: ${{ matrix.os }}
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
os: [ ubuntu-latest, macOS-latest ]
steps:
- uses: actions/checkout@v3
- name: compiler version
run: |
gcc --version
clang --version
- name: install bake
run: |
git clone https://github.com/SanderMertens/bake
make -C bake/build-$(uname)
bake/bake setup
- name: build flecs
run: bake --strict
- name: test api
run: bake run test/api -- -j 8
- name: test addons
run: bake run test/addons -- -j 8
- name: test meta
run: bake run test/meta -- -j 8
- name: test collections
run: bake run test/collections -- -j 8
test-cpp-unix:
needs: [build-linux]
runs-on: ubuntu-20.04
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
compiler:
# Currently not supported for C++ API, as enum reflection doesn't work
# - cc: gcc-7
# cxx: g++-7
# - cc: gcc-8
# cxx: g++-8
- cc: gcc-9
cxx: g++-9
- cc: gcc-10
cxx: g++-10
- cc: gcc-11
cxx: g++-11
- cc: clang-8
cxx: clang++-8
- cc: clang-9
cxx: clang++-9
- cc: clang-10
cxx: clang++-10
- cc: clang-11
cxx: clang++-11
- cc: clang-12
cxx: clang++-12
env:
CC: ${{ matrix.compiler.cc }}
CXX: ${{ matrix.compiler.cxx }}
steps:
- uses: actions/checkout@v3
- name: hack sources.list
run: sudo sed -i 's|http://azure.archive.ubuntu.com/ubuntu/|https://mirror.enzu.com/ubuntu//|g' /etc/apt/sources.list
- name: install compiler
run: |
sudo apt-get update
sudo apt-get install -y ${{ matrix.compiler.cc }}
sudo apt-get install -y ${{ matrix.compiler.cxx }}
- name: compiler version
run: |
${{ matrix.compiler.cc }} --version
${{ matrix.compiler.cxx }} --version
- name: install bake
run: |
git clone https://github.com/SanderMertens/bake
make -C bake/build-$(uname)
bake/bake setup
- name: build flecs
run: bake --strict
- name: test c++
run: bake run test/cpp_api -- -j 8
test-cpp-macos:
needs: [build-macos]
runs-on: ${{ matrix.os.version }}
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
os:
- { version: macOS-11, xcode: '11.7' }
- { version: macOS-11, xcode: '12.4' }
- { version: macOS-11, xcode: '13.0' }
- { version: macOS-12, xcode: '13.1' }
- { version: macOS-12, xcode: '14.0' }
env:
CC: clang
CXX: clang++
steps:
- uses: actions/checkout@v3
- uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: ${{ matrix.os.xcode }}
- name: compiler version
run: |
clang --version
- name: install bake
run: |
git clone https://github.com/SanderMertens/bake
make -C bake/build-$(uname)
bake/bake setup
- name: build flecs
run: bake --strict
- name: test c++
run: bake run test/cpp_api -- -j 8
test-windows:
needs: build-windows
runs-on: windows-latest
timeout-minutes: 30
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v3
- uses: ilammy/msvc-dev-cmd@v1
- name: install bake
run: |
git clone https://github.com/SanderMertens/bake
cd bake\build-Windows
nmake
cd ..
./bake setup --local
- name: build flecs
run: bake/bake --strict
- name: test api
run: bake/bake run test\api -- -j 8
- name: test addons
run: bake/bake run test\addons -- -j 8
- name: test meta
run: bake/bake run test\meta -- -j 8
- name: test collections
run: bake/bake run test\collections -- -j 8
- name: test c++
run: bake/bake run test\cpp_api -- -j 8
analyze-scan-build:
needs: build-linux
runs-on: ubuntu-latest
timeout-minutes: 30
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v3
- name: hack sources.list
run: |
sudo sed -i 's|http://azure.archive.ubuntu.com/ubuntu/|https://mirror.enzu.com/ubuntu//|g' /etc/apt/sources.list
sudo apt-get update
- name: install clang-build
run: |
sudo apt-get install -y clang-tools
- name: install bake
run: |
git clone https://github.com/SanderMertens/bake
make -C bake/build-$(uname)
bake/bake setup
- name: run scan-build
run: |
scan-build --status-bugs bake
analyze-sanitized-api:
needs: build-macos
runs-on: macOS-latest
timeout-minutes: 30
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v3
- name: install bake
run: |
git clone https://github.com/SanderMertens/bake
make -C bake/build-$(uname)
bake/bake setup
- name: build flecs
run: bake --strict
- name: run tests
run: |
bake run test/api --cfg sanitize -- -j 8
analyze-sanitized-addons:
needs: build-macos
runs-on: macOS-latest
timeout-minutes: 30
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v3
- name: install bake
run: |
git clone https://github.com/SanderMertens/bake
make -C bake/build-$(uname)
bake/bake setup
- name: build flecs
run: bake --strict
- name: run tests
run: |
bake run test/addons --cfg sanitize -- -j 8
analyze-sanitized-meta:
needs: build-macos
runs-on: macOS-latest
timeout-minutes: 30
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v3
- name: install bake
run: |
git clone https://github.com/SanderMertens/bake
make -C bake/build-$(uname)
bake/bake setup
- name: build flecs
run: bake --strict
- name: run tests
run: |
bake run test/meta --cfg sanitize -- -j 8
analyze-sanitized-collections:
needs: build-macos
runs-on: macOS-latest
timeout-minutes: 30
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v3
- name: install bake
run: |
git clone https://github.com/SanderMertens/bake
make -C bake/build-$(uname)
bake/bake setup
- name: build flecs
run: bake --strict
- name: run tests
run: |
bake run test/collections --cfg sanitize -- -j 8
analyze-sanitized-cpp_api:
needs: build-macos
runs-on: macOS-latest
timeout-minutes: 30
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v3
- name: install bake
run: |
git clone https://github.com/SanderMertens/bake
make -C bake/build-$(uname)
bake/bake setup
- name: build flecs
run: bake --strict
- name: run tests
run: |
bake run test/cpp_api --cfg sanitize -- -j 8
buildsystem-cmake:
runs-on: ${{ matrix.os }}
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
os: [ ubuntu-latest, macOS-latest ]
steps:
- uses: actions/checkout@v3
- name: create cmake build folders
run: |
mkdir cmake_build
mkdir examples/c/cmake_build
mkdir examples/cpp/cmake_build
- name: build flecs
working-directory: cmake_build
run: |
cmake ..
cmake --build . -j 4
- name: build c examples
working-directory: examples/c/cmake_build
run: |
cmake ..
cmake --build . -j 4
- name: build c++ examples
working-directory: examples/cpp/cmake_build
run: |
cmake ..
cmake --build . -j 4
buildsystem-meson:
runs-on: ubuntu-latest
timeout-minutes: 30
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v3
- name: install meson
run: |
pip3 install meson
pip3 install ninja==1.10.2.4
- name: create build folder
run: meson meson_build
- name: build flecs
working-directory: meson_build
run: |
meson compile
flecs-custom-builds:
needs: build-linux
runs-on: ubuntu-latest
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
compiler: [ gcc, clang ]
steps:
- uses: actions/checkout@v3
- name: Install bake
run: |
git clone https://github.com/SanderMertens/bake
make -C bake/build-$(uname)
bake/bake setup
- name: FLECS_SOFT_ASSERT flag
run: |
bake rebuild --strict -D FLECS_SOFT_ASSERT
bake rebuild --strict --cfg release -D FLECS_SOFT_ASSERT
- name: FLECS_KEEP_ASSERT flag
run: |
bake rebuild --strict -D FLECS_KEEP_ASSERT
bake rebuild --strict --cfg release -D FLECS_KEEP_ASSERT
- name: no extensions
run: |
bake rebuild --strict -D FLECS_CUSTOM_BUILD
bake rebuild --strict --cfg release -D FLECS_CUSTOM_BUILD
- name: FLECS_SYSTEM
run: |
bake rebuild --strict -D FLECS_CUSTOM_BUILD -D FLECS_SYSTEM
bake rebuild --strict --cfg release -D FLECS_CUSTOM_BUILD -D FLECS_SYSTEM
- name: FLECS_PIPELINE
run: |
bake rebuild --strict -D FLECS_CUSTOM_BUILD -D FLECS_PIPELINE
bake rebuild --strict --cfg release -D FLECS_CUSTOM_BUILD -D FLECS_PIPELINE
- name: FLECS_TIMER
run: |
bake rebuild --strict -D FLECS_CUSTOM_BUILD -D FLECS_TIMER
bake rebuild --strict --cfg release -D FLECS_CUSTOM_BUILD -D FLECS_TIMER
- name: FLECS_MODULE
run: |
bake rebuild --strict -D FLECS_CUSTOM_BUILD -D FLECS_MODULE
bake rebuild --strict --cfg release -D FLECS_CUSTOM_BUILD -D FLECS_MODULE
- name: FLECS_SNAPSHOT
run: |
bake rebuild --strict -D FLECS_CUSTOM_BUILD -D FLECS_SNAPSHOT
bake rebuild --strict --cfg release -D FLECS_CUSTOM_BUILD -D FLECS_SNAPSHOT
- name: FLECS_STATS
run: |
bake rebuild --strict -D FLECS_CUSTOM_BUILD -D FLECS_STATS
bake rebuild --strict --cfg release -D FLECS_CUSTOM_BUILD -D FLECS_STATS
- name: FLECS_PARSER
run: |
bake rebuild --strict -D FLECS_CUSTOM_BUILD -D FLECS_PARSER
bake rebuild --strict --cfg release -D FLECS_CUSTOM_BUILD -D FLECS_PARSER
- name: FLECS_PLECS
run: |
bake rebuild --strict -D FLECS_CUSTOM_BUILD -D FLECS_PLECS
bake rebuild --strict --cfg release -D FLECS_CUSTOM_BUILD -D FLECS_PLECS
- name: FLECS_META
run: |
bake rebuild --strict -D FLECS_CUSTOM_BUILD -D FLECS_META
bake rebuild --strict --cfg release -D FLECS_CUSTOM_BUILD -D FLECS_META
- name: FLECS_META_C
run: |
bake rebuild --strict -D FLECS_CUSTOM_BUILD -D FLECS_META_C
bake rebuild --strict --cfg release -D FLECS_CUSTOM_BUILD -D FLECS_META_C
- name: FLECS_EXPR
run: |
bake rebuild --strict -D FLECS_CUSTOM_BUILD -D FLECS_EXPR
bake rebuild --strict --cfg release -D FLECS_CUSTOM_BUILD -D FLECS_EXPR
- name: FLECS_JSON
run: |
bake rebuild --strict -D FLECS_CUSTOM_BUILD -D FLECS_JSON
bake rebuild --strict --cfg release -D FLECS_CUSTOM_BUILD -D FLECS_JSON
- name: FLECS_DOC
run: |
bake rebuild --strict -D FLECS_CUSTOM_BUILD -D FLECS_DOC
bake rebuild --strict --cfg release -D FLECS_CUSTOM_BUILD -D FLECS_DOC
- name: FLECS_COREDOC
run: |
bake rebuild --strict -D FLECS_CUSTOM_BUILD -D FLECS_COREDOC
bake rebuild --strict --cfg release -D FLECS_CUSTOM_BUILD -D FLECS_COREDOC
- name: FLECS_LOG
run: |
bake rebuild --strict -D FLECS_CUSTOM_BUILD -D FLECS_LOG
bake rebuild --strict --cfg release -D FLECS_CUSTOM_BUILD -D FLECS_LOG
- name: FLECS_APP
run: |
bake rebuild --strict -D FLECS_CUSTOM_BUILD -D FLECS_APP
bake rebuild --strict --cfg release -D FLECS_CUSTOM_BUILD -D FLECS_APP
- name: FLECS_OS_API_IMPL
run: |
bake rebuild --strict -D FLECS_CUSTOM_BUILD -D FLECS_OS_API_IMPL
bake rebuild --strict --cfg release -D FLECS_CUSTOM_BUILD -D FLECS_OS_API_IMPL
- name: FLECS_HTTP
run: |
bake rebuild --strict -D FLECS_CUSTOM_BUILD -D FLECS_HTTP
bake rebuild --strict --cfg release -D FLECS_CUSTOM_BUILD -D FLECS_HTTP
- name: FLECS_REST
run: |
bake rebuild --strict -D FLECS_CUSTOM_BUILD -D FLECS_REST
bake rebuild --strict --cfg release -D FLECS_CUSTOM_BUILD -D FLECS_REST
- name: FLECS_NO_LOG
run: |
bake rebuild --strict -D FLECS_NO_LOG
bake rebuild --strict --cfg release -D FLECS_NO_LOG
- name: custom_build tests
run: |
bake rebuild test/custom_builds --strict
bake runall test/custom_builds
flecs-amalgamated:
runs-on: ubuntu-latest
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
compiler: [ gcc, clang ]
steps:
- uses: actions/checkout@v3
- name: build flecs
run: ${{ matrix.compiler }} flecs.c --shared -fPIC -pedantic -Wall -Wextra -Wno-unused-parameter -Werror -Wshadow -Wconversion -Wno-missing-field-initializers