1.cross_system_build_job:
2  extends: .base_job_template
3  stage: build
4  image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:$QEMU_CI_CONTAINER_TAG
5  cache:
6    paths:
7      - ccache
8    key: "$CI_JOB_NAME"
9    when: always
10  timeout: 80m
11  script:
12    - export CCACHE_BASEDIR="$(pwd)"
13    - export CCACHE_DIR="$CCACHE_BASEDIR/ccache"
14    - export CCACHE_MAXSIZE="500M"
15    - export PATH="$CCACHE_WRAPPERSDIR:$PATH"
16    - mkdir build
17    - cd build
18    - ccache --zero-stats
19    - ../configure --enable-werror --disable-docs --enable-fdt=system
20        --disable-user $QEMU_CONFIGURE_OPTS $EXTRA_CONFIGURE_OPTS
21        --target-list-exclude="arm-softmmu cris-softmmu
22          i386-softmmu microblaze-softmmu mips-softmmu mipsel-softmmu
23          mips64-softmmu ppc-softmmu riscv32-softmmu sh4-softmmu
24          sparc-softmmu xtensa-softmmu $CROSS_SKIP_TARGETS"
25    - make -j$(expr $(nproc) + 1) all check-build $MAKE_CHECK_ARGS
26    - if grep -q "EXESUF=.exe" config-host.mak;
27      then make installer;
28      version="$(git describe --match v[0-9]* 2>/dev/null || git rev-parse --short HEAD)";
29      mv -v qemu-setup*.exe qemu-setup-${version}.exe;
30      fi
31    - ccache --show-stats
32
33# Job to cross-build specific accelerators.
34#
35# Set the $ACCEL variable to select the specific accelerator (default to
36# KVM), and set extra options (such disabling other accelerators) via the
37# $EXTRA_CONFIGURE_OPTS variable.
38.cross_accel_build_job:
39  extends: .base_job_template
40  stage: build
41  image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:$QEMU_CI_CONTAINER_TAG
42  timeout: 30m
43  cache:
44    paths:
45      - ccache/
46    key: "$CI_JOB_NAME"
47  script:
48    - export CCACHE_BASEDIR="$(pwd)"
49    - export CCACHE_DIR="$CCACHE_BASEDIR/ccache"
50    - export CCACHE_MAXSIZE="500M"
51    - export PATH="$CCACHE_WRAPPERSDIR:$PATH"
52    - mkdir build
53    - cd build
54    - ../configure --enable-werror --disable-docs $QEMU_CONFIGURE_OPTS
55        --disable-tools --enable-${ACCEL:-kvm} $EXTRA_CONFIGURE_OPTS
56    - make -j$(expr $(nproc) + 1) all check-build $MAKE_CHECK_ARGS
57
58.cross_user_build_job:
59  extends: .base_job_template
60  stage: build
61  image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:$QEMU_CI_CONTAINER_TAG
62  cache:
63    paths:
64      - ccache/
65    key: "$CI_JOB_NAME"
66  script:
67    - export CCACHE_BASEDIR="$(pwd)"
68    - export CCACHE_DIR="$CCACHE_BASEDIR/ccache"
69    - export CCACHE_MAXSIZE="500M"
70    - mkdir build
71    - cd build
72    - ../configure --enable-werror --disable-docs $QEMU_CONFIGURE_OPTS
73        --disable-system --target-list-exclude="aarch64_be-linux-user
74          alpha-linux-user cris-linux-user m68k-linux-user microblazeel-linux-user
75          or1k-linux-user ppc-linux-user sparc-linux-user
76          xtensa-linux-user $CROSS_SKIP_TARGETS"
77    - make -j$(expr $(nproc) + 1) all check-build $MAKE_CHECK_ARGS
78
79# We can still run some tests on some of our cross build jobs. They can add this
80# template to their extends to save the build logs and test results
81.cross_test_artifacts:
82  artifacts:
83    name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
84    when: always
85    expire_in: 7 days
86    paths:
87      - build/meson-logs/testlog.txt
88    reports:
89      junit: build/meson-logs/testlog.junit.xml
90