.build:
  extends:
    - .container+build-rules
  stage: build-only
  artifacts:
    paths:
      - artifacts
  script:
    - FDO_CI_CONCURRENT=${FDO_CI_CONCURRENT} bash drivers/gpu/drm/ci/build.sh

.build:arm32:
  extends:
    - .build
    - .use-debian/arm64_build
  tags:
    - $FDO_RUNNER_JOB_PRIORITY_TAG_AARCH64
  variables:
    DEFCONFIG: "arch/arm/configs/multi_v7_defconfig"
    KERNEL_IMAGE_NAME: "zImage"
    KERNEL_ARCH: "arm"

.build:arm64:
  extends:
    - .build
    - .use-debian/arm64_build
  tags:
    - $FDO_RUNNER_JOB_PRIORITY_TAG_AARCH64
  variables:
    DEFCONFIG: "arch/arm64/configs/defconfig"
    KERNEL_IMAGE_NAME: "Image"
    KERNEL_ARCH: "arm64"

.build:x86_64:
  extends:
    - .build
    - .use-debian/x86_64_build
  variables:
    DEFCONFIG: "arch/x86/configs/x86_64_defconfig"
    KERNEL_IMAGE_NAME: "bzImage"
    KERNEL_ARCH: "x86_64"


# Build IGT for testing on devices

igt:arm32:
  extends: .build:arm32
  variables:
    GIT_DEPTH: 10
  script:
    - FDO_CI_CONCURRENT=${FDO_CI_CONCURRENT} bash drivers/gpu/drm/ci/build-igt.sh

igt:arm64:
  extends: .build:arm64
  variables:
    GIT_DEPTH: 10
  script:
    - FDO_CI_CONCURRENT=${FDO_CI_CONCURRENT} bash drivers/gpu/drm/ci/build-igt.sh

igt:x86_64:
  extends: .build:x86_64
  variables:
    GIT_DEPTH: 10
  script:
    - FDO_CI_CONCURRENT=${FDO_CI_CONCURRENT} bash drivers/gpu/drm/ci/build-igt.sh

# Build kernels for testing on devices

testing:arm32:
  extends: .build:arm32
  variables:
    # Would be good to have DEBUG_KMEMLEAK, but it doesn't work well with any of
    # PROVE_LOCKING and KASAN as of 5.17.
    #
    # db410c and db820c don't boot with KASAN_INLINE, probably due to the kernel
    # becoming too big for their bootloaders.
    ENABLE_KCONFIGS: "PROVE_LOCKING DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT DEBUG_WW_MUTEX_SLOWPATH"
    UPLOAD_TO_MINIO: 1
    MERGE_FRAGMENT: arm.config

testing:arm64:
  extends: .build:arm64
  variables:
    # Would be good to have DEBUG_KMEMLEAK, but it doesn't work well with any of
    # PROVE_LOCKING and KASAN as of 5.17.
    #
    # db410c and db820c don't boot with KASAN_INLINE, probably due to the kernel
    # becoming too big for their bootloaders.
    ENABLE_KCONFIGS: "PROVE_LOCKING DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT DEBUG_WW_MUTEX_SLOWPATH"
    UPLOAD_TO_MINIO: 1
    MERGE_FRAGMENT: arm64.config

testing:x86_64:
  extends: .build:x86_64
  variables:
    # Would be good to have DEBUG_KMEMLEAK, but it doesn't work well with any of
    # PROVE_LOCKING and KASAN as of 5.17.
    #
    # db410c and db820c don't boot with KASAN_INLINE, probably due to the kernel
    # becoming too big for their bootloaders.
    ENABLE_KCONFIGS: "PROVE_LOCKING DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT DEBUG_WW_MUTEX_SLOWPATH"
    UPLOAD_TO_MINIO: 1
    MERGE_FRAGMENT: x86_64.config


# Jobs for build-testing different configurations

build:arm32:
  extends: .build:arm32

build-nodebugfs:arm64:
  extends: .build:arm64
  variables:
    DISABLE_KCONFIGS: "DEBUG_FS"
    ENABLE_KCONFIGS: "EXPERT DRM_MSM_VALIDATE_XML"

build:x86_64:
  extends: .build:x86_64

# Disable build jobs that we won't use
alpine-build-testing:
  rules:
    - when: never

debian-android:
  rules:
    - when: never

debian-arm32:
  rules:
    - when: never

debian-arm32-asan:
  rules:
    - when: never

debian-arm64:
  rules:
    - when: never

debian-arm64-asan:
  rules:
    - when: never

debian-arm64-build-test:
  rules:
    - when: never

debian-arm64-release:
  rules:
    - when: never

debian-arm64-ubsan:
  rules:
    - when: never

debian-build-testing:
  rules:
    - when: never

debian-clang:
  rules:
    - when: never

debian-clang-release:
  rules:
    - when: never

debian-no-libdrm:
  rules:
    - when: never

debian-ppc64el:
  rules:
    - when: never

debian-release:
  rules:
    - when: never

debian-s390x:
  rules:
    - when: never

debian-testing:
  rules:
    - when: never

debian-testing-asan:
  rules:
    - when: never

debian-testing-msan:
  rules:
    - when: never

debian-testing-ubsan:
  rules:
    - when: never

debian-vulkan:
  rules:
    - when: never

debian-x86_32:
  rules:
    - when: never

fedora-release:
  rules:
    - when: never

rustfmt:
  rules:
    - when: never

shader-db:
  rules:
    - when: never

windows-msvc:
  rules:
    - when: never

yaml-toml-shell-py-test:
  rules:
    - when: never
