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 meson windows:
  # 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'
  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 -U meson 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"

meson vs2017 amd64:
  extends: '.build meson windows'
  variables:
    ARCH: 'amd64'

meson vs2017 x86:
  extends: '.build meson windows'
  variables:
    ARCH: 'x86'
