freetype2/.gitlab-ci.yml

238 lines
7.4 KiB
YAML

# CI setup for FreeType.
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 --upgrade certifi
# - pip3 install -U ninja
#
# # Generate a UWP cross-file in case it's used
# - $PSDefaultParameterValues['Out-File:Encoding'] = 'ASCII'
# - echo "[binaries]" > uwp-crossfile.meson
# - echo "c = 'cl'" >> uwp-crossfile.meson
# - echo "strip = ['true']" >> uwp-crossfile.meson
# - echo "[built-in options]" >> uwp-crossfile.meson
# - echo "c_args = ['-DWINAPI_FAMILY=WINAPI_FAMILY_APP', '-DUNICODE', '-D_WIN32_WINNT=0x0A00', '-we4013']" >> uwp-crossfile.meson
# - echo "c_winlibs = ['windowsapp.lib']" >> uwp-crossfile.meson
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 "%VS120COMNTOOLS%\vsvars32.bat"
# - 'call "%VS120COMNTOOLS%\vsvars32.bat"'
# - call $env:VS120COMNTOOLS
- git submodule update --init --recursive
- cmd.exe /C "C:\BuildTools\Common7\Tools\VsDevCmd.bat -host_arch=amd64 -arch=$env:ARCH &&
MSBUILD.exe -t:Rebuild
-p:Configuration=Debug
-p:Platform=x64
-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'
MESON_WINDOWS_TESTS: '&& meson test -C build && meson test -C build --benchmark'
# windows meson vs2019 x86:
# extends: '.build windows meson'
# variables:
# ARCH: 'x86'
# MESON_WINDOWS_TESTS: '&& meson test -C build && meson test -C build --benchmark'
#
# windows meson vs2019 amd64 uwp:
# extends: '.build windows meson'
# variables:
# ARCH: 'amd64'
# VS_UWP: '-app_platform=UWP'
# MESON_ARGS_UWP: '--cross-file uwp-crossfile.meson -Dc_winlibs="windowsapp.lib"'
#
# # 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