variables:
  UPSTREAM_REPO: monado/monado

  DEBIAN_TAG: 2019-12-03.0
  DEBIAN_VERSION: buster
  DEBIAN_CONTAINER_IMAGE: "$CI_REGISTRY_IMAGE/debian/$DEBIAN_VERSION:$DEBIAN_TAG"
  
  ARCH_TAG: 2019-12-03.0
  ARCH_CONTAINER_IMAGE: "$CI_REGISTRY_IMAGE/archlinux/rolling:$ARCH_TAG"

include:
  - project: 'wayland/ci-templates'
    ref: 0a9bdd33a98f05af6761ab118b5074952242aab0
    file: '/templates/debian.yml'
  - project: 'wayland/ci-templates'
    ref: 0a9bdd33a98f05af6761ab118b5074952242aab0
    file: '/templates/arch.yml'

stages:
  - container_prep
  - build
  - pages
  - deploy

debian:container_prep:
  extends: .debian@container-ifnot-exists
  stage: container_prep
  variables:
    GIT_STRATEGY: none # no need to pull the whole tree for rebuilding the image
    # a list of packages to install
    DEBIAN_DEBS: 'build-essential git cmake meson ninja-build doxygen graphviz libeigen3-dev curl patch python3 pkg-config libx11-dev libxxf86vm-dev libxrandr-dev libxcb-randr0-dev libhidapi-dev libwayland-dev libvulkan-dev glslang-dev glslang-tools libglvnd-dev libgl1-mesa-dev ca-certificates libusb-1.0-0-dev libuvc-dev libavcodec-dev libopencv-dev libudev-dev clang-format-7 codespell libv4l-dev libegl1-mesa-dev'
    DEBIAN_EXEC: 'bash .gitlab-ci/build-openxr-openhmd.sh'


arch:container_prep:
  extends: .arch@container-ifnot-exists
  stage: container_prep
  variables:
    GIT_STRATEGY: none # no need to pull the whole tree for rebuilding the image
    # a list of packages to install
    ARCH_PKGS: 'git gcc cmake meson ninja pkgconfig python3 diffutils patch doxygen graphviz eigen hidapi libxrandr mesa glslang vulkan-headers vulkan-icd-loader check glfw-x11 libusb opencv gtk3 ffmpeg v4l-utils qt5-base'
    ARCH_EXEC: 'bash .gitlab-ci/build-openxr-openhmd.sh'

format-and-spellcheck:
  stage: build
  image: $DEBIAN_CONTAINER_IMAGE
  script:
  - scripts/format-and-spellcheck.sh
  artifacts:
    paths:
      - patches/
    expire_in: 1 week
    when: on_failure

debian:build-cmake:
  stage: build
  image: $DEBIAN_CONTAINER_IMAGE
  script:
  - mkdir build
  - pushd build
  - cmake -GNinja ..
  - ninja

arch:build-cmake:
  stage: build
  image: $ARCH_CONTAINER_IMAGE
  script:
  - mkdir build
  - pushd build
  - cmake -GNinja ..
  - ninja

debian:build-meson:
  stage: build
  image: $DEBIAN_CONTAINER_IMAGE
  script:
  - mkdir build
  - pushd build
  - meson ..
  - ninja
  artifacts:
    paths:
      - build/doc/html/

arch:build-meson:
  stage: build
  image: $ARCH_CONTAINER_IMAGE
  script:
  - mkdir build
  - pushd build
  - meson -Ddocs=disabled ..
  - ninja

###
# Pages
###
pages:
  stage: pages
  only:
    - master
  dependencies:
    - debian:build-meson
  script:
    - mkdir -p public
    - mv build/doc/html/* public/
  artifacts:
    paths:
      - public