stages: - build - deploy variables: GIT_SUBMODULE_STRATEGY: normal .build_template: &build_definition stage: build arm32_dbg: <<: *build_definition image: lv2plugin/debian-arm32 script: - meson setup build --cross-file=/usr/share/meson/cross/arm-linux-gnueabihf.ini -Dbuildtype=debug -Ddocs=disabled -Dstrict=true -Dwerror=true - ninja -C build test arm32_rel: <<: *build_definition image: lv2plugin/debian-arm32 script: - meson setup build --cross-file=/usr/share/meson/cross/arm-linux-gnueabihf.ini -Dbuildtype=release -Ddocs=disabled -Dstrict=true -Dwerror=true - ninja -C build test arm64_dbg: <<: *build_definition image: lv2plugin/debian-arm64 script: - meson setup build --cross-file=/usr/share/meson/cross/aarch64-linux-gnu.ini -Dbuildtype=debug -Ddocs=disabled -Dstrict=true -Dwerror=true - ninja -C build test arm64_rel: <<: *build_definition image: lv2plugin/debian-arm64 script: - meson setup build --cross-file=/usr/share/meson/cross/aarch64-linux-gnu.ini -Dbuildtype=release -Ddocs=disabled -Dstrict=true -Dwerror=true - ninja -C build test x64_dbg: <<: *build_definition image: lv2plugin/debian-x64 script: - meson setup build -Dbuildtype=debug -Ddocs=enabled -Dstrict=true -Dwerror=true -Db_coverage=true - ninja -C build test - ninja -C build coverage-html - mkdir -p build/doc/ - cp doc/*.svg build/doc/ - cp doc/mandoc.css build/doc/ - mandoc -Thtml -Werror -O style=mandoc.css doc/serdi.1 > build/doc/serdi.html artifacts: paths: - build/doc - build/meson-logs/coveragereport x64_rel: <<: *build_definition image: lv2plugin/debian-x64 script: - meson setup build -Dbuildtype=release -Ddocs=disabled -Dstrict=true -Dwerror=true - ninja -C build test x64_static: <<: *build_definition image: lv2plugin/debian-x64 script: - meson setup build -Dstatic=true -Ddefault_library=static -Dexess:default_library=static -Ddocs=disabled -Dstrict=true -Dwerror=true - ninja -C build test x64_sanitize: <<: *build_definition image: lv2plugin/debian-x64-clang script: - meson setup build -Db_lundef=false -Dbuildtype=plain -Ddocs=disabled -Dstrict=true -Dwerror=true - ninja -C build test variables: # TODO: Figure out how to enable address and undefined sanitizers on CI. # ASan fails because it needs docker run --privileged, and UBSan fails with # clang7 in buster because it incorrectly(?) flags FLT_MAX as out of range. CC: "clang" CXX: "clang++" CFLAGS: "-fno-sanitize-recover=all -fsanitize=float-divide-by-zero -fsanitize=implicit-conversion -fsanitize=local-bounds -fsanitize=nullability" CXXFLAGS: "-fno-sanitize-recover=all -fsanitize=float-divide-by-zero -fsanitize=implicit-conversion -fsanitize=local-bounds -fsanitize=nullability" LDFLAGS: "-fno-sanitize-recover=all -fsanitize=float-divide-by-zero -fsanitize=implicit-conversion -fsanitize=local-bounds -fsanitize=nullability" mingw32_dbg: <<: *build_definition image: lv2plugin/debian-mingw32 script: - meson setup build --cross-file=/usr/share/meson/cross/i686-w64-mingw32.ini -Dbuildtype=debug -Ddocs=disabled -Dstrict=true -Dwerror=true - ninja -C build test variables: MESON_TESTTHREADS: "1" WINEPATH: "Z:\\usr\\lib\\gcc\\i686-w64-mingw32\\8.3-win32;Z:\\builds\\drobilla\\serd\\build\\subprojects\\exess" mingw32_rel: <<: *build_definition image: lv2plugin/debian-mingw32 script: - meson setup build --cross-file=/usr/share/meson/cross/i686-w64-mingw32.ini -Dbuildtype=release -Ddocs=disabled -Dstrict=true -Dwerror=true - ninja -C build test variables: MESON_TESTTHREADS: "1" WINEPATH: "Z:\\usr\\lib\\gcc\\i686-w64-mingw32\\8.3-win32;Z:\\builds\\drobilla\\serd\\build\\subprojects\\exess" mingw64_dbg: <<: *build_definition image: lv2plugin/debian-mingw64 script: - meson setup build --cross-file=/usr/share/meson/cross/x86_64-w64-mingw32.ini -Dbuildtype=debug -Ddocs=disabled -Dstrict=true -Dwerror=true - ninja -C build test variables: MESON_TESTTHREADS: "1" WINEPATH: "Z:\\usr\\lib\\gcc\\x86_64-w64-mingw32\\8.3-win32;Z:\\builds\\drobilla\\serd\\build\\subprojects\\exess" mingw64_rel: <<: *build_definition image: lv2plugin/debian-mingw64 script: - meson setup build --cross-file=/usr/share/meson/cross/x86_64-w64-mingw32.ini -Dbuildtype=release -Ddocs=disabled -Dstrict=true -Dwerror=true - ninja -C build test variables: MESON_TESTTHREADS: "1" WINEPATH: "Z:\\usr\\lib\\gcc\\x86_64-w64-mingw32\\8.3-win32;Z:\\builds\\drobilla\\serd\\build\\subprojects\\exess" mac_dbg: <<: *build_definition tags: [macos] script: - meson setup build -Dbuildtype=debug -Ddocs=disabled -Dstrict=true -Dwerror=true - ninja -C build test mac_rel: <<: *build_definition tags: [macos] script: - meson setup build -Dbuildtype=release -Ddocs=disabled -Dstrict=true -Dwerror=true - ninja -C build test win_dbg: <<: *build_definition tags: [windows,meson] script: - meson setup build -Dbuildtype=debug -Ddocs=disabled -Dstrict=true -Dwerror=true - ninja -C build test win_rel: <<: *build_definition tags: [windows,meson] script: - meson setup build -Dbuildtype=release -Ddocs=disabled -Dstrict=true -Dwerror=true - ninja -C build test pages: stage: deploy script: - mkdir public - mkdir public/c - mkdir public/man - mv build/meson-logs/coveragereport/ public/coverage - mv build/doc/c/html/ public/c/html/ - mv build/doc/c/singlehtml/ public/c/singlehtml/ - mv build/doc/serdi.html public/man/serdi.html - mv build/doc/mandoc.css public/man/mandoc.css dependencies: - x64_dbg artifacts: paths: - public only: - master