diff options
Diffstat (limited to '.gitlab-ci.yml')
-rw-r--r-- | .gitlab-ci.yml | 263 |
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 |