# SPDX-License-Identifier: CC0-1.0
# SPDX-FileCopyrightText: 2018-2022 Collabora, Ltd. and the Monado contributors

# Please run the following from the repo root after modifying this file:
#   make -f .gitlab-ci/ci-scripts.mk

fdo_ci_templates_sha: 34039cd573a2df832d465bc9e4c5f543571f5241

# These are a mapping, instead of a list/array, so we can merge.
.default_debian_packages:
  &default_debian_packages # Packages required for build and some other basic jobs
  build-essential:
  git:
  wget:
  unzip:
  cmake:
  ninja-build:
  libeigen3-dev:
  curl:
  patch:
  python3:
  pkg-config:
  libx11-dev:
  libx11-xcb-dev:
  libxxf86vm-dev:
  libxrandr-dev:
  libxcb-randr0-dev:
  libvulkan-dev:
  glslang-tools:
  libglvnd-dev:
  libgl1-mesa-dev:
  ca-certificates:
  libusb-1.0-0-dev:
  libudev-dev:
  # These are optional packages, that we're building against to ensure we build as much code as possible
  libhidapi-dev:
  libwayland-dev:
  libuvc-dev:
  libavcodec-dev:
  libopencv-dev:
  libv4l-dev:
  libcjson-dev:
  libsdl2-dev:
  libegl1-mesa-dev:
  libdbus-1-dev:
  libgstreamer1.0-dev:
  libgstreamer-plugins-base1.0-dev:
  libsystemd-dev:
  libbsd-dev:
  # Only used for building packages
  devscripts:
  debhelper:
  dput-ng:
  gettext-base:
  pandoc:

# These config defines are used for all NDK builds
.android_cmake_defines: &android_cmake_defines
  ANDROID_PLATFORM: 26
  CMAKE_TOOLCHAIN_FILE: /opt/android-ndk/build/cmake/android.toolchain.cmake
  Eigen3_DIR: /usr/lib/cmake/eigen3/
  EIGEN3_INCLUDE_DIR: /usr/include/eigen3

# The distributions we'll make an image for
distributions:
  - name: debian
    images:
      # This image does some extra work.
      - codename: bullseye
        script: i386_and_proclamation_container_prep.sh
        tag: "2022-04-22.0"
        deb_version_suffix: bpo11
        packages:
          <<: *default_debian_packages
          codespell:
          doxygen:
          graphviz:
          python3-pip:
          python3-click:
          clang-format:
        build_jobs:
          - name: "debian:cmake"
            # Generate "changes since last release" and add to changelog,
            # since this is the build that makes our docs.
            before_script:
              - pushd doc/changes
              - proclamation build --overwrite vNEXT
              - popd
            artifact_path: build/doc/html/

          - name: "debian:cmake-no-opencv"
            cmake_defines:
              BUILD_DOC: "OFF"
              XRT_HAVE_OPENCV: "OFF"

          - name: "debian:cmake-no-sdl2"
            cmake_defines:
              BUILD_DOC: "OFF"
              XRT_HAVE_SDL2: "OFF"

          - name: "debian:cmake-no-service"
            cmake_defines:
              BUILD_DOC: "OFF"
              XRT_FEATURE_SERVICE: "OFF"

          - name: "debian:cmake:32bit"
            cmake_defines:
              CMAKE_TOOLCHAIN_FILE: .gitlab-ci/i386.cmake
              # OpenCV doesn't play nicely with us in multi-arch.
              XRT_HAVE_OPENCV: "OFF"

      # This one is pretty minimal, compared to the others.
      # Though, we now install the android SDK in it...
      - codename: bullseye-ndk
        distro_version: bullseye
        repo_suffix: ndk
        script: android_container_prep.sh
        tag: "2022-03-16.0"
        packages:
          git:
          wget:
          unzip:
          cmake:
          meson:
          ninja-build:
          libeigen3-dev:
          python3:
          pkg-config:
          ca-certificates:
          glslang-tools:
          default-jdk-headless:
        build_jobs:
          - name: "ndk:armeabi-v7a"
            cmake_defines:
              <<: *android_cmake_defines
              BUILD_DOC: "OFF"
              ANDROID_ABI: armeabi-v7a

          - name: "ndk:arm64-v8a"
            cmake_defines:
              <<: *android_cmake_defines
              BUILD_DOC: "OFF"
              ANDROID_ABI: arm64-v8a

          - name: android:outOfProcess
            target: assembleOutOfProcessDebug
            artifact_path: src/xrt/targets/openxr_android/build/outputs/apk/outOfProcess

          - name: android:inProcess
            target: assembleInProcessDebug
            artifact_path: src/xrt/targets/openxr_android/build/outputs/apk/inProcess/

  - name: ubuntu
    images:
      # LTS
      - codename: focal
        distro_version: "20.04"
        tag: "2022-04-22.0"
        deb_version_suffix: ubuntu2004
        packages:
          <<: *default_debian_packages
        build_jobs:
          - name: "ubuntu:cmake"
            cmake_defines:
              BUILD_DOC: "OFF"

      - codename: hirsute
        distro_version: "21.04"
        tag: "2022-04-22.0"
        deb_version_suffix: ubuntu2104
        packages:
          <<: *default_debian_packages

      - codename: impish
        distro_version: "21.10"
        tag: "2022-04-22.0"
        deb_version_suffix: ubuntu2110
        packages:
          <<: *default_debian_packages
          reprepro:
        build_jobs:
          - name: "ubuntu:latest:cmake"
            cmake_defines:
              BUILD_DOC: "OFF"

  - name: arch
    images:
      - codename: rolling
        tag: "2022-04-22.0"
        packages:
          git:
          gcc:
          clang:
          cmake:
          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:
        build_jobs:
          - name: "arch:cmake"

          - name: "arch:cmake:clang"
            cmake_defines:
              CMAKE_C_COMPILER: /usr/bin/clang
              CMAKE_CXX_COMPILER: /usr/bin/clang++

android:
  platform: 26

packaging:
  # Name and email associated with the package
  name: "Monado CI"
  email: "ryan.pavlik@collabora.com"