242 lines
6.8 KiB
YAML
242 lines
6.8 KiB
YAML
# CI setup for FreeType.
|
|
|
|
# https://gitlab.freedesktop.org/freedesktop/freedesktop/-/issues/540
|
|
workflow:
|
|
rules:
|
|
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
|
|
- if: $CI_PIPELINE_SOURCE == 'push'
|
|
|
|
stages:
|
|
- build
|
|
|
|
# FIXME: Use --werror once warnings are fixed.
|
|
variables:
|
|
MESON_ARGS: --fatal-meson-warnings --default-library=both
|
|
MESON_ARGS_WINDOWS: ${MESON_ARGS} --force-fallback-for=zlib
|
|
|
|
.build windows common:
|
|
# TODO: should probably get its own image at some point instead of reusing the GStreamer one
|
|
# See https://gitlab.freedesktop.org/gstreamer/gstreamer/container_registry/18035 for latest
|
|
image: "registry.freedesktop.org/gstreamer/gstreamer/amd64/windows:2022-07-29.3-main"
|
|
stage: 'build'
|
|
tags:
|
|
- 'docker'
|
|
- 'windows'
|
|
- '2022'
|
|
- '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 you 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:
|
|
# Update RootCAs in order to access to some sites.
|
|
- certutil -generateSSTFromWU "C:\roots.sst"
|
|
- Import-Certificate -CertStoreLocation "Cert:\LocalMachine\Root" "C:\roots.sst"
|
|
# Make sure meson is up to date so we don't need to rebuild the image
|
|
# with each release.
|
|
- pip3 install -U 'meson==0.59.*'
|
|
- 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"
|
|
|
|
|
|
.build windows msbuild:
|
|
extends: '.build windows common'
|
|
variables:
|
|
# Make sure any failure in PowerShell scripts is fatal.
|
|
ErrorActionPreference: 'Stop'
|
|
WarningPreference: 'Stop'
|
|
script:
|
|
- git submodule update --init --recursive
|
|
- cmd.exe /C "C:\BuildTools\Common7\Tools\VsDevCmd.bat -host_arch=amd64 -arch=$env:ARCH &&
|
|
MSBuild.exe -clp:ForceConsoleColor -t:Rebuild
|
|
-p:Configuration=Debug
|
|
-p:Platform=$env:PLATFORM
|
|
-p:UserDefines=FT_DEBUG_LOGGING
|
|
MSBuild.sln"
|
|
|
|
|
|
# Format of job names:
|
|
# <OS> <Build-Tool> <Build-Params> <Architecture>:
|
|
|
|
|
|
# Windows jobs.
|
|
|
|
windows meson vs2019 amd64:
|
|
extends: '.build windows meson'
|
|
variables:
|
|
ARCH: 'amd64'
|
|
|
|
windows meson vs2019 x86:
|
|
extends: '.build windows meson'
|
|
variables:
|
|
ARCH: 'x86'
|
|
|
|
windows msbuild vs2019 amd64:
|
|
extends: '.build windows msbuild'
|
|
variables:
|
|
ARCH: 'amd64'
|
|
PLATFORM: 'x64'
|
|
|
|
|
|
# Linux Jobs.
|
|
#
|
|
# Jobs with "libs" in the name force-enable libraries.
|
|
# They are disabled for the remaining 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 ${MESON_ARGS} \
|
|
-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 ${MESON_ARGS} \
|
|
-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 jobs.
|
|
|
|
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_ARGS}
|
|
- meson compile --verbose -C build
|
|
- sudo meson install -C build
|