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