| 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 |
| # https://lists.nongnu.org/archive/html/freetype-devel/2022-01/msg00004.html |
| image: 'registry.freedesktop.org/gstreamer/gst-ci/amd64/windows:v14-master:2021-09-09.0-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: |
| # <OS> <Build-Tool> <Build-Params> <Architecture> |
| |
| |
| # 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 |