.build-linux:
  stage: build
  rules:
    - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
  image: $CI_REGISTRY/wine/vkd3d:debian-bookworm
  interruptible: true
  needs:
    - job: image-linux
      optional: true
  dependencies: []
  script:
    - git config --global --add safe.directory $CI_PROJECT_DIR
    - git clean -fdx
    - git reset --hard
    - rm -fr .git/rebase-merge
    - mkdir artifacts
    - cat /proc/cpuinfo > artifacts/cpuinfo.txt
    - cat /proc/meminfo > artifacts/meminfo.txt
    - vulkaninfo > artifacts/vulkaninfo.txt
    - git rebase $CI_MERGE_REQUEST_DIFF_BASE_SHA --exec ./gitlab/build-linux
    - if [ -f build_failed ] ; then exit 1 ; fi
    - if [ -f tests_failed ] ; then exit 2 ; fi
  artifacts:
    when: always
    paths:
      - artifacts

build-radv-64:
  extends: .build-linux
  tags:
    - amd-gpu
  variables:
    VK_LOADER_DRIVERS_SELECT: 'radeon_*'
    VKD3D_SHADER_CONFIG: 'force_validation'

build-llvmpipe-64:
  extends: .build-linux
  allow_failure:
    exit_codes:
      - 2
  variables:
    VK_LOADER_DRIVERS_SELECT: 'lvp_*'
    VKD3D_SHADER_CONFIG: 'force_validation'

build-radv-32:
  extends: .build-linux
  tags:
    - amd-gpu
  variables:
    VK_LOADER_DRIVERS_SELECT: 'radeon_*'
    CC: 'i686-linux-gnu-gcc'
    VKD3D_SHADER_CONFIG: 'force_validation'

build-llvmpipe-32:
  extends: .build-linux
  allow_failure:
    exit_codes:
      - 2
  variables:
    VK_LOADER_DRIVERS_SELECT: 'lvp_*'
    CC: 'i686-linux-gnu-gcc'
    VKD3D_SHADER_CONFIG: 'force_validation'

build-llvmpipe-64-mesa24:
  extends: .build-linux
  allow_failure:
    exit_codes:
      - 2
  variables:
    VK_DRIVER_FILES: '/opt/mesa24/share/vulkan/icd.d/lvp_icd.x86_64.json'
    LD_LIBRARY_PATH: '/opt/mesa24/lib/x86_64-linux-gnu'
    __EGL_VENDOR_LIBRARY_FILENAMES: '/opt/mesa24/share/glvnd/egl_vendor.d/50_mesa.json'
    VKD3D_SHADER_CONFIG: 'force_validation'

build-crosstest:
  stage: build
  rules:
    - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
  image: $CI_REGISTRY/wine/vkd3d:debian-bookworm
  interruptible: true
  needs:
    - job: image-linux
      optional: true
  dependencies: []
  script:
    - git config --global --add safe.directory $CI_PROJECT_DIR
    - git clean -fdx
    - git reset --hard
    - rm -fr .git/rebase-merge
    - mkdir artifacts
    - cat /proc/cpuinfo > artifacts/cpuinfo.txt
    - cat /proc/meminfo > artifacts/meminfo.txt
    - vulkaninfo > artifacts/vulkaninfo.txt
    - git rebase $CI_MERGE_REQUEST_DIFF_BASE_SHA --exec ./gitlab/build-crosstest
    - if [ -f pipeline_failed ] ; then exit 1 ; fi
  artifacts:
    when: always
    paths:
      - artifacts

.build-mingw:
  stage: build
  rules:
    - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
  image: $CI_REGISTRY/wine/vkd3d:debian-bookworm
  interruptible: true
  needs:
    - job: image-linux
      optional: true
  dependencies: []
  script:
    - git config --global --add safe.directory $CI_PROJECT_DIR
    - git clean -fdx
    - git reset --hard
    - rm -fr .git/rebase-merge
    - mkdir artifacts
    - cat /proc/cpuinfo > artifacts/cpuinfo.txt
    - cat /proc/meminfo > artifacts/meminfo.txt
    - git rebase $CI_MERGE_REQUEST_DIFF_BASE_SHA --exec ./gitlab/build-mingw
    - if [ -f pipeline_failed ] ; then exit 1 ; fi
  artifacts:
    when: always
    paths:
      - artifacts

build-mingw-64:
  extends: .build-mingw
  variables:
    HOST: "x86_64-w64-mingw32"

build-mingw-32:
  extends: .build-mingw
  variables:
    HOST: "i686-w64-mingw32"

build-mac:
  stage: build
  rules:
    - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
  image: winehq-sonoma-pristine
  variables:
    TART_EXECUTOR_SSH_USERNAME: "gitlab"
    TART_EXECUTOR_SSH_PASSWORD: "gitlab"
  allow_failure: true
  interruptible: true
  needs:
    - job: image-mac
      optional: true
  dependencies: []
  tags:
    - mac
  script:
    - brew install vulkan-tools libtool spirv-headers vulkan-loader
    - git config --global --add safe.directory $CI_PROJECT_DIR
    - git clean -fdx
    - git reset --hard
    - rm -fr .git/rebase-merge
    - curl -o image.zip https://gitlab.winehq.org/api/v4/projects/giomasce%2Fvkd3d/jobs/artifacts/ci-image/download?job=image-mac
    - unzip image.zip
    - mkdir artifacts
    - export PATH="/opt/homebrew/opt/bison/bin:/opt/homebrew/opt/flex/bin:$PWD/image/bin:$PATH"
    - export VK_DRIVER_FILES="$PWD/image/moltenvk/MoltenVK_icd.json"
    - system_profiler SPSoftwareDataType SPHardwareDataType > artifacts/systeminfo.txt
    - vulkaninfo > artifacts/vulkaninfo.txt
    - git rebase $CI_MERGE_REQUEST_DIFF_BASE_SHA --exec ./gitlab/build-mac
    - if [ -f build_failed ] ; then exit 1 ; fi
    - if [ -f tests_failed ] ; then exit 2 ; fi
  variables:
    VKD3D_DISABLE_EXTENSIONS: "VK_EXT_descriptor_indexing"
    VKD3D_SHADER_CONFIG: 'force_validation'
    MVK_CONFIG_LOG_LEVEL: 2
    SONAME_LIBVULKAN: "/opt/homebrew/opt/vulkan-loader/lib/libvulkan.1.dylib"
  artifacts:
    when: always
    paths:
      - artifacts