aboutsummaryrefslogtreecommitdiffstats
path: root/.gitlab-ci.yml
diff options
context:
space:
mode:
Diffstat (limited to '.gitlab-ci.yml')
-rw-r--r--.gitlab-ci.yml263
1 files changed, 124 insertions, 139 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index d6014f1..a67a043 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,156 +1,141 @@
-stages: [build, test, deploy]
+# Copyright 2018-2023 David Robillard <d@drobilla.net>
+# SPDX-License-Identifier: 0BSD OR ISC
-variables:
- GIT_SUBMODULE_STRATEGY: normal
-
-.build_template: &build_definition
- stage: build
- artifacts:
- paths: ["build/", ".lock-waf*"]
-
-.test_template: &test_definition
- stage: test
+default:
+ image: lv2plugin/debian-x64
+ script:
+ - meson setup build -Dwerror=true
+ - ninja -C build test
+
+dev:
+ image: lv2plugin/debian-x64-big
+ script:
+ - meson setup build -Dbuildtype=debug -Dwarning_level=3 -Dwerror=true -Db_coverage=true -Dlint=true
+ - ninja -C build test
+ - ninja -C build coverage-html
+ - meson configure -Dbuildtype=release -Db_coverage=false build
+ - ninja -C build test
+ coverage: '/ *lines\.*: \d+\.\d+.*/'
artifacts:
- paths: [build/coverage]
-
-
-arm32_dbg:
- <<: *build_definition
- image: lv2plugin/debian-arm32
- script: python ./waf configure build -dST --werror
- variables:
- CC: "arm-linux-gnueabihf-gcc"
- CXX: "arm-linux-gnueabihf-g++"
-
-test:arm32_dbg:
- <<: *test_definition
- image: lv2plugin/debian-arm32
- script: python ./waf test --wrapper=qemu-arm
- needs: [arm32_dbg]
-
+ paths:
+ - build/meson-logs/coveragereport
-arm32_rel:
- <<: *build_definition
- image: lv2plugin/debian-arm32
- script: python ./waf configure build -ST --werror
+static:
+ image: lv2plugin/debian-x64
+ script:
+ - meson setup build -Ddefault_library=static -Dwarning_level=3 -Dwerror=true -Ddocs=disabled
+ - ninja -C build test
+
+sanitize:
+ image: lv2plugin/debian-x64-clang
+ script:
+ - meson setup build -Db_lundef=false -Dbuildtype=plain -Dwarning_level=3 -Dwerror=true -Ddocs=disabled
+ - ninja -C build test
variables:
- CC: "arm-linux-gnueabihf-gcc"
- CXX: "arm-linux-gnueabihf-g++"
-
-test:arm32_rel:
- <<: *test_definition
- image: lv2plugin/debian-arm32
- script: python ./waf test --wrapper=qemu-arm
- needs: [arm32_rel]
+ CC: "clang"
+ CFLAGS: "-fno-sanitize-recover=all -fsanitize=address -fsanitize=undefined -fsanitize=float-divide-by-zero -fsanitize=unsigned-integer-overflow -fsanitize=implicit-conversion -fsanitize=local-bounds -fsanitize=nullability"
+ LDFLAGS: "-fno-sanitize-recover=all -fsanitize=address -fsanitize=undefined -fsanitize=float-divide-by-zero -fsanitize=unsigned-integer-overflow -fsanitize=implicit-conversion -fsanitize=local-bounds -fsanitize=nullability"
+# Linux Distributions
-arm64_dbg:
- <<: *build_definition
- image: lv2plugin/debian-arm64
- script: python ./waf configure build -dST --werror
+fedora:
+ image: lv2plugin/fedora-big
+ script:
+ - meson setup build -Dbuildtype=plain -Dwarning_level=3 -Ddocs=enabled -Dwerror=true
+ - ninja -C build test
variables:
- CC: "aarch64-linux-gnu-gcc"
- CXX: "aarch64-linux-gnu-g++"
-
-test:arm64_dbg:
- <<: *test_definition
- image: lv2plugin/debian-arm64
- script: python ./waf test --wrapper=qemu-aarch64
- needs: [arm64_dbg]
+ CFLAGS: -O2 -D_FORTIFY_SOURCE=2
+ artifacts:
+ paths:
+ - build/doc
+# Linux Platforms
-arm64_rel:
- <<: *build_definition
- image: lv2plugin/debian-arm64
- script: python ./waf configure build -ST --werror
- variables:
- CC: "aarch64-linux-gnu-gcc"
- CXX: "aarch64-linux-gnu-g++"
+arm32:
+ image: lv2plugin/debian-arm32
+ script:
+ - meson setup build --cross-file=/usr/share/meson/cross/arm-linux-gnueabihf.ini -Dbuildtype=debug -Dwarning_level=3 -Dwerror=true -Ddocs=disabled
+ - ninja -C build test
+ - meson configure -Dbuildtype=release build
+ - ninja -C build test
-test:arm64_rel:
- <<: *test_definition
+arm64:
image: lv2plugin/debian-arm64
- script: python ./waf test --wrapper=qemu-aarch64
- needs: [arm64_rel]
-
-
-x64_dbg:
- <<: *build_definition
- image: lv2plugin/debian-x64
- script: python ./waf configure build -dST --werror
-
-test:x64_dbg:
- <<: *test_definition
- image: lv2plugin/debian-x64
- script: python ./waf test
- needs: [x64_dbg]
-
-
-x64_rel:
- <<: *build_definition
- image: lv2plugin/debian-x64
- script: python ./waf configure build -ST --werror
-
-test:x64_rel:
- <<: *test_definition
- image: lv2plugin/debian-x64
- script: python ./waf test
- needs: [x64_rel]
-
-
-mac_dbg:
- <<: *build_definition
- script: python ./waf configure build -dST --werror --no-coverage
- tags: [macos]
-
-test:mac_dbg:
- <<: *test_definition
- script: python ./waf test
- needs: [mac_dbg]
+ script:
+ - meson setup build --cross-file=/usr/share/meson/cross/aarch64-linux-gnu.ini -Dbuildtype=debug -Dwarning_level=3 -Dwerror=true -Ddocs=disabled
+ - ninja -C build test
+ - meson configure -Dbuildtype=release build
+ - ninja -C build test
+
+mingw32:
+ image: lv2plugin/debian-mingw32
+ script:
+ - meson setup build --cross-file=/usr/share/meson/cross/i686-w64-mingw32.ini -Dbuildtype=debug -Dwarning_level=everything -Dwerror=true -Ddocs=disabled
+ - ninja -C build test
+ - meson configure -Dbuildtype=release build
+ - ninja -C build test
+
+mingw64:
+ image: lv2plugin/debian-mingw64
+ script:
+ - meson setup build --cross-file=/usr/share/meson/cross/x86_64-w64-mingw32.ini -Dbuildtype=debug -Dwarning_level=3 -Dwerror=true -Ddocs=disabled
+ - ninja -C build test
+ - meson configure -Dbuildtype=release build
+ - ninja -C build test
+
+wasm:
+ image: lv2plugin/debian-wasm
+ script:
+ - meson setup build --cross-file=/usr/share/meson/cross/wasm.ini -Dbuildtype=debug -Dwarning_level=3 -Dwerror=true -Ddefault_library=static -Ddocs=disabled -Dplugins=disabled
+ - ninja -C build test
+ - meson configure -Dbuildtype=release build
+ - ninja -C build test
+
+x32:
+ image: lv2plugin/debian-x32
+ script:
+ - meson setup build --cross-file=/usr/share/meson/cross/i686-linux-gnu.ini -Dbuildtype=debug -Dwarning_level=3 -Dwerror=true -Ddocs=disabled
+ - ninja -C build test
+ - meson configure -Dbuildtype=release build
+ - ninja -C build test
+
+# Non-Linux/Docker rows (not hosted)
+
+freebsd:
+ tags: [freebsd,meson]
+ script:
+ - meson setup build -Dbuildtype=debug -Dwarning_level=3 -Dwerror=true -Ddocs=disabled
+ - ninja -C build test
+ - meson configure -Dbuildtype=release build
+ - ninja -C build test
+
+mac:
tags: [macos]
-
-
-mac_rel:
- <<: *build_definition
- script: python ./waf configure build -ST --werror --no-coverage
- tags: [macos]
-
-test:mac_rel:
- <<: *test_definition
- script: python ./waf test
- needs: [mac_rel]
- tags: [macos]
-
-
-win_dbg:
- <<: *build_definition
- script: python ./waf configure build -dST --werror --no-coverage
- tags: [windows,msvc,python]
-
-test:win_dbg:
- <<: *test_definition
- script: python ./waf test
- needs: [win_dbg]
- tags: [windows,msvc,python]
-
-
-win_rel:
- <<: *build_definition
- script: python ./waf configure build -ST --werror --no-coverage
- tags: [windows,msvc,python]
-
-test:win_rel:
- <<: *test_definition
- script: python ./waf test
- needs: [win_rel]
- tags: [windows,msvc,python]
-
+ script:
+ - meson setup build -Dbuildtype=debug -Dwarning_level=everything -Dwerror=true
+ - ninja -C build test
+ - meson configure -Dbuildtype=release build
+ - ninja -C build test
+
+win:
+ tags: [windows,meson]
+ script:
+ - meson setup build -Dbuildtype=debug -Dwarning_level=everything -Dwerror=true -Ddocs=disabled
+ - ninja -C build test
+ - meson configure -Dbuildtype=release build
+ - ninja -C build test
+
+# Documentation
pages:
stage: deploy
- script: mv build/coverage/ public/
- dependencies: ["test:x64_dbg"]
+ script:
+ - mkdir -p public
+ - mv build/meson-logs/coveragereport/ public/coverage
+ needs:
+ - dev
artifacts:
- paths: [public]
+ paths:
+ - public
only:
- - master
+ - main