stages: - build # FIXME: Use --werror once warnings are fixed. variables: MESON_ARGS: --fatal-meson-warnings MESON_ARGS_WINDOWS: ${MESON_ARGS} --force-fallback-for=zlib .build windows common: # See # https://gitlab.freedesktop.org/gstreamer/gst-ci/container_registry/213 image: 'registry.freedesktop.org/gstreamer/gst-ci/amd64/windows:v14-master' stage: 'build' tags: - 'docker' - 'windows' - '1809' - 'gstreamer-windows' .build linux common: # See # https://gitlab.freedesktop.org/freetype/docker-images/container_registry/20896 image: 'registry.freedesktop.org/freetype/docker-images/debian:latest' stage: 'build' .build macos common: stage: 'build' tags: - 'gst-macos-11.1' .build windows meson: extends: '.build windows common' variables: # Make sure any failure in PowerShell scripts is fatal. ErrorActionPreference: 'Stop' WarningPreference: 'Stop' # Uncomment the following key if need to pass custom args, as well with # the `$env:MESON_ARGS` line in the `script:` blocks. # MESON_ARGS: >- # -Dfoo=enabled # -Dbar=disabled before_script: # Make sure meson is up to date, so we don't need to rebuild the image # with each release. - pip3 install meson==0.59.1 - pip3 install -U ninja script: # For some reason, options are separated by newlines instead of spaces, # so we have to replace them first. #- $env:MESON_ARGS = $env:MESON_ARGS.replace("`n"," ") # Gitlab executes PowerShell in docker, but `VsDevCmd.bat` is a batch # script. Environment variables substitutions is done by PowerShell # before calling `cmd.exe`, that's why we use `$env:FOO` instead of # `%FOO%`. - cmd.exe /C "C:\BuildTools\Common7\Tools\VsDevCmd.bat -host_arch=amd64 -arch=$env:ARCH && meson setup build $env:MESON_ARGS_WINDOWS && meson compile --verbose -C build && meson test -C build && meson test -C build --benchmark" # Format of job names: # # Windows jobs windows meson vs2017 amd64: extends: '.build windows meson' variables: ARCH: 'amd64' windows meson vs2017 x86: extends: '.build windows meson' variables: ARCH: 'x86' # Linux Jobs # Jobs with "libs" in the name force enable libraries. # They are disabled in rest of the jobs. linux autotools: extends: '.build linux common' script: | ./autogen.sh ./configure --with-brotli=no \ --with-bzip2=no \ --with-harfbuzz=no \ --with-png=no \ --with-zlib=no \ CC=gcc make -j$(nproc) && make install linux autotools libs: extends: '.build linux common' script: | ./autogen.sh ./configure --with-brotli=yes \ --with-bzip2=yes \ --with-harfbuzz=yes \ --with-png=yes \ --with-zlib=yes \ CC=gcc make -j$(nproc) && make install linux autotools libs clang: extends: '.build linux common' script: | ./autogen.sh ./configure --with-brotli=yes \ --with-bzip2=yes \ --with-harfbuzz=yes \ --with-png=yes \ --with-zlib=yes \ CC=clang make -j$(nproc) && make install linux meson: extends: '.build linux common' script: | meson setup build -Dbrotli=disabled \ -Dbzip2=disabled \ -Dharfbuzz=disabled \ -Dpng=disabled \ -Dzlib=disabled meson compile --verbose -C build meson install -C build linux meson libs: extends: '.build linux common' script: | meson setup build -Dbrotli=enabled \ -Dbzip2=enabled \ -Dharfbuzz=disabled \ -Dpng=disabled \ -Dzlib=disabled meson compile --verbose -C build meson install -C build linux cmake: extends: '.build linux common' script: | cmake -B build -D FT_DISABLE_BROTLI=TRUE \ -D FT_DISABLE_BZIP2=TRUE \ -D FT_DISABLE_HARFBUZZ=TRUE \ -D FT_DISABLE_PNG=TRUE \ -D FT_DISABLE_ZLIB=TRUE cmake --build build --target install linux cmake libs: extends: '.build linux common' script: | cmake -B build -D FT_REQUIRE_BROTLI=TRUE \ -D FT_REQUIRE_BZIP2=TRUE \ -D FT_REQUIRE_HARFBUZZ=TRUE \ -D FT_REQUIRE_PNG=TRUE \ -D FT_REQUIRE_ZLIB=TRUE cmake --build build --target install macos autotools: extends: '.build macos common' before_script: - '/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"' script: - brew install autoconf automake libtool - ./autogen.sh - ./configure - 'make -j$(sysctl -n hw.logicalcpu)' - make install macos autotools clang: extends: '.build macos common' before_script: - '/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"' script: - brew install autoconf automake libtool - ./autogen.sh - './configure CC=clang' - 'make -j$(sysctl -n hw.logicalcpu)' - make install macos meson: extends: '.build macos common' script: - pip3 install --upgrade pip - pip3 install -U meson - pip3 install --upgrade certifi - pip3 install -U ninja - meson setup build - meson compile --verbose -C build - sudo meson install -C build