summaryrefslogtreecommitdiffstats
path: root/.gitlab-ci.yml
diff options
context:
space:
mode:
Diffstat (limited to '.gitlab-ci.yml')
-rw-r--r--.gitlab-ci.yml180
1 files changed, 180 insertions, 0 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000..5d287ad
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,180 @@
+stages:
+ - compile
+ - test
+ - sanitize
+
+variables:
+ GIT_SUBMODULE_STRATEGY: recursive
+ IMAGE_UBUNTU_JAMMY: registry.videolan.org/libplacebo-ubuntu-jammy:20230730213642
+ IMAGE_UBUNTU_JAMMY_AARCH: registry.videolan.org/libplacebo-ubuntu-jammy-aarch64:20230203024122
+
+linux:
+ image: $IMAGE_UBUNTU_JAMMY
+ stage: compile
+ tags:
+ - docker
+ - amd64
+ script:
+ - meson build --buildtype release
+ --werror
+ -Dtests=true
+ -Dshaderc=enabled
+ -Dglslang=enabled
+ - ninja -C build
+
+static:
+ image: $IMAGE_UBUNTU_JAMMY
+ stage: compile
+ tags:
+ - docker
+ - amd64
+ script:
+ - meson build --buildtype release
+ --default-library static
+ --werror
+ -Dshaderc=enabled
+ -Dglslang=enabled
+ - ninja -C build
+
+win32:
+ image: $IMAGE_UBUNTU_JAMMY
+ stage: compile
+ tags:
+ - docker
+ - amd64
+ script:
+ - meson build --buildtype release
+ --werror
+ -Dtests=true
+ -Ddebug-abort=true
+ -Dd3d11=enabled
+ --cross-file /opt/crossfiles/i686-w64-mingw32.meson
+ - ninja -C build
+ - cd build && meson test -t 5 -v --num-processes=1
+
+win64:
+ image: $IMAGE_UBUNTU_JAMMY
+ stage: compile
+ tags:
+ - docker
+ - amd64
+ script:
+ - meson build --buildtype release
+ --werror
+ -Dtests=true
+ -Ddebug-abort=true
+ -Dd3d11=enabled
+ --cross-file /opt/crossfiles/x86_64-w64-mingw32.meson
+ - ninja -C build
+ - cd build && meson test -t 5 -v --num-processes=1
+
+aarch64:
+ image: $IMAGE_UBUNTU_JAMMY_AARCH
+ stage: compile
+ tags:
+ - docker
+ - aarch64
+ script:
+ - meson build --buildtype release --werror -Dtests=true
+ - ninja -C build
+ - cd build && meson test -t 5 -v --num-processes=1
+
+macos:
+ stage: compile
+ tags:
+ - amd64
+ - monterey
+ script:
+ - meson build --buildtype release
+ -Ddefault_library=both
+ -Dtests=true
+ -Ddebug-abort=true
+ -Dc_args='-mmacosx-version-min=10.11 -Wunguarded-availability'
+ --werror
+ - ninja -C build
+ - cd build && meson test -t 5 -v --num-processes=1
+
+scan:
+ image: $IMAGE_UBUNTU_JAMMY
+ stage: compile
+ tags:
+ - docker
+ - amd64
+ script:
+ - env CC=clang CXX=clang++ CC_LD=lld CXX_LD=lld
+ meson build --buildtype debugoptimized
+ --werror
+ -Dtests=true
+ -Dbench=true
+ -Dshaderc=enabled
+ -Dglslang=enabled
+ - ninja -C build scan-build
+
+llvmpipe:
+ image: $IMAGE_UBUNTU_JAMMY
+ stage: test
+ tags:
+ - docker
+ - amd64
+ script:
+ - meson build --buildtype release
+ --werror
+ -Dtests=true
+ -Ddebug-abort=true
+ -Dc_args='-DCI_ALLOW_SW -DCI_MAXGL'
+ -Dshaderc=enabled
+ -Dglslang=enabled
+ - ninja -C build
+ - cd build && meson test -t 20 -v --num-processes=1
+
+gpu:
+ image: $IMAGE_UBUNTU_JAMMY
+ stage: test
+ tags:
+ - gpu
+ script:
+ - meson build --buildtype release
+ --werror
+ -Dtests=true
+ -Ddemos=false
+ -Ddebug-abort=true
+ -Dshaderc=enabled
+ -Dglslang=enabled
+ -Db_coverage=true
+ - ninja -C build
+ - vulkaninfo
+ - cd build && meson test -t 5 -v --num-processes=1
+ - ninja coverage-html
+ - mv meson-logs/coveragereport ../coverage
+ - ninja coverage-xml
+ - grep -Eo 'line-rate="[^"]+"' meson-logs/coverage.xml | head -n 1 |
+ grep -Eo '[0-9.]+' | awk '{ print "coverage:", $1 * 100 } '
+ coverage: '/^coverage: (\d+.\d+)$/'
+ artifacts:
+ expose_as: 'Coverage HTML report'
+ paths:
+ - coverage/
+ reports:
+ coverage_report:
+ coverage_format: cobertura
+ path: build/meson-logs/coverage.xml
+
+sanitize:
+ image: $IMAGE_UBUNTU_JAMMY
+ stage: sanitize
+ tags:
+ - gpu
+ variables:
+ UBSAN_OPTIONS: 'print_stacktrace=1:halt_on_error=1'
+ script:
+ - env CC=clang CXX=clang++ CC_LD=lld CXX_LD=lld
+ meson build --buildtype debugoptimized
+ --werror
+ -Dtests=true
+ -Ddebug-abort=true
+ -Dc_args='-DCI_MAXGL -Wno-deprecated-declarations'
+ -Db_sanitize=address,undefined
+ -Db_lundef=false
+ -Dshaderc=enabled
+ - ninja -C build
+ - cd build && time meson test -t 5 -v --num-processes=1