.test:
  # The image was generated with the following Dockerfile. It is also used
  # for libxslt, that's why we need git and libgcrypt-dev.
  #
  # FROM ubuntu:20.04
  # ENV DEBIAN_FRONTEND=noninteractive
  # RUN apt-get update && \
  #     apt-get upgrade -y && \
  #     apt-get install -y --no-install-recommends \
  #         curl git ca-certificates \
  #         autoconf automake libtool pkg-config \
  #         make gcc clang llvm \
  #         zlib1g-dev liblzma-dev libgcrypt-dev \
  #         python-dev python3-dev \
  #         cmake
  # WORKDIR /tests
  # RUN curl https://www.w3.org/XML/Test/xmlts20080827.tar.gz |tar xz
  image: registry.gitlab.gnome.org/gnome/libxml2
  script:
    - |
      ln -s /tests/xmlconf
      sh autogen.sh $CONFIG
      make -j$(nproc) V=1 CFLAGS="$CFLAGS -Werror"
      make check

gcc:
  extends: .test
  variables:
    CFLAGS: "-O2 -std=c89 -D_XOPEN_SOURCE=700"

gcc:python3:
  extends: .test
  variables:
    CONFIG: "--with-python=/usr/bin/python3"
    CFLAGS: "-O2"

clang:asan:
  extends: .test
  variables:
    CONFIG: "--without-python"
    CC: clang
    CFLAGS: "-O2 -g -fno-omit-frame-pointer -fsanitize=address,undefined,unsigned-integer-overflow -fno-sanitize-recover=all -Wno-error=cast-align"
    # LeakSanitizer requires SYS_CAP_PTRACE
    ASAN_OPTIONS: "detect_leaks=0"
    UBSAN_OPTIONS: "print_stacktrace=1"

clang:msan:
  extends: .test
  variables:
    CONFIG: "--without-python --without-zlib --without-lzma"
    CC: clang
    CFLAGS: "-O2 -g -fno-omit-frame-pointer -fsanitize=memory -Wno-error=cast-align"

.cmake:linux:
  image: registry.gitlab.gnome.org/gnome/libxml2
  script:
    - cmake -DBUILD_SHARED_LIBS=$BUILD_SHARED_LIBS -DCMAKE_INSTALL_PREFIX=libxml2-install -DCMAKE_BUILD_TYPE=RelWithDebInfo -DLIBXML2_XMLCONF_WORKING_DIR=/tests -S . -B libxml2-build
    - cmake --build libxml2-build --target install
    - mkdir -p libxml2-install/share/libxml2
    - cp Copyright libxml2-install/share/libxml2
    - cd libxml2-build
    - ctest -VV
  after_script:
    - cd libxml2-install
    - tar -czf ../libxml2-$CI_COMMIT_SHORT_SHA-$CC-$SUFFIX.tar.gz *
  artifacts:
    paths:
      - libxml2-$CI_COMMIT_SHORT_SHA-$CC-$SUFFIX.tar.gz
    expire_in: 1 day

cmake:linux:gcc:shared:
  extends: .cmake:linux
  variables:
    BUILD_SHARED_LIBS: "ON"
    CC: gcc
    SUFFIX: shared

cmake:linux:gcc:static:
  extends: .cmake:linux
  variables:
    BUILD_SHARED_LIBS: "OFF"
    CC: gcc
    SUFFIX: static

cmake:linux:clang:shared:
  extends: .cmake:linux
  variables:
    BUILD_SHARED_LIBS: "ON"
    CC: clang
    SUFFIX: shared

cmake:linux:clang:static:
  extends: .cmake:linux
  variables:
    BUILD_SHARED_LIBS: "OFF"
    CC: clang
    SUFFIX: static

.cmake:mingw:
  tags:
    - win32-ps
  before_script:
    - "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12"
    - $Env:Path="C:\msys64\$Env:MINGW_PATH\bin;C:\msys64\usr\bin;$Env:Path"
    - pacman --noconfirm -Syu
    - pacman --noconfirm -S
        $Env:MINGW_PACKAGE_PREFIX-cmake
        $Env:MINGW_PACKAGE_PREFIX-libiconv
        $Env:MINGW_PACKAGE_PREFIX-ninja
        $Env:MINGW_PACKAGE_PREFIX-python
        $Env:MINGW_PACKAGE_PREFIX-python2
        $Env:MINGW_PACKAGE_PREFIX-xz
        $Env:MINGW_PACKAGE_PREFIX-zlib
    - if (-not (Test-Path 7za.exe)) {
        Invoke-WebRequest -Uri https://www.7-zip.org/a/7z1900-extra.7z -OutFile 7z1900-extra.7z ;
        cmake -E tar xf 7z1900-extra.7z 7za.exe
      }
    - if (-not (Test-Path libxml2-build/xmlconf)) {
        Invoke-WebRequest -Uri https://www.w3.org/XML/Test/xmlts20080827.tar.gz -OutFile xmlts20080827.tar.gz ;
        .\7za.exe x xmlts20080827.tar.gz -olibxml2-build
      }
  script:
    - cmake -G Ninja -DBUILD_SHARED_LIBS=$Env:BUILD_SHARED_LIBS -DCMAKE_INSTALL_PREFIX=libxml2-install -DCMAKE_BUILD_TYPE=RelWithDebInfo -S . -B libxml2-build
    - cmake --build libxml2-build --target install
    - New-Item -ItemType Directory libxml2-install\share\libxml2
    - Copy-Item Copyright libxml2-install\share\libxml2
    - cd libxml2-build
    - ctest -VV
  after_script:
    - .\7za.exe a libxml2-$Env:CI_COMMIT_SHORT_SHA-$Env:MINGW_PACKAGE_PREFIX-$Env:SUFFIX.7z .\libxml2-install\*
  cache:
    key: "$MINGW_PACKAGE_PREFIX"
    paths:
      - libxml2-build/xmlconf/
      - 7za.exe
  artifacts:
    paths:
      - libxml2-$Env:CI_COMMIT_SHORT_SHA-$Env:MINGW_PACKAGE_PREFIX-$Env:SUFFIX.7z
    expire_in: 1 day

cmake:mingw:w64-i686:shared:
  extends: .cmake:mingw
  variables:
    BUILD_SHARED_LIBS: "ON"
    MINGW_PACKAGE_PREFIX: mingw-w64-i686
    MINGW_PATH: mingw32
    SUFFIX: shared

cmake:mingw:w64-i686:static:
  extends: .cmake:mingw
  variables:
    BUILD_SHARED_LIBS: "OFF"
    MINGW_PACKAGE_PREFIX: mingw-w64-i686
    MINGW_PATH: mingw32
    SUFFIX: static

cmake:mingw:w64-x86_64:shared:
  extends: .cmake:mingw
  variables:
    BUILD_SHARED_LIBS: "ON"
    MINGW_PACKAGE_PREFIX: mingw-w64-x86_64
    MINGW_PATH: mingw64
    SUFFIX: shared

cmake:mingw:w64-x86_64:static:
  extends: .cmake:mingw
  variables:
    BUILD_SHARED_LIBS: "OFF"
    MINGW_PACKAGE_PREFIX: mingw-w64-x86_64
    MINGW_PATH: mingw64
    SUFFIX: static
