Various testing updates
- fix some gitlab container dependencies - report meson test results via JUnit - fix meson display of enabled cross compilers - convert more cross build containers to lcitool and Debian 11 - re-factor cross compiler detection - use test cross-compilers for building ROMs - disable CI runs by default (see docs) - fix some broken links in development documentation -----BEGIN PGP SIGNATURE----- iQEzBAABCgAdFiEEZoWumedRZ7yvyN81+9DbCVqeKkQFAmKXqXYACgkQ+9DbCVqe KkTaogf+PpslFcqKzcT+CY2zkmen7+531fSHQ2oP6+lMPSuIDXi7jn/d/IXQ1gcI BfCvnAsictBzBqCPNhKYd8zxZwdzSYT3QtRWR4D86G26tyL5Zsuw+HrXuja/af7A RDULBl8HGKuZKY83QI1wTekjamfdFQeWn1t9051np5mPt0buPe4S3xELl0A/QGX+ f3H9hqYeQ+tb11a5KXEsbWrQqKRCNrjFKI2iKyz5rZa73Go0ODjHrtTfBccBNJv4 TBFxAW/XU+AUTI3vgtAsBIonEz7AcJyqlMffnx93GIttuChn5KRIIMPuz7Oztn89 OFHtGajs3DSEWjfEg9xncCaL7EFasA== =9Iod -----END PGP SIGNATURE----- Merge tag 'pull-testing-next-010622-3' of https://github.com/stsquad/qemu into staging Various testing updates - fix some gitlab container dependencies - report meson test results via JUnit - fix meson display of enabled cross compilers - convert more cross build containers to lcitool and Debian 11 - re-factor cross compiler detection - use test cross-compilers for building ROMs - disable CI runs by default (see docs) - fix some broken links in development documentation # -----BEGIN PGP SIGNATURE----- # # iQEzBAABCgAdFiEEZoWumedRZ7yvyN81+9DbCVqeKkQFAmKXqXYACgkQ+9DbCVqe # KkTaogf+PpslFcqKzcT+CY2zkmen7+531fSHQ2oP6+lMPSuIDXi7jn/d/IXQ1gcI # BfCvnAsictBzBqCPNhKYd8zxZwdzSYT3QtRWR4D86G26tyL5Zsuw+HrXuja/af7A # RDULBl8HGKuZKY83QI1wTekjamfdFQeWn1t9051np5mPt0buPe4S3xELl0A/QGX+ # f3H9hqYeQ+tb11a5KXEsbWrQqKRCNrjFKI2iKyz5rZa73Go0ODjHrtTfBccBNJv4 # TBFxAW/XU+AUTI3vgtAsBIonEz7AcJyqlMffnx93GIttuChn5KRIIMPuz7Oztn89 # OFHtGajs3DSEWjfEg9xncCaL7EFasA== # =9Iod # -----END PGP SIGNATURE----- # gpg: Signature made Wed 01 Jun 2022 11:01:26 AM PDT # gpg: using RSA key 6685AE99E75167BCAFC8DF35FBD0DB095A9E2A44 # gpg: Good signature from "Alex Bennée (Master Work Key) <alex.bennee@linaro.org>" [undefined] # gpg: WARNING: This key is not certified with a trusted signature! # gpg: There is no indication that the signature belongs to the owner. # Primary key fingerprint: 6685 AE99 E751 67BC AFC8 DF35 FBD0 DB09 5A9E 2A44 * tag 'pull-testing-next-010622-3' of https://github.com/stsquad/qemu: (33 commits) docs/devel: clean-up the CI links in the docs gitlab: don't run CI jobs in forks by default gitlab: convert build/container jobs to .base_job_template gitlab: convert static checks to .base_job_template gitlab: convert Cirrus jobs to .base_job_template gitlab: introduce a common base job template configure: remove unused variables from config-host.mak configure: enable cross compilation of vof configure: enable cross-compilation of optionrom configure: enable cross-compilation of s390-ccw configure: move symlink configuration earlier configure: include more binutils in tests/tcg makefile configure: introduce --cross-prefix-*= configure: handle host compiler in probe_target_compiler configure: add missing cross compiler fallbacks tests/tcg: merge configure.sh back into main configure script tests/tcg: correct target CPU for sparc32 configure, meson: move symlinking of ROMs to meson build: do a full build before running TCG tests build: add a more generic way to specify make->ninja dependencies ... Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
commit
e2c2d57599
72
.gitlab-ci.d/base.yml
Normal file
72
.gitlab-ci.d/base.yml
Normal file
@ -0,0 +1,72 @@
|
||||
|
||||
# The order of rules defined here is critically important.
|
||||
# They are evaluated in order and first match wins.
|
||||
#
|
||||
# Thus we group them into a number of stages, ordered from
|
||||
# most restrictive to least restrictive
|
||||
#
|
||||
.base_job_template:
|
||||
rules:
|
||||
#############################################################
|
||||
# Stage 1: exclude scenarios where we definitely don't
|
||||
# want jobs to run
|
||||
#############################################################
|
||||
|
||||
# Cirrus jobs can't run unless the creds / target repo are set
|
||||
- if: '$QEMU_JOB_CIRRUS && ($CIRRUS_GITHUB_REPO == "" || $CIRRUS_API_TOKEN == "")'
|
||||
when: never
|
||||
|
||||
# Publishing jobs should only run on the default branch in upstream
|
||||
- if: '$QEMU_JOB_PUBLISH == "1" && $CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH'
|
||||
when: never
|
||||
|
||||
# Non-publishing jobs should only run on staging branches in upstream
|
||||
- if: '$QEMU_JOB_PUBLISH != "1" && $CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH !~ /staging/'
|
||||
when: never
|
||||
|
||||
# Jobs only intended for forks should always be skipped on upstream
|
||||
- if: '$QEMU_JOB_ONLY_FORKS == "1" && $CI_PROJECT_NAMESPACE == "qemu-project"'
|
||||
when: never
|
||||
|
||||
# Forks don't get pipelines unless QEMU_CI=1 or QEMU_CI=2 is set
|
||||
- if: '$QEMU_CI != "1" && $QEMU_CI != "2" && $CI_PROJECT_NAMESPACE != "qemu-project"'
|
||||
when: never
|
||||
|
||||
# Avocado jobs don't run in forks unless $QEMU_CI_AVOCADO_TESTING is set
|
||||
- if: '$QEMU_JOB_AVOCADO && $QEMU_CI_AVOCADO_TESTING != "1" && $CI_PROJECT_NAMESPACE != "qemu-project"'
|
||||
when: never
|
||||
|
||||
|
||||
#############################################################
|
||||
# Stage 2: fine tune execution of jobs in specific scenarios
|
||||
# where the catch all logic is inapprorpaite
|
||||
#############################################################
|
||||
|
||||
# Optional jobs should not be run unless manually triggered
|
||||
- if: '$QEMU_JOB_OPTIONAL'
|
||||
when: manual
|
||||
allow_failure: true
|
||||
|
||||
# Skipped jobs should not be run unless manually triggered
|
||||
- if: '$QEMU_JOB_SKIPPED'
|
||||
when: manual
|
||||
allow_failure: true
|
||||
|
||||
# Avocado jobs can be manually start in forks if $QEMU_CI_AVOCADO_TESTING is unset
|
||||
- if: '$QEMU_JOB_AVOCADO && $CI_PROJECT_NAMESPACE != "qemu-project"'
|
||||
when: manual
|
||||
allow_failure: true
|
||||
|
||||
|
||||
#############################################################
|
||||
# Stage 3: catch all logic applying to any job not matching
|
||||
# an earlier criteria
|
||||
#############################################################
|
||||
|
||||
# Forks pipeline jobs don't start automatically unless
|
||||
# QEMU_CI=2 is set
|
||||
- if: '$QEMU_CI != "2" && $CI_PROJECT_NAMESPACE != "qemu-project"'
|
||||
when: manual
|
||||
|
||||
# Jobs can run if any jobs they depend on were successfull
|
||||
- when: on_success
|
@ -1,4 +1,5 @@
|
||||
.native_build_job_template:
|
||||
extends: .base_job_template
|
||||
stage: build
|
||||
image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
|
||||
before_script:
|
||||
@ -27,6 +28,7 @@
|
||||
fi
|
||||
|
||||
.common_test_job_template:
|
||||
extends: .base_job_template
|
||||
stage: test
|
||||
image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
|
||||
script:
|
||||
@ -44,6 +46,8 @@
|
||||
expire_in: 7 days
|
||||
paths:
|
||||
- build/meson-logs/testlog.txt
|
||||
reports:
|
||||
junit: build/meson-logs/testlog.junit.xml
|
||||
|
||||
.avocado_test_job_template:
|
||||
extends: .common_test_job_template
|
||||
@ -75,15 +79,5 @@
|
||||
after_script:
|
||||
- cd build
|
||||
- du -chs ${CI_PROJECT_DIR}/avocado-cache
|
||||
rules:
|
||||
# Only run these jobs if running on the mainstream namespace,
|
||||
# or if the user set the QEMU_CI_AVOCADO_TESTING variable (either
|
||||
# in its namespace setting or via git-push option, see documentation
|
||||
# in /.gitlab-ci.yml of this repository).
|
||||
- if: '$CI_PROJECT_NAMESPACE == "qemu-project"'
|
||||
when: on_success
|
||||
- if: '$QEMU_CI_AVOCADO_TESTING'
|
||||
when: on_success
|
||||
# Otherwise, set to manual (the jobs are created but not run).
|
||||
- when: manual
|
||||
allow_failure: true
|
||||
variables:
|
||||
QEMU_JOB_AVOCADO: 1
|
||||
|
@ -360,12 +360,11 @@ build-cfi-aarch64:
|
||||
expire_in: 2 days
|
||||
paths:
|
||||
- build
|
||||
rules:
|
||||
variables:
|
||||
# FIXME: This job is often failing, likely due to out-of-memory problems in
|
||||
# the constrained containers of the shared runners. Thus this is marked as
|
||||
# manual until the situation has been solved.
|
||||
- when: manual
|
||||
allow_failure: true
|
||||
# skipped until the situation has been solved.
|
||||
QEMU_JOB_SKIPPED: 1
|
||||
|
||||
check-cfi-aarch64:
|
||||
extends: .native_test_job_template
|
||||
@ -402,12 +401,11 @@ build-cfi-ppc64-s390x:
|
||||
expire_in: 2 days
|
||||
paths:
|
||||
- build
|
||||
rules:
|
||||
variables:
|
||||
# FIXME: This job is often failing, likely due to out-of-memory problems in
|
||||
# the constrained containers of the shared runners. Thus this is marked as
|
||||
# manual until the situation has been solved.
|
||||
- when: manual
|
||||
allow_failure: true
|
||||
# skipped until the situation has been solved.
|
||||
QEMU_JOB_SKIPPED: 1
|
||||
|
||||
check-cfi-ppc64-s390x:
|
||||
extends: .native_test_job_template
|
||||
@ -579,6 +577,7 @@ build-without-default-features:
|
||||
MAKE_CHECK_ARGS: check-unit check-qtest SPEED=slow
|
||||
|
||||
build-libvhost-user:
|
||||
extends: .base_job_template
|
||||
stage: build
|
||||
image: $CI_REGISTRY_IMAGE/qemu/fedora:latest
|
||||
needs:
|
||||
@ -595,10 +594,13 @@ build-tools-and-docs-debian:
|
||||
extends: .native_build_job_template
|
||||
needs:
|
||||
job: amd64-debian-container
|
||||
# when running on 'master' we use pre-existing container
|
||||
optional: true
|
||||
variables:
|
||||
IMAGE: debian-amd64
|
||||
MAKE_CHECK_ARGS: check-unit check-softfloat ctags TAGS cscope
|
||||
CONFIGURE_ARGS: --disable-system --disable-user --enable-docs --enable-tools
|
||||
QEMU_JOB_PUBLISH: 1
|
||||
artifacts:
|
||||
expire_in: 2 days
|
||||
paths:
|
||||
@ -618,6 +620,7 @@ build-tools-and-docs-debian:
|
||||
# that users can see the results of their commits, regardless
|
||||
# of what topic branch they're currently using
|
||||
pages:
|
||||
extends: .base_job_template
|
||||
image: $CI_REGISTRY_IMAGE/qemu/debian-amd64:latest
|
||||
stage: test
|
||||
needs:
|
||||
@ -635,10 +638,5 @@ pages:
|
||||
artifacts:
|
||||
paths:
|
||||
- public
|
||||
rules:
|
||||
- if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
|
||||
when: on_success
|
||||
- if: '$CI_PROJECT_NAMESPACE == "qemu-project"'
|
||||
when: never
|
||||
- if: '$CI_PROJECT_NAMESPACE != "qemu-project"'
|
||||
when: on_success
|
||||
variables:
|
||||
QEMU_JOB_PUBLISH: 1
|
||||
|
@ -11,6 +11,7 @@
|
||||
# special care, because we can't just override it at the GitLab CI job
|
||||
# definition level or we risk breaking it completely.
|
||||
.cirrus_build_job:
|
||||
extends: .base_job_template
|
||||
stage: build
|
||||
image: registry.gitlab.com/libvirt/libvirt-ci/cirrus-run:master
|
||||
needs: []
|
||||
@ -40,11 +41,8 @@
|
||||
<.gitlab-ci.d/cirrus/build.yml >.gitlab-ci.d/cirrus/$NAME.yml
|
||||
- cat .gitlab-ci.d/cirrus/$NAME.yml
|
||||
- cirrus-run -v --show-build-log always .gitlab-ci.d/cirrus/$NAME.yml
|
||||
rules:
|
||||
# Allow on 'staging' branch and 'stable-X.Y-staging' branches only
|
||||
- if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH !~ /staging/'
|
||||
when: never
|
||||
- if: "$CIRRUS_GITHUB_REPO && $CIRRUS_API_TOKEN"
|
||||
variables:
|
||||
QEMU_JOB_CIRRUS: 1
|
||||
|
||||
x64-freebsd-12-build:
|
||||
extends: .cirrus_build_job
|
||||
@ -90,11 +88,11 @@ x64-macos-11-base-build:
|
||||
|
||||
# The following jobs run VM-based tests via KVM on a Linux-based Cirrus-CI job
|
||||
.cirrus_kvm_job:
|
||||
extends: .base_job_template
|
||||
stage: build
|
||||
image: registry.gitlab.com/libvirt/libvirt-ci/cirrus-run:master
|
||||
needs: []
|
||||
timeout: 80m
|
||||
allow_failure: true
|
||||
script:
|
||||
- sed -e "s|[@]CI_REPOSITORY_URL@|$CI_REPOSITORY_URL|g"
|
||||
-e "s|[@]CI_COMMIT_REF_NAME@|$CI_COMMIT_REF_NAME|g"
|
||||
@ -105,8 +103,10 @@ x64-macos-11-base-build:
|
||||
<.gitlab-ci.d/cirrus/kvm-build.yml >.gitlab-ci.d/cirrus/$NAME.yml
|
||||
- cat .gitlab-ci.d/cirrus/$NAME.yml
|
||||
- cirrus-run -v --show-build-log always .gitlab-ci.d/cirrus/$NAME.yml
|
||||
rules:
|
||||
- when: manual
|
||||
variables:
|
||||
QEMU_JOB_CIRRUS: 1
|
||||
QEMU_JOB_OPTIONAL: 1
|
||||
|
||||
|
||||
x86-netbsd:
|
||||
extends: .cirrus_kvm_job
|
||||
|
@ -27,30 +27,26 @@ arm64-debian-cross-container:
|
||||
|
||||
armel-debian-cross-container:
|
||||
extends: .container_job_template
|
||||
stage: containers-layer2
|
||||
needs: ['amd64-debian10-container']
|
||||
stage: containers
|
||||
variables:
|
||||
NAME: debian-armel-cross
|
||||
|
||||
armhf-debian-cross-container:
|
||||
extends: .container_job_template
|
||||
stage: containers-layer2
|
||||
needs: ['amd64-debian10-container']
|
||||
stage: containers
|
||||
variables:
|
||||
NAME: debian-armhf-cross
|
||||
|
||||
# We never want to build hexagon in the CI system and by default we
|
||||
# always want to refer to the master registry where it lives.
|
||||
hexagon-cross-container:
|
||||
extends: .base_job_template
|
||||
image: docker:stable
|
||||
stage: containers
|
||||
rules:
|
||||
- if: '$CI_PROJECT_NAMESPACE == "qemu-project"'
|
||||
when: never
|
||||
- when: always
|
||||
variables:
|
||||
NAME: debian-hexagon-cross
|
||||
GIT_DEPTH: 1
|
||||
QEMU_JOB_ONLY_FORKS: 1
|
||||
services:
|
||||
- docker:dind
|
||||
before_script:
|
||||
@ -90,8 +86,7 @@ mips64-debian-cross-container:
|
||||
|
||||
mips64el-debian-cross-container:
|
||||
extends: .container_job_template
|
||||
stage: containers-layer2
|
||||
needs: ['amd64-debian10-container']
|
||||
stage: containers
|
||||
variables:
|
||||
NAME: debian-mips64el-cross
|
||||
|
||||
@ -104,8 +99,7 @@ mips-debian-cross-container:
|
||||
|
||||
mipsel-debian-cross-container:
|
||||
extends: .container_job_template
|
||||
stage: containers-layer2
|
||||
needs: ['amd64-debian10-container']
|
||||
stage: containers
|
||||
variables:
|
||||
NAME: debian-mipsel-cross
|
||||
|
||||
@ -118,14 +112,13 @@ powerpc-test-cross-container:
|
||||
|
||||
ppc64el-debian-cross-container:
|
||||
extends: .container_job_template
|
||||
stage: containers-layer2
|
||||
needs: ['amd64-debian10-container']
|
||||
stage: containers
|
||||
variables:
|
||||
NAME: debian-ppc64el-cross
|
||||
|
||||
riscv64-debian-cross-container:
|
||||
extends: .container_job_template
|
||||
stage: containers-layer2
|
||||
stage: containers
|
||||
# as we are currently based on 'sid/unstable' we may break so...
|
||||
allow_failure: true
|
||||
variables:
|
||||
@ -135,6 +128,7 @@ riscv64-debian-cross-container:
|
||||
riscv64-debian-test-cross-container:
|
||||
extends: .container_job_template
|
||||
stage: containers-layer2
|
||||
needs: ['amd64-debian11-container']
|
||||
variables:
|
||||
NAME: debian-riscv64-test-cross
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
.container_job_template:
|
||||
extends: .base_job_template
|
||||
image: docker:stable
|
||||
stage: containers
|
||||
services:
|
||||
|
@ -14,8 +14,7 @@ amd64-debian11-container:
|
||||
|
||||
amd64-debian-container:
|
||||
extends: .container_job_template
|
||||
stage: containers-layer2
|
||||
needs: ['amd64-debian10-container']
|
||||
stage: containers
|
||||
variables:
|
||||
NAME: debian-amd64
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
.cross_system_build_job:
|
||||
extends: .base_job_template
|
||||
stage: build
|
||||
image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
|
||||
timeout: 80m
|
||||
@ -24,6 +25,7 @@
|
||||
# KVM), and set extra options (such disabling other accelerators) via the
|
||||
# $EXTRA_CONFIGURE_OPTS variable.
|
||||
.cross_accel_build_job:
|
||||
extends: .base_job_template
|
||||
stage: build
|
||||
image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
|
||||
timeout: 30m
|
||||
@ -36,6 +38,7 @@
|
||||
- make -j$(expr $(nproc) + 1) all check-build $MAKE_CHECK_ARGS
|
||||
|
||||
.cross_user_build_job:
|
||||
extends: .base_job_template
|
||||
stage: build
|
||||
image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
|
||||
script:
|
||||
|
@ -62,6 +62,8 @@ cross-i386-user:
|
||||
cross-i386-tci:
|
||||
extends: .cross_accel_build_job
|
||||
timeout: 60m
|
||||
needs:
|
||||
job: i386-fedora-cross-container
|
||||
variables:
|
||||
IMAGE: fedora-i386-cross
|
||||
ACCEL: tcg-interpreter
|
||||
|
@ -2,6 +2,7 @@
|
||||
# https://gitlab.com/qemu-project/qemu/-/pipelines
|
||||
|
||||
include:
|
||||
- local: '/.gitlab-ci.d/base.yml'
|
||||
- local: '/.gitlab-ci.d/stages.yml'
|
||||
- local: '/.gitlab-ci.d/edk2.yml'
|
||||
- local: '/.gitlab-ci.d/opensbi.yml'
|
||||
|
@ -1,4 +1,5 @@
|
||||
check-patch:
|
||||
extends: .base_job_template
|
||||
stage: build
|
||||
image: python:3.10-alpine
|
||||
needs: []
|
||||
@ -6,15 +7,13 @@ check-patch:
|
||||
- .gitlab-ci.d/check-patch.py
|
||||
variables:
|
||||
GIT_DEPTH: 1000
|
||||
QEMU_JOB_ONLY_FORKS: 1
|
||||
before_script:
|
||||
- apk -U add git perl
|
||||
rules:
|
||||
- if: '$CI_PROJECT_NAMESPACE == "qemu-project"'
|
||||
when: never
|
||||
- when: on_success
|
||||
allow_failure: true
|
||||
allow_failure: true
|
||||
|
||||
check-dco:
|
||||
extends: .base_job_template
|
||||
stage: build
|
||||
image: python:3.10-alpine
|
||||
needs: []
|
||||
@ -23,12 +22,9 @@ check-dco:
|
||||
GIT_DEPTH: 1000
|
||||
before_script:
|
||||
- apk -U add git
|
||||
rules:
|
||||
- if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
|
||||
when: never
|
||||
- when: on_success
|
||||
|
||||
check-python-pipenv:
|
||||
extends: .base_job_template
|
||||
stage: test
|
||||
image: $CI_REGISTRY_IMAGE/qemu/python:latest
|
||||
script:
|
||||
@ -39,6 +35,7 @@ check-python-pipenv:
|
||||
job: python-container
|
||||
|
||||
check-python-tox:
|
||||
extends: .base_job_template
|
||||
stage: test
|
||||
image: $CI_REGISTRY_IMAGE/qemu/python:latest
|
||||
script:
|
||||
@ -46,8 +43,6 @@ check-python-tox:
|
||||
variables:
|
||||
GIT_DEPTH: 1
|
||||
QEMU_TOX_EXTRA_ARGS: --skip-missing-interpreters=false
|
||||
QEMU_JOB_OPTIONAL: 1
|
||||
needs:
|
||||
job: python-container
|
||||
rules:
|
||||
- when: manual
|
||||
allow_failure: true
|
||||
|
@ -1,4 +1,5 @@
|
||||
.shared_msys2_builder:
|
||||
extends: .base_job_template
|
||||
tags:
|
||||
- shared-windows
|
||||
- windows
|
||||
|
9
Makefile
9
Makefile
@ -143,10 +143,9 @@ MAKE.q = $(findstring q,$(firstword $(filter-out --%,$(MAKEFLAGS))))
|
||||
MAKE.nq = $(if $(word 2, $(MAKE.n) $(MAKE.q)),nq)
|
||||
NINJAFLAGS = $(if $V,-v) $(if $(MAKE.n), -n) $(if $(MAKE.k), -k0) \
|
||||
$(filter-out -j, $(lastword -j1 $(filter -l% -j%, $(MAKEFLAGS)))) \
|
||||
|
||||
-d keepdepfile
|
||||
ninja-cmd-goals = $(or $(MAKECMDGOALS), all)
|
||||
ninja-cmd-goals += $(foreach t, $(.check.build-suites), $(.check-$t.deps))
|
||||
ninja-cmd-goals += $(foreach t, $(.bench.build-suites), $(.bench-$t.deps))
|
||||
ninja-cmd-goals += $(foreach g, $(MAKECMDGOALS), $(.ninja-goals.$g))))
|
||||
|
||||
makefile-targets := build.ninja ctags TAGS cscope dist clean uninstall
|
||||
# "ninja -t targets" also lists all prerequisites. If build system
|
||||
@ -160,8 +159,8 @@ $(ninja-targets): run-ninja
|
||||
# --output-sync line.
|
||||
run-ninja: config-host.mak
|
||||
ifneq ($(filter $(ninja-targets), $(ninja-cmd-goals)),)
|
||||
+$(quiet-@)$(if $(MAKE.nq),@:, $(NINJA) -d keepdepfile \
|
||||
$(NINJAFLAGS) $(sort $(filter $(ninja-targets), $(ninja-cmd-goals))) | cat)
|
||||
+$(if $(MAKE.nq),@:,$(quiet-@)$(NINJA) $(NINJAFLAGS) \
|
||||
$(sort $(filter $(ninja-targets), $(ninja-cmd-goals))) | cat)
|
||||
endif
|
||||
endif
|
||||
|
||||
|
606
configure
vendored
606
configure
vendored
@ -109,6 +109,20 @@ error_exit() {
|
||||
}
|
||||
|
||||
do_compiler() {
|
||||
# Run the compiler, capturing its output to the log. First argument
|
||||
# is compiler binary to execute.
|
||||
local compiler="$1"
|
||||
shift
|
||||
if test -n "$BASH_VERSION"; then eval '
|
||||
echo >>config.log "
|
||||
funcs: ${FUNCNAME[*]}
|
||||
lines: ${BASH_LINENO[*]}"
|
||||
'; fi
|
||||
echo $compiler "$@" >> config.log
|
||||
$compiler "$@" >> config.log 2>&1 || return $?
|
||||
}
|
||||
|
||||
do_compiler_werror() {
|
||||
# Run the compiler, capturing its output to the log. First argument
|
||||
# is compiler binary to execute.
|
||||
compiler="$1"
|
||||
@ -142,15 +156,15 @@ lines: ${BASH_LINENO[*]}"
|
||||
}
|
||||
|
||||
do_cc() {
|
||||
do_compiler "$cc" $CPU_CFLAGS "$@"
|
||||
do_compiler_werror "$cc" $CPU_CFLAGS "$@"
|
||||
}
|
||||
|
||||
do_cxx() {
|
||||
do_compiler "$cxx" $CPU_CFLAGS "$@"
|
||||
do_compiler_werror "$cxx" $CPU_CFLAGS "$@"
|
||||
}
|
||||
|
||||
do_objc() {
|
||||
do_compiler "$objcc" $CPU_CFLAGS "$@"
|
||||
do_compiler_werror "$objcc" $CPU_CFLAGS "$@"
|
||||
}
|
||||
|
||||
# Append $2 to the variable named $1, with space separation
|
||||
@ -345,11 +359,14 @@ for opt do
|
||||
;;
|
||||
--cross-cc-cflags-*) cc_arch=${opt#--cross-cc-cflags-}; cc_arch=${cc_arch%%=*}
|
||||
eval "cross_cc_cflags_${cc_arch}=\$optarg"
|
||||
cross_cc_vars="$cross_cc_vars cross_cc_cflags_${cc_arch}"
|
||||
;;
|
||||
--cross-cc-*) cc_arch=${opt#--cross-cc-}; cc_arch=${cc_arch%%=*}
|
||||
eval "cross_cc_${cc_arch}=\$optarg"
|
||||
cross_cc_vars="$cross_cc_vars cross_cc_${cc_arch}"
|
||||
;;
|
||||
--cross-prefix-*[!a-zA-Z0-9_-]*=*) error_exit "Passed bad --cross-prefix-FOO option"
|
||||
;;
|
||||
--cross-prefix-*) cc_arch=${opt#--cross-prefix-}; cc_arch=${cc_arch%%=*}
|
||||
eval "cross_prefix_${cc_arch}=\$optarg"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
@ -376,7 +393,6 @@ fi
|
||||
ar="${AR-${cross_prefix}ar}"
|
||||
as="${AS-${cross_prefix}as}"
|
||||
ccas="${CCAS-$cc}"
|
||||
cpp="${CPP-$cc -E}"
|
||||
objcopy="${OBJCOPY-${cross_prefix}objcopy}"
|
||||
ld="${LD-${cross_prefix}ld}"
|
||||
ranlib="${RANLIB-${cross_prefix}ranlib}"
|
||||
@ -717,6 +733,8 @@ for opt do
|
||||
;;
|
||||
--cross-cc-*)
|
||||
;;
|
||||
--cross-prefix-*)
|
||||
;;
|
||||
--enable-debug-info) meson_option_add -Ddebug=true
|
||||
;;
|
||||
--disable-debug-info) meson_option_add -Ddebug=false
|
||||
@ -943,11 +961,6 @@ case $git_submodules_action in
|
||||
;;
|
||||
esac
|
||||
|
||||
if eval test -z "\${cross_cc_$cpu}"; then
|
||||
eval "cross_cc_${cpu}=\$cc"
|
||||
cross_cc_vars="$cross_cc_vars cross_cc_${cpu}"
|
||||
fi
|
||||
|
||||
default_target_list=""
|
||||
mak_wilds=""
|
||||
|
||||
@ -1010,6 +1023,7 @@ Advanced options (experts only):
|
||||
--extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
|
||||
--cross-cc-ARCH=CC use compiler when building ARCH guest test cases
|
||||
--cross-cc-cflags-ARCH= use compiler flags when building ARCH guest tests
|
||||
--cross-prefix-ARCH=PREFIX cross compiler prefix when building ARCH guest test cases
|
||||
--make=MAKE use specified make [$make]
|
||||
--python=PYTHON use specified python [$python]
|
||||
--meson=MESON use specified meson [$meson]
|
||||
@ -1801,6 +1815,324 @@ case "$slirp" in
|
||||
;;
|
||||
esac
|
||||
|
||||
##########################################
|
||||
# functions to probe cross compilers
|
||||
|
||||
container="no"
|
||||
if test $use_containers = "yes"; then
|
||||
if has "docker" || has "podman"; then
|
||||
container=$($python $source_path/tests/docker/docker.py probe)
|
||||
fi
|
||||
fi
|
||||
|
||||
# cross compilers defaults, can be overridden with --cross-cc-ARCH
|
||||
: ${cross_prefix_aarch64="aarch64-linux-gnu-"}
|
||||
: ${cross_prefix_aarch64_be="$cross_prefix_aarch64"}
|
||||
: ${cross_prefix_alpha="alpha-linux-gnu-"}
|
||||
: ${cross_prefix_arm="arm-linux-gnueabihf-"}
|
||||
: ${cross_prefix_armeb="$cross_prefix_arm"}
|
||||
: ${cross_prefix_hexagon="hexagon-unknown-linux-musl-"}
|
||||
: ${cross_prefix_hppa="hppa-linux-gnu-"}
|
||||
: ${cross_prefix_i386="i686-linux-gnu-"}
|
||||
: ${cross_prefix_m68k="m68k-linux-gnu-"}
|
||||
: ${cross_prefix_microblaze="microblaze-linux-musl-"}
|
||||
: ${cross_prefix_mips64el="mips64el-linux-gnuabi64-"}
|
||||
: ${cross_prefix_mips64="mips64-linux-gnuabi64-"}
|
||||
: ${cross_prefix_mipsel="mipsel-linux-gnu-"}
|
||||
: ${cross_prefix_mips="mips-linux-gnu-"}
|
||||
: ${cross_prefix_nios2="nios2-linux-gnu-"}
|
||||
: ${cross_prefix_ppc="powerpc-linux-gnu-"}
|
||||
: ${cross_prefix_ppc64="powerpc64-linux-gnu-"}
|
||||
: ${cross_prefix_ppc64le="$cross_prefix_ppc64"}
|
||||
: ${cross_prefix_riscv64="riscv64-linux-gnu-"}
|
||||
: ${cross_prefix_s390x="s390x-linux-gnu-"}
|
||||
: ${cross_prefix_sh4="sh4-linux-gnu-"}
|
||||
: ${cross_prefix_sparc64="sparc64-linux-gnu-"}
|
||||
: ${cross_prefix_sparc="$cross_prefix_sparc64"}
|
||||
: ${cross_prefix_x86_64="x86_64-linux-gnu-"}
|
||||
|
||||
: ${cross_cc_aarch64_be="$cross_cc_aarch64"}
|
||||
: ${cross_cc_cflags_aarch64_be="-mbig-endian"}
|
||||
: ${cross_cc_armeb="$cross_cc_arm"}
|
||||
: ${cross_cc_cflags_armeb="-mbig-endian"}
|
||||
: ${cross_cc_hexagon="hexagon-unknown-linux-musl-clang"}
|
||||
: ${cross_cc_cflags_hexagon="-mv67 -O2 -static"}
|
||||
: ${cross_cc_cflags_i386="-m32"}
|
||||
: ${cross_cc_cflags_ppc="-m32"}
|
||||
: ${cross_cc_cflags_ppc64="-m64 -mbig-endian"}
|
||||
: ${cross_cc_ppc64le="$cross_cc_ppc64"}
|
||||
: ${cross_cc_cflags_ppc64le="-m64 -mlittle-endian"}
|
||||
: ${cross_cc_cflags_sparc64="-m64 -mcpu=ultrasparc"}
|
||||
: ${cross_cc_sparc="$cross_cc_sparc64"}
|
||||
: ${cross_cc_cflags_sparc="-m32 -mcpu=supersparc"}
|
||||
: ${cross_cc_cflags_x86_64="-m64"}
|
||||
|
||||
compute_target_variable() {
|
||||
if eval test -n "\"\${cross_prefix_$1}\""; then
|
||||
if eval has "\"\${cross_prefix_$1}\$3\""; then
|
||||
eval "$2=\"\${cross_prefix_$1}\$3\""
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
probe_target_compiler() {
|
||||
# reset all output variables
|
||||
container_image=
|
||||
container_hosts=
|
||||
container_cross_cc=
|
||||
container_cross_ar=
|
||||
container_cross_as=
|
||||
container_cross_ld=
|
||||
container_cross_nm=
|
||||
container_cross_objcopy=
|
||||
container_cross_ranlib=
|
||||
container_cross_strip=
|
||||
target_cc=
|
||||
target_ar=
|
||||
target_as=
|
||||
target_ld=
|
||||
target_nm=
|
||||
target_objcopy=
|
||||
target_ranlib=
|
||||
target_strip=
|
||||
|
||||
case $1 in
|
||||
aarch64) container_hosts="x86_64 aarch64" ;;
|
||||
alpha) container_hosts=x86_64 ;;
|
||||
arm) container_hosts="x86_64 aarch64" ;;
|
||||
cris) container_hosts=x86_64 ;;
|
||||
hexagon) container_hosts=x86_64 ;;
|
||||
hppa) container_hosts=x86_64 ;;
|
||||
i386) container_hosts=x86_64 ;;
|
||||
m68k) container_hosts=x86_64 ;;
|
||||
microblaze) container_hosts=x86_64 ;;
|
||||
mips64el) container_hosts=x86_64 ;;
|
||||
mips64) container_hosts=x86_64 ;;
|
||||
mipsel) container_hosts=x86_64 ;;
|
||||
mips) container_hosts=x86_64 ;;
|
||||
nios2) container_hosts=x86_64 ;;
|
||||
ppc) container_hosts=x86_64 ;;
|
||||
ppc64|ppc64le) container_hosts=x86_64 ;;
|
||||
riscv64) container_hosts=x86_64 ;;
|
||||
s390x) container_hosts=x86_64 ;;
|
||||
sh4) container_hosts=x86_64 ;;
|
||||
sparc64) container_hosts=x86_64 ;;
|
||||
tricore) container_hosts=x86_64 ;;
|
||||
x86_64) container_hosts="aarch64 ppc64el x86_64" ;;
|
||||
xtensa*) container_hosts=x86_64 ;;
|
||||
esac
|
||||
|
||||
for host in $container_hosts; do
|
||||
test "$container" != no || continue
|
||||
test "$host" = "$cpu" || continue
|
||||
case $1 in
|
||||
aarch64)
|
||||
# We don't have any bigendian build tools so we only use this for AArch64
|
||||
container_image=debian-arm64-cross
|
||||
container_cross_prefix=aarch64-linux-gnu-
|
||||
container_cross_cc=${container_cross_prefix}gcc-10
|
||||
;;
|
||||
alpha)
|
||||
container_image=debian-alpha-cross
|
||||
container_cross_prefix=alpha-linux-gnu-
|
||||
;;
|
||||
arm)
|
||||
# We don't have any bigendian build tools so we only use this for ARM
|
||||
container_image=debian-armhf-cross
|
||||
container_cross_prefix=arm-linux-gnueabihf-
|
||||
;;
|
||||
cris)
|
||||
container_image=fedora-cris-cross
|
||||
container_cross_prefix=cris-linux-gnu-
|
||||
;;
|
||||
hexagon)
|
||||
container_image=debian-hexagon-cross
|
||||
container_cross_prefix=hexagon-unknown-linux-musl-
|
||||
container_cross_cc=${container_cross_prefix}clang
|
||||
;;
|
||||
hppa)
|
||||
container_image=debian-hppa-cross
|
||||
container_cross_prefix=hppa-linux-gnu-
|
||||
;;
|
||||
i386)
|
||||
container_image=fedora-i386-cross
|
||||
container_cross_prefix=
|
||||
;;
|
||||
m68k)
|
||||
container_image=debian-m68k-cross
|
||||
container_cross_prefix=m68k-linux-gnu-
|
||||
;;
|
||||
microblaze)
|
||||
container_image=debian-microblaze-cross
|
||||
container_cross_prefix=microblaze-linux-musl-
|
||||
;;
|
||||
mips64el)
|
||||
container_image=debian-mips64el-cross
|
||||
container_cross_prefix=mips64el-linux-gnuabi64-
|
||||
;;
|
||||
mips64)
|
||||
container_image=debian-mips64-cross
|
||||
container_cross_prefix=mips64-linux-gnuabi64-
|
||||
;;
|
||||
mipsel)
|
||||
container_image=debian-mipsel-cross
|
||||
container_cross_prefix=mipsel-linux-gnu-
|
||||
;;
|
||||
mips)
|
||||
container_image=debian-mips-cross
|
||||
container_cross_prefix=mips-linux-gnu-
|
||||
;;
|
||||
nios2)
|
||||
container_image=debian-nios2-cross
|
||||
container_cross_prefix=nios2-linux-gnu-
|
||||
;;
|
||||
ppc)
|
||||
container_image=debian-powerpc-test-cross
|
||||
container_cross_prefix=powerpc-linux-gnu-
|
||||
container_cross_cc=${container_cross_prefix}gcc-10
|
||||
;;
|
||||
ppc64|ppc64le)
|
||||
container_image=debian-powerpc-test-cross
|
||||
container_cross_prefix=powerpc${1#ppc}-linux-gnu-
|
||||
container_cross_cc=${container_cross_prefix}gcc-10
|
||||
;;
|
||||
riscv64)
|
||||
container_image=debian-riscv64-test-cross
|
||||
container_cross_prefix=riscv64-linux-gnu-
|
||||
;;
|
||||
s390x)
|
||||
container_image=debian-s390x-cross
|
||||
container_cross_prefix=s390x-linux-gnu-
|
||||
;;
|
||||
sh4)
|
||||
container_image=debian-sh4-cross
|
||||
container_cross_prefix=sh4-linux-gnu-
|
||||
;;
|
||||
sparc64)
|
||||
container_image=debian-sparc64-cross
|
||||
container_cross_prefix=sparc64-linux-gnu-
|
||||
;;
|
||||
tricore)
|
||||
container_image=debian-tricore-cross
|
||||
container_cross_prefix=tricore-
|
||||
container_cross_as=tricore-as
|
||||
container_cross_ld=tricore-ld
|
||||
break
|
||||
;;
|
||||
x86_64)
|
||||
container_image=debian-amd64-cross
|
||||
container_cross_prefix=x86_64-linux-gnu-
|
||||
;;
|
||||
xtensa*)
|
||||
# FIXME: xtensa-linux-user?
|
||||
container_hosts=x86_64
|
||||
container_image=debian-xtensa-cross
|
||||
|
||||
# default to the dc232b cpu
|
||||
container_cross_prefix=/opt/2020.07/xtensa-dc232b-elf/bin/xtensa-dc232b-elf-
|
||||
;;
|
||||
esac
|
||||
: ${container_cross_cc:=${container_cross_prefix}gcc}
|
||||
: ${container_cross_ar:=${container_cross_prefix}ar}
|
||||
: ${container_cross_as:=${container_cross_prefix}as}
|
||||
: ${container_cross_ld:=${container_cross_prefix}ld}
|
||||
: ${container_cross_nm:=${container_cross_prefix}nm}
|
||||
: ${container_cross_objcopy:=${container_cross_prefix}objcopy}
|
||||
: ${container_cross_ranlib:=${container_cross_prefix}ranlib}
|
||||
: ${container_cross_strip:=${container_cross_prefix}strip}
|
||||
done
|
||||
|
||||
eval "target_cflags=\${cross_cc_cflags_$1}"
|
||||
if eval test -n "\"\${cross_cc_$1}\""; then
|
||||
if eval has "\"\${cross_cc_$1}\""; then
|
||||
eval "target_cc=\"\${cross_cc_$1}\""
|
||||
fi
|
||||
else
|
||||
compute_target_variable $1 target_cc gcc
|
||||
fi
|
||||
target_ccas=$target_cc
|
||||
compute_target_variable $1 target_ar ar
|
||||
compute_target_variable $1 target_as as
|
||||
compute_target_variable $1 target_ld ld
|
||||
compute_target_variable $1 target_nm nm
|
||||
compute_target_variable $1 target_objcopy objcopy
|
||||
compute_target_variable $1 target_ranlib ranlib
|
||||
compute_target_variable $1 target_strip strip
|
||||
if test "$1" = $cpu; then
|
||||
: ${target_cc:=$cc}
|
||||
: ${target_ccas:=$ccas}
|
||||
: ${target_as:=$as}
|
||||
: ${target_ld:=$ld}
|
||||
: ${target_ar:=$ar}
|
||||
: ${target_as:=$as}
|
||||
: ${target_ld:=$ld}
|
||||
: ${target_nm:=$nm}
|
||||
: ${target_objcopy:=$objcopy}
|
||||
: ${target_ranlib:=$ranlib}
|
||||
: ${target_strip:=$strip}
|
||||
fi
|
||||
if test -n "$target_cc"; then
|
||||
case $1 in
|
||||
i386|x86_64)
|
||||
if $target_cc --version | grep -qi "clang"; then
|
||||
unset target_cc
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
}
|
||||
|
||||
probe_target_compilers() {
|
||||
for i; do
|
||||
probe_target_compiler $i
|
||||
test -n "$target_cc" && return 0
|
||||
done
|
||||
}
|
||||
|
||||
write_target_makefile() {
|
||||
if test -n "$target_cc"; then
|
||||
echo "CC=$target_cc"
|
||||
echo "CCAS=$target_ccas"
|
||||
fi
|
||||
if test -n "$target_ar"; then
|
||||
echo "AR=$target_ar"
|
||||
fi
|
||||
if test -n "$target_as"; then
|
||||
echo "AS=$target_as"
|
||||
fi
|
||||
if test -n "$target_ld"; then
|
||||
echo "LD=$target_ld"
|
||||
fi
|
||||
if test -n "$target_nm"; then
|
||||
echo "NM=$target_nm"
|
||||
fi
|
||||
if test -n "$target_objcopy"; then
|
||||
echo "OBJCOPY=$target_objcopy"
|
||||
fi
|
||||
if test -n "$target_ranlib"; then
|
||||
echo "RANLIB=$target_ranlib"
|
||||
fi
|
||||
if test -n "$target_strip"; then
|
||||
echo "STRIP=$target_strip"
|
||||
fi
|
||||
}
|
||||
|
||||
write_container_target_makefile() {
|
||||
if test -n "$container_cross_cc"; then
|
||||
echo "CC=\$(DOCKER_SCRIPT) cc --cc $container_cross_cc -i qemu/$container_image -s $source_path --"
|
||||
echo "CCAS=\$(DOCKER_SCRIPT) cc --cc $container_cross_cc -i qemu/$container_image -s $source_path --"
|
||||
fi
|
||||
echo "AR=\$(DOCKER_SCRIPT) cc --cc $container_cross_ar -i qemu/$container_image -s $source_path --"
|
||||
echo "AS=\$(DOCKER_SCRIPT) cc --cc $container_cross_as -i qemu/$container_image -s $source_path --"
|
||||
echo "LD=\$(DOCKER_SCRIPT) cc --cc $container_cross_ld -i qemu/$container_image -s $source_path --"
|
||||
echo "NM=\$(DOCKER_SCRIPT) cc --cc $container_cross_nm -i qemu/$container_image -s $source_path --"
|
||||
echo "OBJCOPY=\$(DOCKER_SCRIPT) cc --cc $container_cross_objcopy -i qemu/$container_image -s $source_path --"
|
||||
echo "RANLIB=\$(DOCKER_SCRIPT) cc --cc $container_cross_ranlib -i qemu/$container_image -s $source_path --"
|
||||
echo "STRIP=\$(DOCKER_SCRIPT) cc --cc $container_cross_strip -i qemu/$container_image -s $source_path --"
|
||||
}
|
||||
|
||||
|
||||
|
||||
##########################################
|
||||
# End of CC checks
|
||||
# After here, no more $cc or $ld runs
|
||||
@ -1865,41 +2197,95 @@ if test "$QEMU_GA_VERSION" = ""; then
|
||||
QEMU_GA_VERSION=$(cat $source_path/VERSION)
|
||||
fi
|
||||
|
||||
|
||||
#######################################
|
||||
# cross-compiled firmware targets
|
||||
|
||||
# Set up build tree symlinks that point back into the source tree
|
||||
# (these can be both files and directories).
|
||||
# Caution: avoid adding files or directories here using wildcards. This
|
||||
# will result in problems later if a new file matching the wildcard is
|
||||
# added to the source tree -- nothing will cause configure to be rerun
|
||||
# so the build tree will be missing the link back to the new file, and
|
||||
# tests might fail. Prefer to keep the relevant files in their own
|
||||
# directory and symlink the directory instead.
|
||||
LINKS="Makefile"
|
||||
LINKS="$LINKS tests/tcg/Makefile.target"
|
||||
LINKS="$LINKS pc-bios/optionrom/Makefile"
|
||||
LINKS="$LINKS pc-bios/s390-ccw/Makefile"
|
||||
LINKS="$LINKS pc-bios/vof/Makefile"
|
||||
LINKS="$LINKS .gdbinit scripts" # scripts needed by relative path in .gdbinit
|
||||
LINKS="$LINKS tests/avocado tests/data"
|
||||
LINKS="$LINKS tests/qemu-iotests/check"
|
||||
LINKS="$LINKS python"
|
||||
LINKS="$LINKS contrib/plugins/Makefile "
|
||||
for f in $LINKS ; do
|
||||
if [ -e "$source_path/$f" ]; then
|
||||
mkdir -p `dirname ./$f`
|
||||
symlink "$source_path/$f" "$f"
|
||||
fi
|
||||
done
|
||||
|
||||
# Mac OS X ships with a broken assembler
|
||||
roms=
|
||||
if { test "$cpu" = "i386" || test "$cpu" = "x86_64"; } && \
|
||||
probe_target_compilers i386 x86_64
|
||||
if test -n "$target_cc" &&
|
||||
test "$targetos" != "darwin" && test "$targetos" != "sunos" && \
|
||||
test "$targetos" != "haiku" && test "$softmmu" = yes ; then
|
||||
# Different host OS linkers have different ideas about the name of the ELF
|
||||
# emulation. Linux and OpenBSD/amd64 use 'elf_i386'; FreeBSD uses the _fbsd
|
||||
# variant; OpenBSD/i386 uses the _obsd variant; and Windows uses i386pe.
|
||||
for emu in elf_i386 elf_i386_fbsd elf_i386_obsd i386pe; do
|
||||
if "$ld" -verbose 2>&1 | grep -q "^[[:space:]]*$emu[[:space:]]*$"; then
|
||||
if "$target_ld" -verbose 2>&1 | grep -q "^[[:space:]]*$emu[[:space:]]*$"; then
|
||||
ld_i386_emulation="$emu"
|
||||
roms="optionrom"
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test -n "$ld_i386_emulation"; then
|
||||
roms="optionrom"
|
||||
config_mak=pc-bios/optionrom/config.mak
|
||||
echo "# Automatically generated by configure - do not modify" > $config_mak
|
||||
echo "TOPSRC_DIR=$source_path" >> $config_mak
|
||||
echo "LD_I386_EMULATION=$ld_i386_emulation" >> $config_mak
|
||||
write_target_makefile >> $config_mak
|
||||
fi
|
||||
fi
|
||||
|
||||
# Only build s390-ccw bios if we're on s390x and the compiler has -march=z900
|
||||
# or -march=z10 (which is the lowest architecture level that Clang supports)
|
||||
if test "$cpu" = "s390x" ; then
|
||||
probe_target_compilers ppc ppc64
|
||||
if test -n "$target_cc" && test "$softmmu" = yes; then
|
||||
roms="$roms vof"
|
||||
config_mak=pc-bios/vof/config.mak
|
||||
echo "# Automatically generated by configure - do not modify" > $config_mak
|
||||
echo "SRC_DIR=$source_path/pc-bios/vof" >> $config_mak
|
||||
write_target_makefile >> $config_mak
|
||||
fi
|
||||
|
||||
# Only build s390-ccw bios if the compiler has -march=z900 or -march=z10
|
||||
# (which is the lowest architecture level that Clang supports)
|
||||
probe_target_compiler s390x
|
||||
if test -n "$target_cc" && test "$softmmu" = yes; then
|
||||
write_c_skeleton
|
||||
compile_prog "-march=z900" ""
|
||||
do_compiler "$target_cc" $target_cc_cflags -march=z900 -o $TMPO -c $TMPC
|
||||
has_z900=$?
|
||||
if [ $has_z900 = 0 ] || compile_object "-march=z10 -msoft-float -Werror"; then
|
||||
if [ $has_z900 = 0 ] || do_compiler "$target_cc" $target_cc_cflags -march=z10 -msoft-float -Werror -o $TMPO -c $TMPC; then
|
||||
if [ $has_z900 != 0 ]; then
|
||||
echo "WARNING: Your compiler does not support the z900!"
|
||||
echo " The s390-ccw bios will only work with guest CPUs >= z10."
|
||||
fi
|
||||
roms="$roms s390-ccw"
|
||||
config_mak=pc-bios/s390-ccw/config-host.mak
|
||||
echo "# Automatically generated by configure - do not modify" > $config_mak
|
||||
echo "SRC_PATH=$source_path/pc-bios/s390-ccw" >> $config_mak
|
||||
write_target_makefile >> $config_mak
|
||||
# SLOF is required for building the s390-ccw firmware on s390x,
|
||||
# since it is using the libnet code from SLOF for network booting.
|
||||
git_submodules="${git_submodules} roms/SLOF"
|
||||
fi
|
||||
fi
|
||||
|
||||
#######################################
|
||||
# generate config-host.mak
|
||||
|
||||
# Check that the C++ compiler exists and works with the C compiler.
|
||||
# All the QEMU_CXXFLAGS are based on QEMU_CFLAGS. Keep this at the end to don't miss any other that could be added.
|
||||
if has $cxx; then
|
||||
@ -2011,12 +2397,6 @@ echo "GENISOIMAGE=$genisoimage" >> $config_host_mak
|
||||
echo "MESON=$meson" >> $config_host_mak
|
||||
echo "NINJA=$ninja" >> $config_host_mak
|
||||
echo "CC=$cc" >> $config_host_mak
|
||||
echo "AR=$ar" >> $config_host_mak
|
||||
echo "AS=$as" >> $config_host_mak
|
||||
echo "CCAS=$ccas" >> $config_host_mak
|
||||
echo "CPP=$cpp" >> $config_host_mak
|
||||
echo "OBJCOPY=$objcopy" >> $config_host_mak
|
||||
echo "LD=$ld" >> $config_host_mak
|
||||
echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
|
||||
echo "QEMU_CXXFLAGS=$QEMU_CXXFLAGS" >> $config_host_mak
|
||||
echo "QEMU_OBJCFLAGS=$QEMU_OBJCFLAGS" >> $config_host_mak
|
||||
@ -2025,8 +2405,6 @@ echo "GLIB_LIBS=$glib_libs" >> $config_host_mak
|
||||
echo "GLIB_BINDIR=$glib_bindir" >> $config_host_mak
|
||||
echo "GLIB_VERSION=$(pkg-config --modversion glib-2.0)" >> $config_host_mak
|
||||
echo "QEMU_LDFLAGS=$QEMU_LDFLAGS" >> $config_host_mak
|
||||
echo "LD_I386_EMULATION=$ld_i386_emulation" >> $config_host_mak
|
||||
echo "STRIP=$strip" >> $config_host_mak
|
||||
echo "EXESUF=$EXESUF" >> $config_host_mak
|
||||
|
||||
# use included Linux headers
|
||||
@ -2084,55 +2462,136 @@ if test "$safe_stack" = "yes"; then
|
||||
echo "CONFIG_SAFESTACK=y" >> $config_host_mak
|
||||
fi
|
||||
|
||||
# If we're using a separate build tree, set it up now.
|
||||
# LINKS are things to symlink back into the source tree
|
||||
# (these can be both files and directories).
|
||||
# Caution: do not add files or directories here using wildcards. This
|
||||
# will result in problems later if a new file matching the wildcard is
|
||||
# added to the source tree -- nothing will cause configure to be rerun
|
||||
# so the build tree will be missing the link back to the new file, and
|
||||
# tests might fail. Prefer to keep the relevant files in their own
|
||||
# directory and symlink the directory instead.
|
||||
LINKS="Makefile"
|
||||
LINKS="$LINKS tests/tcg/Makefile.target"
|
||||
LINKS="$LINKS pc-bios/optionrom/Makefile"
|
||||
LINKS="$LINKS pc-bios/s390-ccw/Makefile"
|
||||
LINKS="$LINKS .gdbinit scripts" # scripts needed by relative path in .gdbinit
|
||||
LINKS="$LINKS tests/avocado tests/data"
|
||||
LINKS="$LINKS tests/qemu-iotests/check"
|
||||
LINKS="$LINKS python"
|
||||
LINKS="$LINKS contrib/plugins/Makefile "
|
||||
for bios_file in \
|
||||
$source_path/pc-bios/*.bin \
|
||||
$source_path/pc-bios/*.elf \
|
||||
$source_path/pc-bios/*.lid \
|
||||
$source_path/pc-bios/*.rom \
|
||||
$source_path/pc-bios/*.dtb \
|
||||
$source_path/pc-bios/*.img \
|
||||
$source_path/pc-bios/openbios-* \
|
||||
$source_path/pc-bios/u-boot.* \
|
||||
$source_path/pc-bios/palcode-* \
|
||||
$source_path/pc-bios/qemu_vga.ndrv
|
||||
# tests/tcg configuration
|
||||
(makefile=tests/tcg/Makefile.prereqs
|
||||
echo "# Automatically generated by configure - do not modify" > $makefile
|
||||
|
||||
do
|
||||
LINKS="$LINKS pc-bios/$(basename $bios_file)"
|
||||
done
|
||||
for f in $LINKS ; do
|
||||
if [ -e "$source_path/$f" ]; then
|
||||
mkdir -p `dirname ./$f`
|
||||
symlink "$source_path/$f" "$f"
|
||||
fi
|
||||
done
|
||||
config_host_mak=tests/tcg/config-host.mak
|
||||
echo "# Automatically generated by configure - do not modify" > $config_host_mak
|
||||
echo "SRC_PATH=$source_path" >> $config_host_mak
|
||||
echo "HOST_CC=$host_cc" >> $config_host_mak
|
||||
|
||||
(for i in $cross_cc_vars; do
|
||||
export $i
|
||||
done
|
||||
export target_list source_path use_containers cpu host_cc
|
||||
$source_path/tests/tcg/configure.sh)
|
||||
tcg_tests_targets=
|
||||
for target in $target_list; do
|
||||
arch=${target%%-*}
|
||||
|
||||
config_mak=pc-bios/optionrom/config.mak
|
||||
echo "# Automatically generated by configure - do not modify" > $config_mak
|
||||
echo "TOPSRC_DIR=$source_path" >> $config_mak
|
||||
probe_target_compiler ${arch}
|
||||
config_target_mak=tests/tcg/config-$target.mak
|
||||
|
||||
echo "# Automatically generated by configure - do not modify" > $config_target_mak
|
||||
echo "TARGET_NAME=$arch" >> $config_target_mak
|
||||
case $target in
|
||||
*-softmmu)
|
||||
test -f $source_path/tests/tcg/$arch/Makefile.softmmu-target || continue
|
||||
qemu="qemu-system-$arch"
|
||||
;;
|
||||
*-linux-user|*-bsd-user)
|
||||
qemu="qemu-$arch"
|
||||
;;
|
||||
esac
|
||||
|
||||
got_cross_cc=no
|
||||
unset build_static
|
||||
|
||||
if test -n "$target_cc"; then
|
||||
write_c_skeleton
|
||||
if ! do_compiler "$target_cc" $target_cflags \
|
||||
-o $TMPE $TMPC -static ; then
|
||||
# For host systems we might get away with building without -static
|
||||
if do_compiler "$target_cc" $target_cflags \
|
||||
-o $TMPE $TMPC ; then
|
||||
got_cross_cc=yes
|
||||
fi
|
||||
else
|
||||
got_cross_cc=yes
|
||||
build_static=y
|
||||
fi
|
||||
elif test -n "$target_as" && test -n "$target_ld"; then
|
||||
# Special handling for assembler only tests
|
||||
case $target in
|
||||
tricore-softmmu) got_cross_cc=yes ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
if test $got_cross_cc = yes; then
|
||||
# Test for compiler features for optional tests. We only do this
|
||||
# for cross compilers because ensuring the docker containers based
|
||||
# compilers is a requirememt for adding a new test that needs a
|
||||
# compiler feature.
|
||||
|
||||
echo "BUILD_STATIC=$build_static" >> $config_target_mak
|
||||
write_target_makefile >> $config_target_mak
|
||||
case $target in
|
||||
aarch64-*)
|
||||
if do_compiler "$target_cc" $target_cflags \
|
||||
-march=armv8.1-a+sve -o $TMPE $TMPC; then
|
||||
echo "CROSS_CC_HAS_SVE=y" >> $config_target_mak
|
||||
fi
|
||||
if do_compiler "$target_cc" $target_cflags \
|
||||
-march=armv8.1-a+sve2 -o $TMPE $TMPC; then
|
||||
echo "CROSS_CC_HAS_SVE2=y" >> $config_target_mak
|
||||
fi
|
||||
if do_compiler "$target_cc" $target_cflags \
|
||||
-march=armv8.3-a -o $TMPE $TMPC; then
|
||||
echo "CROSS_CC_HAS_ARMV8_3=y" >> $config_target_mak
|
||||
fi
|
||||
if do_compiler "$target_cc" $target_cflags \
|
||||
-mbranch-protection=standard -o $TMPE $TMPC; then
|
||||
echo "CROSS_CC_HAS_ARMV8_BTI=y" >> $config_target_mak
|
||||
fi
|
||||
if do_compiler "$target_cc" $target_cflags \
|
||||
-march=armv8.5-a+memtag -o $TMPE $TMPC; then
|
||||
echo "CROSS_CC_HAS_ARMV8_MTE=y" >> $config_target_mak
|
||||
fi
|
||||
;;
|
||||
ppc*)
|
||||
if do_compiler "$target_cc" $target_cflags \
|
||||
-mpower8-vector -o $TMPE $TMPC; then
|
||||
echo "CROSS_CC_HAS_POWER8_VECTOR=y" >> $config_target_mak
|
||||
fi
|
||||
if do_compiler "$target_cc" $target_cflags \
|
||||
-mpower10 -o $TMPE $TMPC; then
|
||||
echo "CROSS_CC_HAS_POWER10=y" >> $config_target_mak
|
||||
fi
|
||||
;;
|
||||
i386-linux-user)
|
||||
if do_compiler "$target_cc" $target_cflags \
|
||||
-Werror -fno-pie -o $TMPE $TMPC; then
|
||||
echo "CROSS_CC_HAS_I386_NOPIE=y" >> $config_target_mak
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
elif test -n "$container_image"; then
|
||||
echo "build-tcg-tests-$target: docker-image-$container_image" >> $makefile
|
||||
echo "BUILD_STATIC=y" >> $config_target_mak
|
||||
write_container_target_makefile >> $config_target_mak
|
||||
case $target in
|
||||
aarch64-*)
|
||||
echo "CROSS_CC_HAS_SVE=y" >> $config_target_mak
|
||||
echo "CROSS_CC_HAS_SVE2=y" >> $config_target_mak
|
||||
echo "CROSS_CC_HAS_ARMV8_3=y" >> $config_target_mak
|
||||
echo "CROSS_CC_HAS_ARMV8_BTI=y" >> $config_target_mak
|
||||
echo "CROSS_CC_HAS_ARMV8_MTE=y" >> $config_target_mak
|
||||
;;
|
||||
ppc*)
|
||||
echo "CROSS_CC_HAS_POWER8_VECTOR=y" >> $config_target_mak
|
||||
echo "CROSS_CC_HAS_POWER10=y" >> $config_target_mak
|
||||
;;
|
||||
i386-linux-user)
|
||||
echo "CROSS_CC_HAS_I386_NOPIE=y" >> $config_target_mak
|
||||
;;
|
||||
esac
|
||||
got_cross_cc=yes
|
||||
fi
|
||||
if test $got_cross_cc = yes; then
|
||||
mkdir -p tests/tcg/$target
|
||||
echo "QEMU=$PWD/$qemu" >> $config_target_mak
|
||||
echo "EXTRA_CFLAGS=$target_cflags" >> $config_target_mak
|
||||
echo "run-tcg-tests-$target: $qemu\$(EXESUF)" >> $makefile
|
||||
tcg_tests_targets="$tcg_tests_targets $target"
|
||||
fi
|
||||
done
|
||||
echo "TCG_TESTS_TARGETS=$tcg_tests_targets" >> $makefile)
|
||||
|
||||
if test "$skip_meson" = no; then
|
||||
cross="config-meson.cross.new"
|
||||
@ -2257,7 +2716,6 @@ preserve_env() {
|
||||
preserve_env AR
|
||||
preserve_env AS
|
||||
preserve_env CC
|
||||
preserve_env CPP
|
||||
preserve_env CFLAGS
|
||||
preserve_env CXX
|
||||
preserve_env CXXFLAGS
|
||||
|
@ -1,3 +1,5 @@
|
||||
.. _ci_var:
|
||||
|
||||
Custom CI/CD variables
|
||||
======================
|
||||
|
||||
@ -28,7 +30,113 @@ For further information about how to set these variables, please refer to::
|
||||
|
||||
https://docs.gitlab.com/ee/user/project/push_options.html#push-options-for-gitlab-cicd
|
||||
|
||||
Here is a list of the most used variables:
|
||||
Setting aliases in your git config
|
||||
----------------------------------
|
||||
|
||||
You can use aliases to make it easier to push branches with different
|
||||
CI configurations. For example define an alias for triggering CI:
|
||||
|
||||
.. code::
|
||||
|
||||
git config --local alias.push-ci "push -o ci.variable=QEMU_CI=1"
|
||||
git config --local alias.push-ci-now "push -o ci.variable=QEMU_CI=2"
|
||||
|
||||
Which lets you run:
|
||||
|
||||
.. code::
|
||||
|
||||
git push-ci
|
||||
|
||||
to create the pipeline, or:
|
||||
|
||||
.. code::
|
||||
|
||||
git push-ci-now
|
||||
|
||||
to create and run the pipeline
|
||||
|
||||
|
||||
Variable naming and grouping
|
||||
----------------------------
|
||||
|
||||
The variables used by QEMU's CI configuration are grouped together
|
||||
in a handful of namespaces
|
||||
|
||||
* QEMU_JOB_nnnn - variables to be defined in individual jobs
|
||||
or templates, to influence the shared rules defined in the
|
||||
.base_job_template.
|
||||
|
||||
* QEMU_CI_nnn - variables to be set by contributors in their
|
||||
repository CI settings, or as git push variables, to influence
|
||||
which jobs get run in a pipeline
|
||||
|
||||
* nnn - other misc variables not falling into the above
|
||||
categories, or using different names for historical reasons
|
||||
and not yet converted.
|
||||
|
||||
Maintainer controlled job variables
|
||||
-----------------------------------
|
||||
|
||||
The following variables may be set when defining a job in the
|
||||
CI configuration file.
|
||||
|
||||
QEMU_JOB_CIRRUS
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
The job makes use of Cirrus CI infrastructure, requiring the
|
||||
configuration setup for cirrus-run to be present in the repository
|
||||
|
||||
QEMU_JOB_OPTIONAL
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
The job is expected to be successful in general, but is not run
|
||||
by default due to need to conserve limited CI resources. It is
|
||||
available to be started manually by the contributor in the CI
|
||||
pipelines UI.
|
||||
|
||||
QEMU_JOB_ONLY_FORKS
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The job results are only of interest to contributors prior to
|
||||
submitting code. They are not required as part of the gating
|
||||
CI pipeline.
|
||||
|
||||
QEMU_JOB_SKIPPED
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
The job is not reliably successsful in general, so is not
|
||||
currently suitable to be run by default. Ideally this should
|
||||
be a temporary marker until the problems can be addressed, or
|
||||
the job permanently removed.
|
||||
|
||||
QEMU_JOB_PUBLISH
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
The job is for publishing content after a branch has been
|
||||
merged into the upstream default branch.
|
||||
|
||||
QEMU_JOB_AVOCADO
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
The job runs the Avocado integration test suite
|
||||
|
||||
Contributor controlled runtime variables
|
||||
----------------------------------------
|
||||
|
||||
The following variables may be set by contributors to control
|
||||
job execution
|
||||
|
||||
QEMU_CI
|
||||
~~~~~~~
|
||||
|
||||
By default, no pipelines will be created on contributor forks
|
||||
in order to preserve CI credits
|
||||
|
||||
Set this variable to 1 to create the pipelines, but leave all
|
||||
the jobs to be manually started from the UI
|
||||
|
||||
Set this variable to 2 to create the pipelines and run all
|
||||
the jobs immediately, as was historicaly behaviour
|
||||
|
||||
QEMU_CI_AVOCADO_TESTING
|
||||
~~~~~~~~~~~~~~~~~~~~~~~
|
||||
@ -38,6 +146,12 @@ these artifacts are not already cached, downloading them make the jobs
|
||||
reach the timeout limit). Set this variable to have the tests using the
|
||||
Avocado framework run automatically.
|
||||
|
||||
Other misc variables
|
||||
--------------------
|
||||
|
||||
These variables are primarily to control execution of jobs on
|
||||
private runners
|
||||
|
||||
AARCH64_RUNNER_AVAILABLE
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
If you've got access to an aarch64 host that can be used as a gitlab-CI
|
||||
|
@ -1,12 +1,13 @@
|
||||
.. _ci:
|
||||
|
||||
==
|
||||
CI
|
||||
==
|
||||
|
||||
QEMU has configurations enabled for a number of different CI services.
|
||||
The most up to date information about them and their status can be
|
||||
found at::
|
||||
|
||||
https://wiki.qemu.org/Testing/CI
|
||||
Most of QEMU's CI is run on GitLab's infrastructure although a number
|
||||
of other CI services are used for specialised purposes. The most up to
|
||||
date information about them and their status can be found on the
|
||||
`project wiki testing page <https://wiki.qemu.org/Testing/CI>`_.
|
||||
|
||||
.. include:: ci-definitions.rst.inc
|
||||
.. include:: ci-jobs.rst.inc
|
||||
|
@ -204,23 +204,25 @@ log`` for these keywords for example usage.
|
||||
Test your patches
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
Although QEMU has `continuous integration
|
||||
services <Testing#Continuous_Integration>`__ that attempt to test
|
||||
patches submitted to the list, it still saves everyone time if you have
|
||||
already tested that your patch compiles and works. Because QEMU is such
|
||||
a large project, it's okay to use configure arguments to limit what is
|
||||
built for faster turnaround during your development time; but it is
|
||||
still wise to also check that your patches work with a full build before
|
||||
submitting a series, especially if your changes might have an unintended
|
||||
effect on other areas of the code you don't normally experiment with.
|
||||
See `Testing <Testing>`__ for more details on what tests are available.
|
||||
Also, it is a wise idea to include a testsuite addition as part of your
|
||||
patches - either to ensure that future changes won't regress your new
|
||||
feature, or to add a test which exposes the bug that the rest of your
|
||||
series fixes. Keeping separate commits for the test and the fix allows
|
||||
reviewers to rebase the test to occur first to prove it catches the
|
||||
problem, then again to place it last in the series so that bisection
|
||||
doesn't land on a known-broken state.
|
||||
Although QEMU uses various :ref:`ci` services that attempt to test
|
||||
patches submitted to the list, it still saves everyone time if you
|
||||
have already tested that your patch compiles and works. Because QEMU
|
||||
is such a large project the default configuration won't create a
|
||||
testing pipeline on GitLab when a branch is pushed. See the :ref:`CI
|
||||
variable documentation<ci_var>` for details on how to control the
|
||||
running of tests; but it is still wise to also check that your patches
|
||||
work with a full build before submitting a series, especially if your
|
||||
changes might have an unintended effect on other areas of the code you
|
||||
don't normally experiment with. See :ref:`testing` for more details on
|
||||
what tests are available.
|
||||
|
||||
Also, it is a wise idea to include a testsuite addition as part of
|
||||
your patches - either to ensure that future changes won't regress your
|
||||
new feature, or to add a test which exposes the bug that the rest of
|
||||
your series fixes. Keeping separate commits for the test and the fix
|
||||
allows reviewers to rebase the test to occur first to prove it catches
|
||||
the problem, then again to place it last in the series so that
|
||||
bisection doesn't land on a known-broken state.
|
||||
|
||||
.. _submitting_your_patches:
|
||||
|
||||
|
@ -1,3 +1,5 @@
|
||||
.. _testing:
|
||||
|
||||
Testing in QEMU
|
||||
===============
|
||||
|
||||
|
@ -3735,12 +3735,8 @@ foreach target: target_dirs
|
||||
config_cross_tcg = keyval.load(tcg_mak)
|
||||
target = config_cross_tcg['TARGET_NAME']
|
||||
compiler = ''
|
||||
if 'DOCKER_CROSS_CC_GUEST' in config_cross_tcg
|
||||
summary_info += {target + ' tests': config_cross_tcg['DOCKER_CROSS_CC_GUEST'] +
|
||||
' via ' + config_cross_tcg['DOCKER_IMAGE']}
|
||||
elif 'CROSS_CC_GUEST' in config_cross_tcg
|
||||
summary_info += {target + ' tests'
|
||||
: config_cross_tcg['CROSS_CC_GUEST'] }
|
||||
if 'CC' in config_cross_tcg
|
||||
summary_info += {target + ' tests': config_cross_tcg['CC']}
|
||||
endif
|
||||
endif
|
||||
endforeach
|
||||
|
@ -23,7 +23,7 @@ if unpack_edk2_blobs
|
||||
endforeach
|
||||
endif
|
||||
|
||||
blobs = files(
|
||||
blobs = [
|
||||
'bios.bin',
|
||||
'bios-256k.bin',
|
||||
'bios-microvm.bin',
|
||||
@ -83,11 +83,18 @@ blobs = files(
|
||||
'npcm7xx_bootrom.bin',
|
||||
'vof.bin',
|
||||
'vof-nvram.bin',
|
||||
)
|
||||
]
|
||||
|
||||
if get_option('install_blobs')
|
||||
install_data(blobs, install_dir: qemu_datadir)
|
||||
endif
|
||||
ln_s = [find_program('ln', required: true), '-sf']
|
||||
foreach f : blobs
|
||||
roms += custom_target(f,
|
||||
build_by_default: have_system,
|
||||
output: f,
|
||||
input: files('meson.build'), # dummy input
|
||||
install: get_option('install_blobs'),
|
||||
install_dir: qemu_datadir,
|
||||
command: [ ln_s, meson.project_source_root() / 'pc-bios' / f, '@OUTPUT@' ])
|
||||
endforeach
|
||||
|
||||
subdir('descriptors')
|
||||
subdir('keymaps')
|
||||
|
@ -6,7 +6,6 @@ all: multiboot.bin multiboot_dma.bin linuxboot.bin linuxboot_dma.bin kvmvapic.bi
|
||||
# Dummy command so that make thinks it has done something
|
||||
@true
|
||||
|
||||
include ../../config-host.mak
|
||||
CFLAGS = -O2 -g
|
||||
|
||||
quiet-command = $(if $(V),$1,$(if $(2),@printf " %-7s %s\n" $2 $3 && $1, @$1))
|
||||
@ -44,13 +43,12 @@ Wa = -Wa,
|
||||
override ASFLAGS += -32
|
||||
override CFLAGS += $(call cc-option, $(Wa)-32)
|
||||
|
||||
LD_I386_EMULATION ?= elf_i386
|
||||
override LDFLAGS = -m $(LD_I386_EMULATION) -T $(SRC_DIR)/flat.lds
|
||||
|
||||
pvh.img: pvh.o pvh_main.o
|
||||
|
||||
%.o: %.S
|
||||
$(call quiet-command,$(CPP) $(CPPFLAGS) -c -o - $< | $(AS) $(ASFLAGS) -o $@,"AS","$@")
|
||||
$(call quiet-command,$(CC) $(CPPFLAGS) -E -o - $< | $(AS) $(ASFLAGS) -o $@,"AS","$@")
|
||||
|
||||
%.o: %.c
|
||||
$(call quiet-command,$(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@,"CC","$@")
|
||||
|
@ -2,8 +2,9 @@ all: build-all
|
||||
# Dummy command so that make thinks it has done something
|
||||
@true
|
||||
|
||||
include ../../config-host.mak
|
||||
include config-host.mak
|
||||
CFLAGS = -O2 -g
|
||||
MAKEFLAGS += -rR
|
||||
|
||||
quiet-command = $(if $(V),$1,$(if $(2),@printf " %-7s %s\n" $2 $3 && $1, @$1))
|
||||
cc-option = $(if $(shell $(CC) $1 $2 -S -o /dev/null -xc /dev/null \
|
||||
@ -11,7 +12,7 @@ cc-option = $(if $(shell $(CC) $1 $2 -S -o /dev/null -xc /dev/null \
|
||||
|
||||
VPATH_SUFFIXES = %.c %.h %.S %.m %.mak %.sh %.rc Kconfig% %.json.in
|
||||
set-vpath = $(if $1,$(foreach PATTERN,$(VPATH_SUFFIXES),$(eval vpath $(PATTERN) $1)))
|
||||
$(call set-vpath, $(SRC_PATH)/pc-bios/s390-ccw)
|
||||
$(call set-vpath, $(SRC_PATH))
|
||||
|
||||
# Flags for dependency generation
|
||||
QEMU_DGFLAGS = -MMD -MP -MT $@ -MF $(@D)/$(*F).d
|
||||
@ -49,8 +50,8 @@ s390-ccw.img: s390-ccw.elf
|
||||
|
||||
$(OBJECTS): Makefile
|
||||
|
||||
ifneq ($(wildcard $(SRC_PATH)/roms/SLOF/lib/libnet),)
|
||||
include $(SRC_PATH)/pc-bios/s390-ccw/netboot.mak
|
||||
ifneq ($(wildcard $(SRC_PATH)/../../roms/SLOF/lib/libnet),)
|
||||
include $(SRC_PATH)/netboot.mak
|
||||
else
|
||||
s390-netboot.img:
|
||||
@echo "s390-netboot.img not built since roms/SLOF/ is not available."
|
||||
|
@ -1,5 +1,5 @@
|
||||
|
||||
SLOF_DIR := $(SRC_PATH)/roms/SLOF
|
||||
SLOF_DIR := $(SRC_PATH)/../../roms/SLOF
|
||||
|
||||
NETOBJS := start.o sclp.o cio.o virtio.o virtio-net.o jump2ipl.o netmain.o
|
||||
|
||||
|
@ -1,11 +1,10 @@
|
||||
all: build-all
|
||||
include config.mak
|
||||
VPATH=$(SRC_DIR)
|
||||
all: vof.bin
|
||||
|
||||
build-all: vof.bin
|
||||
|
||||
CROSS ?=
|
||||
CC = $(CROSS)gcc
|
||||
LD = $(CROSS)ld
|
||||
OBJCOPY = $(CROSS)objcopy
|
||||
CC ?= $(CROSS)gcc
|
||||
LD ?= $(CROSS)ld
|
||||
OBJCOPY ?= $(CROSS)objcopy
|
||||
|
||||
%.o: %.S
|
||||
$(CC) -m32 -mbig-endian -mcpu=power4 -c -o $@ $<
|
||||
@ -14,10 +13,12 @@ OBJCOPY = $(CROSS)objcopy
|
||||
$(CC) -m32 -mbig-endian -mcpu=power4 -c -fno-stack-protector -o $@ $<
|
||||
|
||||
vof.elf: entry.o main.o ci.o bootmem.o libc.o
|
||||
$(LD) -nostdlib -e_start -Tvof.lds -EB -o $@ $^
|
||||
$(LD) -nostdlib -e_start -T$(SRC_DIR)/vof.lds -EB -o $@ $^
|
||||
|
||||
%.bin: %.elf
|
||||
$(OBJCOPY) -O binary -j .text -j .data -j .toc -j .got2 $^ $@
|
||||
|
||||
clean:
|
||||
rm -f *.o vof.bin vof.elf *~
|
||||
|
||||
.PHONY: all clean
|
||||
|
@ -81,12 +81,12 @@ def emit_prolog(suites, prefix):
|
||||
|
||||
def emit_suite_deps(name, suite, prefix):
|
||||
deps = ' '.join(suite.deps)
|
||||
targets = f'{prefix}-{name} {prefix}-report-{name}.junit.xml {prefix} {prefix}-report.junit.xml'
|
||||
targets = [f'{prefix}-{name}', f'{prefix}-report-{name}.junit.xml', f'{prefix}', f'{prefix}-report.junit.xml',
|
||||
f'{prefix}-build']
|
||||
print()
|
||||
print(f'.{prefix}-{name}.deps = {deps}')
|
||||
print(f'ifneq ($(filter {prefix}-build {targets}, $(MAKECMDGOALS)),)')
|
||||
print(f'.{prefix}.build-suites += {name}')
|
||||
print(f'endif')
|
||||
for t in targets:
|
||||
print(f'.ninja-goals.{t} += $(.{prefix}-{name}.deps)')
|
||||
|
||||
def emit_suite(name, suite, prefix):
|
||||
emit_suite_deps(name, suite, prefix)
|
||||
|
@ -37,7 +37,6 @@ export SRC_PATH
|
||||
SPEED = quick
|
||||
|
||||
-include tests/tcg/Makefile.prereqs
|
||||
config-host.mak: $(SRC_PATH)/tests/tcg/configure.sh
|
||||
tests/tcg/Makefile.prereqs: config-host.mak
|
||||
|
||||
# Per guest TCG tests
|
||||
@ -57,7 +56,7 @@ $(TCG_TESTS_TARGETS:%=build-tcg-tests-%): build-tcg-tests-%: $(BUILD_DIR)/tests/
|
||||
"BUILD","$* guest-tests")
|
||||
|
||||
.PHONY: $(TCG_TESTS_TARGETS:%=run-tcg-tests-%)
|
||||
$(TCG_TESTS_TARGETS:%=run-tcg-tests-%): run-tcg-tests-%: build-tcg-tests-% $(if $(CONFIG_PLUGIN),test-plugins)
|
||||
$(TCG_TESTS_TARGETS:%=run-tcg-tests-%): run-tcg-tests-%: build-tcg-tests-%
|
||||
$(call quiet-command, \
|
||||
$(MAKE) -C tests/tcg/$* -f ../Makefile.target $(SUBDIR_MAKEFLAGS) \
|
||||
TARGET="$*" SRC_PATH="$(SRC_PATH)" SPEED=$(SPEED) run, \
|
||||
@ -74,6 +73,7 @@ $(TCG_TESTS_TARGETS:%=clean-tcg-tests-%): clean-tcg-tests-%:
|
||||
build-tcg: $(BUILD_TCG_TARGET_RULES)
|
||||
|
||||
.PHONY: check-tcg
|
||||
.ninja-goals.check-tcg = all $(if $(CONFIG_PLUGIN),test-plugins)
|
||||
check-tcg: $(RUN_TCG_TARGET_RULES)
|
||||
|
||||
.PHONY: clean-tcg
|
||||
|
@ -89,15 +89,10 @@ DOCKER_PARTIAL_IMAGES += fedora
|
||||
endif
|
||||
|
||||
docker-image-debian-alpha-cross: docker-image-debian10
|
||||
docker-image-debian-armel-cross: docker-image-debian10
|
||||
docker-image-debian-armhf-cross: docker-image-debian10
|
||||
docker-image-debian-hppa-cross: docker-image-debian10
|
||||
docker-image-debian-m68k-cross: docker-image-debian10
|
||||
docker-image-debian-mips-cross: docker-image-debian10
|
||||
docker-image-debian-mips64-cross: docker-image-debian10
|
||||
docker-image-debian-mips64el-cross: docker-image-debian10
|
||||
docker-image-debian-mipsel-cross: docker-image-debian10
|
||||
docker-image-debian-ppc64el-cross: docker-image-debian10
|
||||
docker-image-debian-sh4-cross: docker-image-debian10
|
||||
docker-image-debian-sparc64-cross: docker-image-debian10
|
||||
|
||||
|
@ -1,59 +1,153 @@
|
||||
# THIS FILE WAS AUTO-GENERATED
|
||||
#
|
||||
# Docker x86_64 target
|
||||
# $ lcitool dockerfile --layers all debian-11 qemu
|
||||
#
|
||||
# This docker target builds on the Debian Buster base image. Further
|
||||
# libraries which are not widely available are installed by hand.
|
||||
#
|
||||
FROM qemu/debian10
|
||||
MAINTAINER Philippe Mathieu-Daudé <f4bug@amsat.org>
|
||||
# https://gitlab.com/libvirt/libvirt-ci
|
||||
|
||||
RUN apt update && \
|
||||
DEBIAN_FRONTEND=noninteractive eatmydata \
|
||||
apt build-dep -yy qemu
|
||||
FROM docker.io/library/debian:11-slim
|
||||
|
||||
RUN apt update && \
|
||||
DEBIAN_FRONTEND=noninteractive eatmydata \
|
||||
apt install -y --no-install-recommends \
|
||||
cscope \
|
||||
genisoimage \
|
||||
exuberant-ctags \
|
||||
global \
|
||||
libbz2-dev \
|
||||
liblzo2-dev \
|
||||
libgcrypt20-dev \
|
||||
libfdt-dev \
|
||||
librdmacm-dev \
|
||||
libsasl2-dev \
|
||||
libsnappy-dev \
|
||||
libvte-dev \
|
||||
netcat-openbsd \
|
||||
openssh-client \
|
||||
python3-numpy \
|
||||
python3-opencv \
|
||||
python3-venv
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
apt-get update && \
|
||||
apt-get install -y eatmydata && \
|
||||
eatmydata apt-get dist-upgrade -y && \
|
||||
eatmydata apt-get install --no-install-recommends -y \
|
||||
bash \
|
||||
bc \
|
||||
bsdextrautils \
|
||||
bzip2 \
|
||||
ca-certificates \
|
||||
ccache \
|
||||
clang \
|
||||
dbus \
|
||||
debianutils \
|
||||
diffutils \
|
||||
exuberant-ctags \
|
||||
findutils \
|
||||
g++ \
|
||||
gcc \
|
||||
gcovr \
|
||||
genisoimage \
|
||||
gettext \
|
||||
git \
|
||||
hostname \
|
||||
libaio-dev \
|
||||
libasan5 \
|
||||
libasound2-dev \
|
||||
libattr1-dev \
|
||||
libbpf-dev \
|
||||
libbrlapi-dev \
|
||||
libbz2-dev \
|
||||
libc6-dev \
|
||||
libcacard-dev \
|
||||
libcap-ng-dev \
|
||||
libcapstone-dev \
|
||||
libcurl4-gnutls-dev \
|
||||
libdaxctl-dev \
|
||||
libdrm-dev \
|
||||
libepoxy-dev \
|
||||
libfdt-dev \
|
||||
libffi-dev \
|
||||
libfuse3-dev \
|
||||
libgbm-dev \
|
||||
libgcrypt20-dev \
|
||||
libglib2.0-dev \
|
||||
libglusterfs-dev \
|
||||
libgnutls28-dev \
|
||||
libgtk-3-dev \
|
||||
libibumad-dev \
|
||||
libibverbs-dev \
|
||||
libiscsi-dev \
|
||||
libjemalloc-dev \
|
||||
libjpeg62-turbo-dev \
|
||||
liblttng-ust-dev \
|
||||
liblzo2-dev \
|
||||
libncursesw5-dev \
|
||||
libnfs-dev \
|
||||
libnuma-dev \
|
||||
libpam0g-dev \
|
||||
libpcre2-dev \
|
||||
libpixman-1-dev \
|
||||
libpmem-dev \
|
||||
libpng-dev \
|
||||
libpulse-dev \
|
||||
librbd-dev \
|
||||
librdmacm-dev \
|
||||
libsasl2-dev \
|
||||
libsdl2-dev \
|
||||
libsdl2-image-dev \
|
||||
libseccomp-dev \
|
||||
libselinux1-dev \
|
||||
libslirp-dev \
|
||||
libsnappy-dev \
|
||||
libspice-protocol-dev \
|
||||
libspice-server-dev \
|
||||
libssh-gcrypt-dev \
|
||||
libsystemd-dev \
|
||||
libtasn1-6-dev \
|
||||
libubsan1 \
|
||||
libudev-dev \
|
||||
liburing-dev \
|
||||
libusb-1.0-0-dev \
|
||||
libusbredirhost-dev \
|
||||
libvdeplug-dev \
|
||||
libvirglrenderer-dev \
|
||||
libvte-2.91-dev \
|
||||
libxen-dev \
|
||||
libzstd-dev \
|
||||
llvm \
|
||||
locales \
|
||||
make \
|
||||
meson \
|
||||
multipath-tools \
|
||||
ncat \
|
||||
nettle-dev \
|
||||
ninja-build \
|
||||
openssh-client \
|
||||
perl-base \
|
||||
pkgconf \
|
||||
python3 \
|
||||
python3-numpy \
|
||||
python3-opencv \
|
||||
python3-pillow \
|
||||
python3-pip \
|
||||
python3-sphinx \
|
||||
python3-sphinx-rtd-theme \
|
||||
python3-venv \
|
||||
python3-yaml \
|
||||
rpm2cpio \
|
||||
sed \
|
||||
sparse \
|
||||
systemtap-sdt-dev \
|
||||
tar \
|
||||
tesseract-ocr \
|
||||
tesseract-ocr-eng \
|
||||
texinfo \
|
||||
xfslibs-dev \
|
||||
zlib1g-dev && \
|
||||
eatmydata apt-get autoremove -y && \
|
||||
eatmydata apt-get autoclean -y && \
|
||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
||||
dpkg-reconfigure locales && \
|
||||
dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \
|
||||
mkdir -p /usr/libexec/ccache-wrappers && \
|
||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/c++ && \
|
||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \
|
||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/clang && \
|
||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/g++ && \
|
||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc
|
||||
|
||||
# virgl
|
||||
RUN apt update && \
|
||||
DEBIAN_FRONTEND=noninteractive eatmydata \
|
||||
apt install -y --no-install-recommends \
|
||||
libegl1-mesa-dev \
|
||||
libepoxy-dev \
|
||||
libgbm-dev
|
||||
RUN git clone https://gitlab.freedesktop.org/virgl/virglrenderer.git /usr/src/virglrenderer && \
|
||||
cd /usr/src/virglrenderer && git checkout virglrenderer-0.8.0
|
||||
RUN cd /usr/src/virglrenderer && ./autogen.sh && ./configure --disable-tests && make install
|
||||
|
||||
# netmap
|
||||
RUN apt update && \
|
||||
DEBIAN_FRONTEND=noninteractive eatmydata \
|
||||
apt install -y --no-install-recommends \
|
||||
linux-headers-amd64
|
||||
ENV LANG "en_US.UTF-8"
|
||||
ENV MAKE "/usr/bin/make"
|
||||
ENV NINJA "/usr/bin/ninja"
|
||||
ENV PYTHON "/usr/bin/python3"
|
||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
||||
# netmap/cscope/global
|
||||
RUN DEBIAN_FRONTEND=noninteractive eatmydata \
|
||||
apt install -y --no-install-recommends \
|
||||
cscope\
|
||||
global\
|
||||
linux-headers-amd64
|
||||
RUN git clone https://github.com/luigirizzo/netmap.git /usr/src/netmap
|
||||
RUN cd /usr/src/netmap && git checkout v11.3
|
||||
RUN cd /usr/src/netmap/LINUX && ./configure --no-drivers --no-apps --kernel-dir=$(ls -d /usr/src/linux-headers-*-amd64) && make install
|
||||
ENV QEMU_CONFIGURE_OPTS --enable-netmap
|
||||
|
||||
RUN ldconfig
|
||||
|
||||
# gcrypt
|
||||
ENV QEMU_CONFIGURE_OPTS $QEMU_CONFIGURE_OPTS --enable-gcrypt
|
||||
|
@ -1,26 +1,164 @@
|
||||
# THIS FILE WAS AUTO-GENERATED
|
||||
#
|
||||
# Docker armel cross-compiler target
|
||||
# $ lcitool dockerfile --layers all --cross armv6l debian-11 qemu
|
||||
#
|
||||
# This docker target builds on the debian Stretch base image.
|
||||
#
|
||||
FROM qemu/debian10
|
||||
MAINTAINER Philippe Mathieu-Daudé <f4bug@amsat.org>
|
||||
# https://gitlab.com/libvirt/libvirt-ci
|
||||
|
||||
# Add the foreign architecture we want and install dependencies
|
||||
RUN dpkg --add-architecture armel && \
|
||||
apt update && \
|
||||
apt install -yy crossbuild-essential-armel && \
|
||||
DEBIAN_FRONTEND=noninteractive eatmydata \
|
||||
apt build-dep -yy -a armel --arch-only qemu
|
||||
FROM docker.io/library/debian:11-slim
|
||||
|
||||
# Specify the cross prefix for this image (see tests/docker/common.rc)
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
apt-get update && \
|
||||
apt-get install -y eatmydata && \
|
||||
eatmydata apt-get dist-upgrade -y && \
|
||||
eatmydata apt-get install --no-install-recommends -y \
|
||||
bash \
|
||||
bc \
|
||||
bsdextrautils \
|
||||
bzip2 \
|
||||
ca-certificates \
|
||||
ccache \
|
||||
dbus \
|
||||
debianutils \
|
||||
diffutils \
|
||||
exuberant-ctags \
|
||||
findutils \
|
||||
gcovr \
|
||||
genisoimage \
|
||||
gettext \
|
||||
git \
|
||||
hostname \
|
||||
libpcre2-dev \
|
||||
libspice-protocol-dev \
|
||||
llvm \
|
||||
locales \
|
||||
make \
|
||||
meson \
|
||||
ncat \
|
||||
ninja-build \
|
||||
openssh-client \
|
||||
perl-base \
|
||||
pkgconf \
|
||||
python3 \
|
||||
python3-numpy \
|
||||
python3-opencv \
|
||||
python3-pillow \
|
||||
python3-pip \
|
||||
python3-sphinx \
|
||||
python3-sphinx-rtd-theme \
|
||||
python3-venv \
|
||||
python3-yaml \
|
||||
rpm2cpio \
|
||||
sed \
|
||||
sparse \
|
||||
tar \
|
||||
tesseract-ocr \
|
||||
tesseract-ocr-eng \
|
||||
texinfo && \
|
||||
eatmydata apt-get autoremove -y && \
|
||||
eatmydata apt-get autoclean -y && \
|
||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
||||
dpkg-reconfigure locales
|
||||
|
||||
ENV LANG "en_US.UTF-8"
|
||||
ENV MAKE "/usr/bin/make"
|
||||
ENV NINJA "/usr/bin/ninja"
|
||||
ENV PYTHON "/usr/bin/python3"
|
||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
||||
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
dpkg --add-architecture armel && \
|
||||
eatmydata apt-get update && \
|
||||
eatmydata apt-get dist-upgrade -y && \
|
||||
eatmydata apt-get install --no-install-recommends -y dpkg-dev && \
|
||||
eatmydata apt-get install --no-install-recommends -y \
|
||||
g++-arm-linux-gnueabi \
|
||||
gcc-arm-linux-gnueabi \
|
||||
libaio-dev:armel \
|
||||
libasan5:armel \
|
||||
libasound2-dev:armel \
|
||||
libattr1-dev:armel \
|
||||
libbpf-dev:armel \
|
||||
libbrlapi-dev:armel \
|
||||
libbz2-dev:armel \
|
||||
libc6-dev:armel \
|
||||
libcacard-dev:armel \
|
||||
libcap-ng-dev:armel \
|
||||
libcapstone-dev:armel \
|
||||
libcurl4-gnutls-dev:armel \
|
||||
libdaxctl-dev:armel \
|
||||
libdrm-dev:armel \
|
||||
libepoxy-dev:armel \
|
||||
libfdt-dev:armel \
|
||||
libffi-dev:armel \
|
||||
libfuse3-dev:armel \
|
||||
libgbm-dev:armel \
|
||||
libgcrypt20-dev:armel \
|
||||
libglib2.0-dev:armel \
|
||||
libglusterfs-dev:armel \
|
||||
libgnutls28-dev:armel \
|
||||
libgtk-3-dev:armel \
|
||||
libibumad-dev:armel \
|
||||
libibverbs-dev:armel \
|
||||
libiscsi-dev:armel \
|
||||
libjemalloc-dev:armel \
|
||||
libjpeg62-turbo-dev:armel \
|
||||
liblttng-ust-dev:armel \
|
||||
liblzo2-dev:armel \
|
||||
libncursesw5-dev:armel \
|
||||
libnfs-dev:armel \
|
||||
libnuma-dev:armel \
|
||||
libpam0g-dev:armel \
|
||||
libpixman-1-dev:armel \
|
||||
libpng-dev:armel \
|
||||
libpulse-dev:armel \
|
||||
librbd-dev:armel \
|
||||
librdmacm-dev:armel \
|
||||
libsasl2-dev:armel \
|
||||
libsdl2-dev:armel \
|
||||
libsdl2-image-dev:armel \
|
||||
libseccomp-dev:armel \
|
||||
libselinux1-dev:armel \
|
||||
libslirp-dev:armel \
|
||||
libsnappy-dev:armel \
|
||||
libspice-server-dev:armel \
|
||||
libssh-gcrypt-dev:armel \
|
||||
libsystemd-dev:armel \
|
||||
libtasn1-6-dev:armel \
|
||||
libubsan1:armel \
|
||||
libudev-dev:armel \
|
||||
liburing-dev:armel \
|
||||
libusb-1.0-0-dev:armel \
|
||||
libusbredirhost-dev:armel \
|
||||
libvdeplug-dev:armel \
|
||||
libvirglrenderer-dev:armel \
|
||||
libvte-2.91-dev:armel \
|
||||
libzstd-dev:armel \
|
||||
nettle-dev:armel \
|
||||
systemtap-sdt-dev:armel \
|
||||
xfslibs-dev:armel \
|
||||
zlib1g-dev:armel && \
|
||||
eatmydata apt-get autoremove -y && \
|
||||
eatmydata apt-get autoclean -y && \
|
||||
mkdir -p /usr/local/share/meson/cross && \
|
||||
echo "[binaries]\n\
|
||||
c = '/usr/bin/arm-linux-gnueabi-gcc'\n\
|
||||
ar = '/usr/bin/arm-linux-gnueabi-gcc-ar'\n\
|
||||
strip = '/usr/bin/arm-linux-gnueabi-strip'\n\
|
||||
pkgconfig = '/usr/bin/arm-linux-gnueabi-pkg-config'\n\
|
||||
\n\
|
||||
[host_machine]\n\
|
||||
system = 'linux'\n\
|
||||
cpu_family = 'arm'\n\
|
||||
cpu = 'arm'\n\
|
||||
endian = 'little'" > /usr/local/share/meson/cross/arm-linux-gnueabi && \
|
||||
dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \
|
||||
mkdir -p /usr/libexec/ccache-wrappers && \
|
||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/arm-linux-gnueabi-c++ && \
|
||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/arm-linux-gnueabi-cc && \
|
||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/arm-linux-gnueabi-g++ && \
|
||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/arm-linux-gnueabi-gcc
|
||||
|
||||
ENV ABI "arm-linux-gnueabi"
|
||||
ENV MESON_OPTS "--cross-file=arm-linux-gnueabi"
|
||||
ENV QEMU_CONFIGURE_OPTS --cross-prefix=arm-linux-gnueabi-
|
||||
ENV DEF_TARGET_LIST arm-softmmu,arm-linux-user,armeb-linux-user
|
||||
|
||||
RUN apt update && \
|
||||
DEBIAN_FRONTEND=noninteractive eatmydata \
|
||||
apt install -y --no-install-recommends \
|
||||
libbz2-dev:armel \
|
||||
liblzo2-dev:armel \
|
||||
librdmacm-dev:armel \
|
||||
libsnappy-dev:armel
|
||||
|
@ -1,29 +1,165 @@
|
||||
# THIS FILE WAS AUTO-GENERATED
|
||||
#
|
||||
# Docker armhf cross-compiler target
|
||||
# $ lcitool dockerfile --layers all --cross armv7l debian-11 qemu
|
||||
#
|
||||
# This docker target builds on the debian Stretch base image.
|
||||
#
|
||||
FROM qemu/debian10
|
||||
# https://gitlab.com/libvirt/libvirt-ci
|
||||
|
||||
# Add the foreign architecture we want and install dependencies
|
||||
RUN dpkg --add-architecture armhf
|
||||
RUN apt update && \
|
||||
DEBIAN_FRONTEND=noninteractive eatmydata \
|
||||
apt install -y --no-install-recommends \
|
||||
crossbuild-essential-armhf
|
||||
RUN apt update && \
|
||||
DEBIAN_FRONTEND=noninteractive eatmydata \
|
||||
apt build-dep -yy -a armhf --arch-only qemu
|
||||
FROM docker.io/library/debian:11-slim
|
||||
|
||||
# Specify the cross prefix for this image (see tests/docker/common.rc)
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
apt-get update && \
|
||||
apt-get install -y eatmydata && \
|
||||
eatmydata apt-get dist-upgrade -y && \
|
||||
eatmydata apt-get install --no-install-recommends -y \
|
||||
bash \
|
||||
bc \
|
||||
bsdextrautils \
|
||||
bzip2 \
|
||||
ca-certificates \
|
||||
ccache \
|
||||
dbus \
|
||||
debianutils \
|
||||
diffutils \
|
||||
exuberant-ctags \
|
||||
findutils \
|
||||
gcovr \
|
||||
genisoimage \
|
||||
gettext \
|
||||
git \
|
||||
hostname \
|
||||
libpcre2-dev \
|
||||
libspice-protocol-dev \
|
||||
llvm \
|
||||
locales \
|
||||
make \
|
||||
meson \
|
||||
ncat \
|
||||
ninja-build \
|
||||
openssh-client \
|
||||
perl-base \
|
||||
pkgconf \
|
||||
python3 \
|
||||
python3-numpy \
|
||||
python3-opencv \
|
||||
python3-pillow \
|
||||
python3-pip \
|
||||
python3-sphinx \
|
||||
python3-sphinx-rtd-theme \
|
||||
python3-venv \
|
||||
python3-yaml \
|
||||
rpm2cpio \
|
||||
sed \
|
||||
sparse \
|
||||
tar \
|
||||
tesseract-ocr \
|
||||
tesseract-ocr-eng \
|
||||
texinfo && \
|
||||
eatmydata apt-get autoremove -y && \
|
||||
eatmydata apt-get autoclean -y && \
|
||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
||||
dpkg-reconfigure locales
|
||||
|
||||
ENV LANG "en_US.UTF-8"
|
||||
ENV MAKE "/usr/bin/make"
|
||||
ENV NINJA "/usr/bin/ninja"
|
||||
ENV PYTHON "/usr/bin/python3"
|
||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
||||
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
dpkg --add-architecture armhf && \
|
||||
eatmydata apt-get update && \
|
||||
eatmydata apt-get dist-upgrade -y && \
|
||||
eatmydata apt-get install --no-install-recommends -y dpkg-dev && \
|
||||
eatmydata apt-get install --no-install-recommends -y \
|
||||
g++-arm-linux-gnueabihf \
|
||||
gcc-arm-linux-gnueabihf \
|
||||
libaio-dev:armhf \
|
||||
libasan5:armhf \
|
||||
libasound2-dev:armhf \
|
||||
libattr1-dev:armhf \
|
||||
libbpf-dev:armhf \
|
||||
libbrlapi-dev:armhf \
|
||||
libbz2-dev:armhf \
|
||||
libc6-dev:armhf \
|
||||
libcacard-dev:armhf \
|
||||
libcap-ng-dev:armhf \
|
||||
libcapstone-dev:armhf \
|
||||
libcurl4-gnutls-dev:armhf \
|
||||
libdaxctl-dev:armhf \
|
||||
libdrm-dev:armhf \
|
||||
libepoxy-dev:armhf \
|
||||
libfdt-dev:armhf \
|
||||
libffi-dev:armhf \
|
||||
libfuse3-dev:armhf \
|
||||
libgbm-dev:armhf \
|
||||
libgcrypt20-dev:armhf \
|
||||
libglib2.0-dev:armhf \
|
||||
libglusterfs-dev:armhf \
|
||||
libgnutls28-dev:armhf \
|
||||
libgtk-3-dev:armhf \
|
||||
libibumad-dev:armhf \
|
||||
libibverbs-dev:armhf \
|
||||
libiscsi-dev:armhf \
|
||||
libjemalloc-dev:armhf \
|
||||
libjpeg62-turbo-dev:armhf \
|
||||
liblttng-ust-dev:armhf \
|
||||
liblzo2-dev:armhf \
|
||||
libncursesw5-dev:armhf \
|
||||
libnfs-dev:armhf \
|
||||
libnuma-dev:armhf \
|
||||
libpam0g-dev:armhf \
|
||||
libpixman-1-dev:armhf \
|
||||
libpng-dev:armhf \
|
||||
libpulse-dev:armhf \
|
||||
librbd-dev:armhf \
|
||||
librdmacm-dev:armhf \
|
||||
libsasl2-dev:armhf \
|
||||
libsdl2-dev:armhf \
|
||||
libsdl2-image-dev:armhf \
|
||||
libseccomp-dev:armhf \
|
||||
libselinux1-dev:armhf \
|
||||
libslirp-dev:armhf \
|
||||
libsnappy-dev:armhf \
|
||||
libspice-server-dev:armhf \
|
||||
libssh-gcrypt-dev:armhf \
|
||||
libsystemd-dev:armhf \
|
||||
libtasn1-6-dev:armhf \
|
||||
libubsan1:armhf \
|
||||
libudev-dev:armhf \
|
||||
liburing-dev:armhf \
|
||||
libusb-1.0-0-dev:armhf \
|
||||
libusbredirhost-dev:armhf \
|
||||
libvdeplug-dev:armhf \
|
||||
libvirglrenderer-dev:armhf \
|
||||
libvte-2.91-dev:armhf \
|
||||
libxen-dev:armhf \
|
||||
libzstd-dev:armhf \
|
||||
nettle-dev:armhf \
|
||||
systemtap-sdt-dev:armhf \
|
||||
xfslibs-dev:armhf \
|
||||
zlib1g-dev:armhf && \
|
||||
eatmydata apt-get autoremove -y && \
|
||||
eatmydata apt-get autoclean -y && \
|
||||
mkdir -p /usr/local/share/meson/cross && \
|
||||
echo "[binaries]\n\
|
||||
c = '/usr/bin/arm-linux-gnueabihf-gcc'\n\
|
||||
ar = '/usr/bin/arm-linux-gnueabihf-gcc-ar'\n\
|
||||
strip = '/usr/bin/arm-linux-gnueabihf-strip'\n\
|
||||
pkgconfig = '/usr/bin/arm-linux-gnueabihf-pkg-config'\n\
|
||||
\n\
|
||||
[host_machine]\n\
|
||||
system = 'linux'\n\
|
||||
cpu_family = 'arm'\n\
|
||||
cpu = 'armhf'\n\
|
||||
endian = 'little'" > /usr/local/share/meson/cross/arm-linux-gnueabihf && \
|
||||
dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \
|
||||
mkdir -p /usr/libexec/ccache-wrappers && \
|
||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/arm-linux-gnueabihf-c++ && \
|
||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/arm-linux-gnueabihf-cc && \
|
||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/arm-linux-gnueabihf-g++ && \
|
||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/arm-linux-gnueabihf-gcc
|
||||
|
||||
ENV ABI "arm-linux-gnueabihf"
|
||||
ENV MESON_OPTS "--cross-file=arm-linux-gnueabihf"
|
||||
ENV QEMU_CONFIGURE_OPTS --cross-prefix=arm-linux-gnueabihf-
|
||||
ENV DEF_TARGET_LIST arm-softmmu,arm-linux-user,armeb-linux-user
|
||||
|
||||
RUN apt update && \
|
||||
DEBIAN_FRONTEND=noninteractive eatmydata \
|
||||
apt install -y --no-install-recommends \
|
||||
libbz2-dev:armhf \
|
||||
liblzo2-dev:armhf \
|
||||
librdmacm-dev:armhf \
|
||||
libsnappy-dev:armhf \
|
||||
libxen-dev:armhf
|
||||
ENV DEF_TARGET_LIST arm-softmmu,arm-linux-user
|
||||
|
@ -1,33 +1,162 @@
|
||||
# THIS FILE WAS AUTO-GENERATED
|
||||
#
|
||||
# Docker mips64el cross-compiler target
|
||||
#
|
||||
# This docker target builds on the debian Stretch base image.
|
||||
# $ lcitool dockerfile --layers all --cross mips64el debian-11 qemu
|
||||
#
|
||||
# https://gitlab.com/libvirt/libvirt-ci
|
||||
|
||||
FROM qemu/debian10
|
||||
FROM docker.io/library/debian:11-slim
|
||||
|
||||
MAINTAINER Philippe Mathieu-Daudé <f4bug@amsat.org>
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
apt-get update && \
|
||||
apt-get install -y eatmydata && \
|
||||
eatmydata apt-get dist-upgrade -y && \
|
||||
eatmydata apt-get install --no-install-recommends -y \
|
||||
bash \
|
||||
bc \
|
||||
bsdextrautils \
|
||||
bzip2 \
|
||||
ca-certificates \
|
||||
ccache \
|
||||
dbus \
|
||||
debianutils \
|
||||
diffutils \
|
||||
exuberant-ctags \
|
||||
findutils \
|
||||
gcovr \
|
||||
genisoimage \
|
||||
gettext \
|
||||
git \
|
||||
hostname \
|
||||
libpcre2-dev \
|
||||
libspice-protocol-dev \
|
||||
llvm \
|
||||
locales \
|
||||
make \
|
||||
meson \
|
||||
ncat \
|
||||
ninja-build \
|
||||
openssh-client \
|
||||
perl-base \
|
||||
pkgconf \
|
||||
python3 \
|
||||
python3-numpy \
|
||||
python3-opencv \
|
||||
python3-pillow \
|
||||
python3-pip \
|
||||
python3-sphinx \
|
||||
python3-sphinx-rtd-theme \
|
||||
python3-venv \
|
||||
python3-yaml \
|
||||
rpm2cpio \
|
||||
sed \
|
||||
sparse \
|
||||
tar \
|
||||
tesseract-ocr \
|
||||
tesseract-ocr-eng \
|
||||
texinfo && \
|
||||
eatmydata apt-get autoremove -y && \
|
||||
eatmydata apt-get autoclean -y && \
|
||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
||||
dpkg-reconfigure locales
|
||||
|
||||
# Add the foreign architecture we want and install dependencies
|
||||
RUN dpkg --add-architecture mips64el && \
|
||||
apt update && \
|
||||
DEBIAN_FRONTEND=noninteractive eatmydata \
|
||||
apt install -y --no-install-recommends \
|
||||
gcc-mips64el-linux-gnuabi64
|
||||
ENV LANG "en_US.UTF-8"
|
||||
ENV MAKE "/usr/bin/make"
|
||||
ENV NINJA "/usr/bin/ninja"
|
||||
ENV PYTHON "/usr/bin/python3"
|
||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
||||
|
||||
RUN apt update && \
|
||||
DEBIAN_FRONTEND=noninteractive eatmydata \
|
||||
apt build-dep -yy -a mips64el --arch-only qemu
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
dpkg --add-architecture mips64el && \
|
||||
eatmydata apt-get update && \
|
||||
eatmydata apt-get dist-upgrade -y && \
|
||||
eatmydata apt-get install --no-install-recommends -y dpkg-dev && \
|
||||
eatmydata apt-get install --no-install-recommends -y \
|
||||
g++-mips64el-linux-gnuabi64 \
|
||||
gcc-mips64el-linux-gnuabi64 \
|
||||
libaio-dev:mips64el \
|
||||
libasound2-dev:mips64el \
|
||||
libattr1-dev:mips64el \
|
||||
libbpf-dev:mips64el \
|
||||
libbrlapi-dev:mips64el \
|
||||
libbz2-dev:mips64el \
|
||||
libc6-dev:mips64el \
|
||||
libcacard-dev:mips64el \
|
||||
libcap-ng-dev:mips64el \
|
||||
libcapstone-dev:mips64el \
|
||||
libcurl4-gnutls-dev:mips64el \
|
||||
libdaxctl-dev:mips64el \
|
||||
libdrm-dev:mips64el \
|
||||
libepoxy-dev:mips64el \
|
||||
libfdt-dev:mips64el \
|
||||
libffi-dev:mips64el \
|
||||
libfuse3-dev:mips64el \
|
||||
libgbm-dev:mips64el \
|
||||
libgcrypt20-dev:mips64el \
|
||||
libglib2.0-dev:mips64el \
|
||||
libglusterfs-dev:mips64el \
|
||||
libgnutls28-dev:mips64el \
|
||||
libgtk-3-dev:mips64el \
|
||||
libibumad-dev:mips64el \
|
||||
libibverbs-dev:mips64el \
|
||||
libiscsi-dev:mips64el \
|
||||
libjemalloc-dev:mips64el \
|
||||
libjpeg62-turbo-dev:mips64el \
|
||||
liblttng-ust-dev:mips64el \
|
||||
liblzo2-dev:mips64el \
|
||||
libncursesw5-dev:mips64el \
|
||||
libnfs-dev:mips64el \
|
||||
libnuma-dev:mips64el \
|
||||
libpam0g-dev:mips64el \
|
||||
libpixman-1-dev:mips64el \
|
||||
libpng-dev:mips64el \
|
||||
libpulse-dev:mips64el \
|
||||
librbd-dev:mips64el \
|
||||
librdmacm-dev:mips64el \
|
||||
libsasl2-dev:mips64el \
|
||||
libsdl2-dev:mips64el \
|
||||
libsdl2-image-dev:mips64el \
|
||||
libseccomp-dev:mips64el \
|
||||
libselinux1-dev:mips64el \
|
||||
libslirp-dev:mips64el \
|
||||
libsnappy-dev:mips64el \
|
||||
libspice-server-dev:mips64el \
|
||||
libssh-gcrypt-dev:mips64el \
|
||||
libsystemd-dev:mips64el \
|
||||
libtasn1-6-dev:mips64el \
|
||||
libudev-dev:mips64el \
|
||||
liburing-dev:mips64el \
|
||||
libusb-1.0-0-dev:mips64el \
|
||||
libusbredirhost-dev:mips64el \
|
||||
libvdeplug-dev:mips64el \
|
||||
libvirglrenderer-dev:mips64el \
|
||||
libvte-2.91-dev:mips64el \
|
||||
libzstd-dev:mips64el \
|
||||
nettle-dev:mips64el \
|
||||
systemtap-sdt-dev:mips64el \
|
||||
xfslibs-dev:mips64el \
|
||||
zlib1g-dev:mips64el && \
|
||||
eatmydata apt-get autoremove -y && \
|
||||
eatmydata apt-get autoclean -y && \
|
||||
mkdir -p /usr/local/share/meson/cross && \
|
||||
echo "[binaries]\n\
|
||||
c = '/usr/bin/mips64el-linux-gnuabi64-gcc'\n\
|
||||
ar = '/usr/bin/mips64el-linux-gnuabi64-gcc-ar'\n\
|
||||
strip = '/usr/bin/mips64el-linux-gnuabi64-strip'\n\
|
||||
pkgconfig = '/usr/bin/mips64el-linux-gnuabi64-pkg-config'\n\
|
||||
\n\
|
||||
[host_machine]\n\
|
||||
system = 'linux'\n\
|
||||
cpu_family = 'mips64'\n\
|
||||
cpu = 'mips64el'\n\
|
||||
endian = 'little'" > /usr/local/share/meson/cross/mips64el-linux-gnuabi64 && \
|
||||
dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \
|
||||
mkdir -p /usr/libexec/ccache-wrappers && \
|
||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/mips64el-linux-gnuabi64-c++ && \
|
||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/mips64el-linux-gnuabi64-cc && \
|
||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/mips64el-linux-gnuabi64-g++ && \
|
||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/mips64el-linux-gnuabi64-gcc
|
||||
|
||||
# Specify the cross prefix for this image (see tests/docker/common.rc)
|
||||
ENV ABI "mips64el-linux-gnuabi64"
|
||||
ENV MESON_OPTS "--cross-file=mips64el-linux-gnuabi64"
|
||||
ENV QEMU_CONFIGURE_OPTS --cross-prefix=mips64el-linux-gnuabi64-
|
||||
ENV DEF_TARGET_LIST mips64el-softmmu,mips64el-linux-user
|
||||
|
||||
# Install extra libraries to increase code coverage
|
||||
RUN apt update && \
|
||||
DEBIAN_FRONTEND=noninteractive eatmydata \
|
||||
apt install -y --no-install-recommends \
|
||||
libbz2-dev:mips64el \
|
||||
liblzo2-dev:mips64el \
|
||||
librdmacm-dev:mips64el \
|
||||
libsnappy-dev:mips64el
|
||||
|
@ -1,31 +1,162 @@
|
||||
# THIS FILE WAS AUTO-GENERATED
|
||||
#
|
||||
# Docker mipsel cross-compiler target
|
||||
# $ lcitool dockerfile --layers all --cross mipsel debian-11 qemu
|
||||
#
|
||||
# This docker target builds on the debian Stretch base image.
|
||||
#
|
||||
FROM qemu/debian10
|
||||
# https://gitlab.com/libvirt/libvirt-ci
|
||||
|
||||
MAINTAINER Philippe Mathieu-Daudé <f4bug@amsat.org>
|
||||
FROM docker.io/library/debian:11-slim
|
||||
|
||||
# Add the foreign architecture we want and install dependencies
|
||||
RUN dpkg --add-architecture mipsel
|
||||
RUN apt update && \
|
||||
DEBIAN_FRONTEND=noninteractive eatmydata \
|
||||
apt install -y --no-install-recommends \
|
||||
gcc-mipsel-linux-gnu
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
apt-get update && \
|
||||
apt-get install -y eatmydata && \
|
||||
eatmydata apt-get dist-upgrade -y && \
|
||||
eatmydata apt-get install --no-install-recommends -y \
|
||||
bash \
|
||||
bc \
|
||||
bsdextrautils \
|
||||
bzip2 \
|
||||
ca-certificates \
|
||||
ccache \
|
||||
dbus \
|
||||
debianutils \
|
||||
diffutils \
|
||||
exuberant-ctags \
|
||||
findutils \
|
||||
gcovr \
|
||||
genisoimage \
|
||||
gettext \
|
||||
git \
|
||||
hostname \
|
||||
libpcre2-dev \
|
||||
libspice-protocol-dev \
|
||||
llvm \
|
||||
locales \
|
||||
make \
|
||||
meson \
|
||||
ncat \
|
||||
ninja-build \
|
||||
openssh-client \
|
||||
perl-base \
|
||||
pkgconf \
|
||||
python3 \
|
||||
python3-numpy \
|
||||
python3-opencv \
|
||||
python3-pillow \
|
||||
python3-pip \
|
||||
python3-sphinx \
|
||||
python3-sphinx-rtd-theme \
|
||||
python3-venv \
|
||||
python3-yaml \
|
||||
rpm2cpio \
|
||||
sed \
|
||||
sparse \
|
||||
tar \
|
||||
tesseract-ocr \
|
||||
tesseract-ocr-eng \
|
||||
texinfo && \
|
||||
eatmydata apt-get autoremove -y && \
|
||||
eatmydata apt-get autoclean -y && \
|
||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
||||
dpkg-reconfigure locales
|
||||
|
||||
RUN apt update && \
|
||||
DEBIAN_FRONTEND=noninteractive eatmydata \
|
||||
apt build-dep -yy -a mipsel --arch-only qemu
|
||||
ENV LANG "en_US.UTF-8"
|
||||
ENV MAKE "/usr/bin/make"
|
||||
ENV NINJA "/usr/bin/ninja"
|
||||
ENV PYTHON "/usr/bin/python3"
|
||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
||||
|
||||
# Specify the cross prefix for this image (see tests/docker/common.rc)
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
dpkg --add-architecture mipsel && \
|
||||
eatmydata apt-get update && \
|
||||
eatmydata apt-get dist-upgrade -y && \
|
||||
eatmydata apt-get install --no-install-recommends -y dpkg-dev && \
|
||||
eatmydata apt-get install --no-install-recommends -y \
|
||||
g++-mipsel-linux-gnu \
|
||||
gcc-mipsel-linux-gnu \
|
||||
libaio-dev:mipsel \
|
||||
libasound2-dev:mipsel \
|
||||
libattr1-dev:mipsel \
|
||||
libbpf-dev:mipsel \
|
||||
libbrlapi-dev:mipsel \
|
||||
libbz2-dev:mipsel \
|
||||
libc6-dev:mipsel \
|
||||
libcacard-dev:mipsel \
|
||||
libcap-ng-dev:mipsel \
|
||||
libcapstone-dev:mipsel \
|
||||
libcurl4-gnutls-dev:mipsel \
|
||||
libdaxctl-dev:mipsel \
|
||||
libdrm-dev:mipsel \
|
||||
libepoxy-dev:mipsel \
|
||||
libfdt-dev:mipsel \
|
||||
libffi-dev:mipsel \
|
||||
libfuse3-dev:mipsel \
|
||||
libgbm-dev:mipsel \
|
||||
libgcrypt20-dev:mipsel \
|
||||
libglib2.0-dev:mipsel \
|
||||
libglusterfs-dev:mipsel \
|
||||
libgnutls28-dev:mipsel \
|
||||
libgtk-3-dev:mipsel \
|
||||
libibumad-dev:mipsel \
|
||||
libibverbs-dev:mipsel \
|
||||
libiscsi-dev:mipsel \
|
||||
libjemalloc-dev:mipsel \
|
||||
libjpeg62-turbo-dev:mipsel \
|
||||
liblttng-ust-dev:mipsel \
|
||||
liblzo2-dev:mipsel \
|
||||
libncursesw5-dev:mipsel \
|
||||
libnfs-dev:mipsel \
|
||||
libnuma-dev:mipsel \
|
||||
libpam0g-dev:mipsel \
|
||||
libpixman-1-dev:mipsel \
|
||||
libpng-dev:mipsel \
|
||||
libpulse-dev:mipsel \
|
||||
librbd-dev:mipsel \
|
||||
librdmacm-dev:mipsel \
|
||||
libsasl2-dev:mipsel \
|
||||
libsdl2-dev:mipsel \
|
||||
libsdl2-image-dev:mipsel \
|
||||
libseccomp-dev:mipsel \
|
||||
libselinux1-dev:mipsel \
|
||||
libslirp-dev:mipsel \
|
||||
libsnappy-dev:mipsel \
|
||||
libspice-server-dev:mipsel \
|
||||
libssh-gcrypt-dev:mipsel \
|
||||
libsystemd-dev:mipsel \
|
||||
libtasn1-6-dev:mipsel \
|
||||
libudev-dev:mipsel \
|
||||
liburing-dev:mipsel \
|
||||
libusb-1.0-0-dev:mipsel \
|
||||
libusbredirhost-dev:mipsel \
|
||||
libvdeplug-dev:mipsel \
|
||||
libvirglrenderer-dev:mipsel \
|
||||
libvte-2.91-dev:mipsel \
|
||||
libzstd-dev:mipsel \
|
||||
nettle-dev:mipsel \
|
||||
systemtap-sdt-dev:mipsel \
|
||||
xfslibs-dev:mipsel \
|
||||
zlib1g-dev:mipsel && \
|
||||
eatmydata apt-get autoremove -y && \
|
||||
eatmydata apt-get autoclean -y && \
|
||||
mkdir -p /usr/local/share/meson/cross && \
|
||||
echo "[binaries]\n\
|
||||
c = '/usr/bin/mipsel-linux-gnu-gcc'\n\
|
||||
ar = '/usr/bin/mipsel-linux-gnu-gcc-ar'\n\
|
||||
strip = '/usr/bin/mipsel-linux-gnu-strip'\n\
|
||||
pkgconfig = '/usr/bin/mipsel-linux-gnu-pkg-config'\n\
|
||||
\n\
|
||||
[host_machine]\n\
|
||||
system = 'linux'\n\
|
||||
cpu_family = 'mips'\n\
|
||||
cpu = 'mipsel'\n\
|
||||
endian = 'little'" > /usr/local/share/meson/cross/mipsel-linux-gnu && \
|
||||
dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \
|
||||
mkdir -p /usr/libexec/ccache-wrappers && \
|
||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/mipsel-linux-gnu-c++ && \
|
||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/mipsel-linux-gnu-cc && \
|
||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/mipsel-linux-gnu-g++ && \
|
||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/mipsel-linux-gnu-gcc
|
||||
|
||||
ENV ABI "mipsel-linux-gnu"
|
||||
ENV MESON_OPTS "--cross-file=mipsel-linux-gnu"
|
||||
ENV QEMU_CONFIGURE_OPTS --cross-prefix=mipsel-linux-gnu-
|
||||
|
||||
# Install extra libraries to increase code coverage
|
||||
RUN apt update && \
|
||||
DEBIAN_FRONTEND=noninteractive eatmydata \
|
||||
apt install -y --no-install-recommends \
|
||||
libbz2-dev:mipsel \
|
||||
liblzo2-dev:mipsel \
|
||||
librdmacm-dev:mipsel \
|
||||
libsnappy-dev:mipsel
|
||||
ENV DEF_TARGET_LIST mipsel-softmmu,mipsel-linux-user
|
||||
|
@ -1,28 +1,164 @@
|
||||
# THIS FILE WAS AUTO-GENERATED
|
||||
#
|
||||
# Docker ppc64el cross-compiler target
|
||||
# $ lcitool dockerfile --layers all --cross ppc64le debian-11 qemu
|
||||
#
|
||||
# This docker target builds on the debian Stretch base image.
|
||||
#
|
||||
FROM qemu/debian10
|
||||
# https://gitlab.com/libvirt/libvirt-ci
|
||||
|
||||
# Add the foreign architecture we want and install dependencies
|
||||
RUN dpkg --add-architecture ppc64el && \
|
||||
apt update && \
|
||||
apt install -yy crossbuild-essential-ppc64el
|
||||
FROM docker.io/library/debian:11-slim
|
||||
|
||||
RUN apt update && \
|
||||
DEBIAN_FRONTEND=noninteractive eatmydata \
|
||||
apt build-dep -yy -a ppc64el --arch-only qemu
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
apt-get update && \
|
||||
apt-get install -y eatmydata && \
|
||||
eatmydata apt-get dist-upgrade -y && \
|
||||
eatmydata apt-get install --no-install-recommends -y \
|
||||
bash \
|
||||
bc \
|
||||
bsdextrautils \
|
||||
bzip2 \
|
||||
ca-certificates \
|
||||
ccache \
|
||||
dbus \
|
||||
debianutils \
|
||||
diffutils \
|
||||
exuberant-ctags \
|
||||
findutils \
|
||||
gcovr \
|
||||
genisoimage \
|
||||
gettext \
|
||||
git \
|
||||
hostname \
|
||||
libpcre2-dev \
|
||||
libspice-protocol-dev \
|
||||
llvm \
|
||||
locales \
|
||||
make \
|
||||
meson \
|
||||
ncat \
|
||||
ninja-build \
|
||||
openssh-client \
|
||||
perl-base \
|
||||
pkgconf \
|
||||
python3 \
|
||||
python3-numpy \
|
||||
python3-opencv \
|
||||
python3-pillow \
|
||||
python3-pip \
|
||||
python3-sphinx \
|
||||
python3-sphinx-rtd-theme \
|
||||
python3-venv \
|
||||
python3-yaml \
|
||||
rpm2cpio \
|
||||
sed \
|
||||
sparse \
|
||||
tar \
|
||||
tesseract-ocr \
|
||||
tesseract-ocr-eng \
|
||||
texinfo && \
|
||||
eatmydata apt-get autoremove -y && \
|
||||
eatmydata apt-get autoclean -y && \
|
||||
sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \
|
||||
dpkg-reconfigure locales
|
||||
|
||||
# Specify the cross prefix for this image (see tests/docker/common.rc)
|
||||
ENV LANG "en_US.UTF-8"
|
||||
ENV MAKE "/usr/bin/make"
|
||||
ENV NINJA "/usr/bin/ninja"
|
||||
ENV PYTHON "/usr/bin/python3"
|
||||
ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers"
|
||||
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
dpkg --add-architecture ppc64el && \
|
||||
eatmydata apt-get update && \
|
||||
eatmydata apt-get dist-upgrade -y && \
|
||||
eatmydata apt-get install --no-install-recommends -y dpkg-dev && \
|
||||
eatmydata apt-get install --no-install-recommends -y \
|
||||
g++-powerpc64le-linux-gnu \
|
||||
gcc-powerpc64le-linux-gnu \
|
||||
libaio-dev:ppc64el \
|
||||
libasan5:ppc64el \
|
||||
libasound2-dev:ppc64el \
|
||||
libattr1-dev:ppc64el \
|
||||
libbpf-dev:ppc64el \
|
||||
libbrlapi-dev:ppc64el \
|
||||
libbz2-dev:ppc64el \
|
||||
libc6-dev:ppc64el \
|
||||
libcacard-dev:ppc64el \
|
||||
libcap-ng-dev:ppc64el \
|
||||
libcapstone-dev:ppc64el \
|
||||
libcurl4-gnutls-dev:ppc64el \
|
||||
libdaxctl-dev:ppc64el \
|
||||
libdrm-dev:ppc64el \
|
||||
libepoxy-dev:ppc64el \
|
||||
libfdt-dev:ppc64el \
|
||||
libffi-dev:ppc64el \
|
||||
libfuse3-dev:ppc64el \
|
||||
libgbm-dev:ppc64el \
|
||||
libgcrypt20-dev:ppc64el \
|
||||
libglib2.0-dev:ppc64el \
|
||||
libglusterfs-dev:ppc64el \
|
||||
libgnutls28-dev:ppc64el \
|
||||
libgtk-3-dev:ppc64el \
|
||||
libibumad-dev:ppc64el \
|
||||
libibverbs-dev:ppc64el \
|
||||
libiscsi-dev:ppc64el \
|
||||
libjemalloc-dev:ppc64el \
|
||||
libjpeg62-turbo-dev:ppc64el \
|
||||
liblttng-ust-dev:ppc64el \
|
||||
liblzo2-dev:ppc64el \
|
||||
libncursesw5-dev:ppc64el \
|
||||
libnfs-dev:ppc64el \
|
||||
libnuma-dev:ppc64el \
|
||||
libpam0g-dev:ppc64el \
|
||||
libpixman-1-dev:ppc64el \
|
||||
libpng-dev:ppc64el \
|
||||
libpulse-dev:ppc64el \
|
||||
librbd-dev:ppc64el \
|
||||
librdmacm-dev:ppc64el \
|
||||
libsasl2-dev:ppc64el \
|
||||
libsdl2-dev:ppc64el \
|
||||
libsdl2-image-dev:ppc64el \
|
||||
libseccomp-dev:ppc64el \
|
||||
libselinux1-dev:ppc64el \
|
||||
libslirp-dev:ppc64el \
|
||||
libsnappy-dev:ppc64el \
|
||||
libspice-server-dev:ppc64el \
|
||||
libssh-gcrypt-dev:ppc64el \
|
||||
libsystemd-dev:ppc64el \
|
||||
libtasn1-6-dev:ppc64el \
|
||||
libubsan1:ppc64el \
|
||||
libudev-dev:ppc64el \
|
||||
liburing-dev:ppc64el \
|
||||
libusb-1.0-0-dev:ppc64el \
|
||||
libusbredirhost-dev:ppc64el \
|
||||
libvdeplug-dev:ppc64el \
|
||||
libvirglrenderer-dev:ppc64el \
|
||||
libvte-2.91-dev:ppc64el \
|
||||
libzstd-dev:ppc64el \
|
||||
nettle-dev:ppc64el \
|
||||
systemtap-sdt-dev:ppc64el \
|
||||
xfslibs-dev:ppc64el \
|
||||
zlib1g-dev:ppc64el && \
|
||||
eatmydata apt-get autoremove -y && \
|
||||
eatmydata apt-get autoclean -y && \
|
||||
mkdir -p /usr/local/share/meson/cross && \
|
||||
echo "[binaries]\n\
|
||||
c = '/usr/bin/powerpc64le-linux-gnu-gcc'\n\
|
||||
ar = '/usr/bin/powerpc64le-linux-gnu-gcc-ar'\n\
|
||||
strip = '/usr/bin/powerpc64le-linux-gnu-strip'\n\
|
||||
pkgconfig = '/usr/bin/powerpc64le-linux-gnu-pkg-config'\n\
|
||||
\n\
|
||||
[host_machine]\n\
|
||||
system = 'linux'\n\
|
||||
cpu_family = 'ppc64'\n\
|
||||
cpu = 'powerpc64le'\n\
|
||||
endian = 'little'" > /usr/local/share/meson/cross/powerpc64le-linux-gnu && \
|
||||
dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \
|
||||
mkdir -p /usr/libexec/ccache-wrappers && \
|
||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/powerpc64le-linux-gnu-c++ && \
|
||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/powerpc64le-linux-gnu-cc && \
|
||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/powerpc64le-linux-gnu-g++ && \
|
||||
ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/powerpc64le-linux-gnu-gcc
|
||||
|
||||
ENV ABI "powerpc64le-linux-gnu"
|
||||
ENV MESON_OPTS "--cross-file=powerpc64le-linux-gnu"
|
||||
ENV QEMU_CONFIGURE_OPTS --cross-prefix=powerpc64le-linux-gnu-
|
||||
ENV DEF_TARGET_LIST ppc64-softmmu,ppc64-linux-user
|
||||
|
||||
# Install extra libraries to increase code coverage
|
||||
RUN apt update && \
|
||||
DEBIAN_FRONTEND=noninteractive eatmydata \
|
||||
apt install -y --no-install-recommends \
|
||||
libbz2-dev:ppc64el \
|
||||
liblzo2-dev:ppc64el \
|
||||
librdmacm-dev:ppc64el \
|
||||
libsnappy-dev:ppc64el
|
||||
|
@ -13,14 +13,13 @@
|
||||
# the top-level directory.
|
||||
|
||||
import sys
|
||||
import os
|
||||
import subprocess
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
if len(sys.argv) != 1:
|
||||
print("syntax: %s" % sys.argv[0], file=sys.stderr)
|
||||
sys.exit(1)
|
||||
print("syntax: %s" % sys.argv[0], file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
self_dir = Path(__file__).parent
|
||||
src_dir = self_dir.parent.parent
|
||||
@ -30,76 +29,139 @@ lcitool_path = Path(self_dir, "libvirt-ci", "lcitool")
|
||||
|
||||
lcitool_cmd = [lcitool_path, "--data-dir", self_dir]
|
||||
|
||||
|
||||
def atomic_write(filename, content):
|
||||
tmp = filename.with_suffix(filename.suffix + ".tmp")
|
||||
try:
|
||||
with tmp.open("w") as fp:
|
||||
print(content, file=fp, end="")
|
||||
tmp.rename(filename)
|
||||
except Exception as ex:
|
||||
tmp.unlink()
|
||||
raise
|
||||
tmp = filename.with_suffix(filename.suffix + ".tmp")
|
||||
try:
|
||||
with tmp.open("w") as fp:
|
||||
print(content, file=fp, end="")
|
||||
tmp.rename(filename)
|
||||
except Exception as ex:
|
||||
tmp.unlink()
|
||||
raise
|
||||
|
||||
|
||||
def generate(filename, cmd, trailer):
|
||||
print("Generate %s" % filename)
|
||||
lcitool=subprocess.run(cmd, capture_output=True)
|
||||
print("Generate %s" % filename)
|
||||
lcitool = subprocess.run(cmd, capture_output=True)
|
||||
|
||||
if lcitool.returncode != 0:
|
||||
raise Exception("Failed to generate %s: %s" % (filename, lcitool.stderr))
|
||||
if lcitool.returncode != 0:
|
||||
raise Exception("Failed to generate %s: %s" % (filename, lcitool.stderr))
|
||||
|
||||
content = lcitool.stdout.decode("utf8")
|
||||
if trailer is not None:
|
||||
content += trailer
|
||||
atomic_write(filename, content)
|
||||
|
||||
content = lcitool.stdout.decode("utf8")
|
||||
if trailer is not None:
|
||||
content += trailer
|
||||
atomic_write(filename, content)
|
||||
|
||||
def generate_dockerfile(host, target, cross=None, trailer=None):
|
||||
filename = Path(src_dir, "tests", "docker", "dockerfiles", host + ".docker")
|
||||
cmd = lcitool_cmd + ["dockerfile"]
|
||||
if cross is not None:
|
||||
cmd.extend(["--cross", cross])
|
||||
cmd.extend([target, "qemu"])
|
||||
generate(filename, cmd, trailer)
|
||||
filename = Path(src_dir, "tests", "docker", "dockerfiles", host + ".docker")
|
||||
cmd = lcitool_cmd + ["dockerfile"]
|
||||
if cross is not None:
|
||||
cmd.extend(["--cross", cross])
|
||||
cmd.extend([target, "qemu"])
|
||||
generate(filename, cmd, trailer)
|
||||
|
||||
|
||||
def generate_cirrus(target, trailer=None):
|
||||
filename = Path(src_dir, ".gitlab-ci.d", "cirrus", target + ".vars")
|
||||
cmd = lcitool_cmd + ["variables", target, "qemu"]
|
||||
generate(filename, cmd, trailer)
|
||||
filename = Path(src_dir, ".gitlab-ci.d", "cirrus", target + ".vars")
|
||||
cmd = lcitool_cmd + ["variables", target, "qemu"]
|
||||
generate(filename, cmd, trailer)
|
||||
|
||||
|
||||
ubuntu2004_tsanhack = [
|
||||
"# Apply patch https://reviews.llvm.org/D75820\n",
|
||||
"# This is required for TSan in clang-10 to compile with QEMU.\n",
|
||||
"RUN sed -i 's/^const/static const/g' /usr/lib/llvm-10/lib/clang/10.0.0/include/sanitizer/tsan_interface.h\n"
|
||||
"# Apply patch https://reviews.llvm.org/D75820\n",
|
||||
"# This is required for TSan in clang-10 to compile with QEMU.\n",
|
||||
"RUN sed -i 's/^const/static const/g' /usr/lib/llvm-10/lib/clang/10.0.0/include/sanitizer/tsan_interface.h\n"
|
||||
]
|
||||
|
||||
def debian_cross_build(prefix, targets):
|
||||
conf = "ENV QEMU_CONFIGURE_OPTS --cross-prefix=%s\n" % (prefix)
|
||||
targets = "ENV DEF_TARGET_LIST %s\n" % (targets)
|
||||
return "".join([conf, targets])
|
||||
|
||||
# Netmap still needs to be manually built as it is yet to be packaged
|
||||
# into a distro. We also add cscope and gtags which are used in the CI
|
||||
# test
|
||||
debian11_extras = [
|
||||
"# netmap/cscope/global\n",
|
||||
"RUN DEBIAN_FRONTEND=noninteractive eatmydata \\\n",
|
||||
" apt install -y --no-install-recommends \\\n",
|
||||
" cscope\\\n",
|
||||
" global\\\n",
|
||||
" linux-headers-amd64\n",
|
||||
"RUN git clone https://github.com/luigirizzo/netmap.git /usr/src/netmap\n",
|
||||
"RUN cd /usr/src/netmap && git checkout v11.3\n",
|
||||
"RUN cd /usr/src/netmap/LINUX && ./configure --no-drivers --no-apps --kernel-dir=$(ls -d /usr/src/linux-headers-*-amd64) && make install\n",
|
||||
"ENV QEMU_CONFIGURE_OPTS --enable-netmap\n"
|
||||
]
|
||||
|
||||
|
||||
def debian_cross_build(prefix, targets):
|
||||
conf = "ENV QEMU_CONFIGURE_OPTS --cross-prefix=%s\n" % (prefix)
|
||||
targets = "ENV DEF_TARGET_LIST %s\n" % (targets)
|
||||
return "".join([conf, targets])
|
||||
|
||||
#
|
||||
# Update all the various build configurations.
|
||||
# Please keep each group sorted alphabetically for easy reading.
|
||||
#
|
||||
|
||||
try:
|
||||
generate_dockerfile("centos8", "centos-stream-8")
|
||||
generate_dockerfile("fedora", "fedora-35")
|
||||
generate_dockerfile("ubuntu2004", "ubuntu-2004",
|
||||
trailer="".join(ubuntu2004_tsanhack))
|
||||
generate_dockerfile("opensuse-leap", "opensuse-leap-152")
|
||||
generate_dockerfile("alpine", "alpine-edge")
|
||||
#
|
||||
# Standard native builds
|
||||
#
|
||||
generate_dockerfile("alpine", "alpine-edge")
|
||||
generate_dockerfile("centos8", "centos-stream-8")
|
||||
generate_dockerfile("debian-amd64", "debian-11",
|
||||
trailer="".join(debian11_extras))
|
||||
generate_dockerfile("fedora", "fedora-35")
|
||||
generate_dockerfile("opensuse-leap", "opensuse-leap-152")
|
||||
generate_dockerfile("ubuntu2004", "ubuntu-2004",
|
||||
trailer="".join(ubuntu2004_tsanhack))
|
||||
|
||||
generate_dockerfile("debian-arm64-cross", "debian-11",
|
||||
cross="aarch64",
|
||||
trailer=debian_cross_build("aarch64-linux-gnu-",
|
||||
"aarch64-softmmu,aarch64-linux-user"))
|
||||
#
|
||||
# Cross compiling builds
|
||||
#
|
||||
generate_dockerfile("debian-arm64-cross", "debian-11",
|
||||
cross="aarch64",
|
||||
trailer=debian_cross_build("aarch64-linux-gnu-",
|
||||
"aarch64-softmmu,aarch64-linux-user"))
|
||||
|
||||
generate_dockerfile("debian-s390x-cross", "debian-11",
|
||||
cross="s390x",
|
||||
trailer=debian_cross_build("s390x-linux-gnu-",
|
||||
"s390x-softmmu,s390x-linux-user"))
|
||||
generate_dockerfile("debian-armel-cross", "debian-11",
|
||||
cross="armv6l",
|
||||
trailer=debian_cross_build("arm-linux-gnueabi-",
|
||||
"arm-softmmu,arm-linux-user,armeb-linux-user"))
|
||||
|
||||
generate_cirrus("freebsd-12")
|
||||
generate_cirrus("freebsd-13")
|
||||
generate_cirrus("macos-11")
|
||||
generate_dockerfile("debian-armhf-cross", "debian-11",
|
||||
cross="armv7l",
|
||||
trailer=debian_cross_build("arm-linux-gnueabihf-",
|
||||
"arm-softmmu,arm-linux-user"))
|
||||
|
||||
sys.exit(0)
|
||||
generate_dockerfile("debian-mips64el-cross", "debian-11",
|
||||
cross="mips64el",
|
||||
trailer=debian_cross_build("mips64el-linux-gnuabi64-",
|
||||
"mips64el-softmmu,mips64el-linux-user"))
|
||||
|
||||
generate_dockerfile("debian-mipsel-cross", "debian-11",
|
||||
cross="mipsel",
|
||||
trailer=debian_cross_build("mipsel-linux-gnu-",
|
||||
"mipsel-softmmu,mipsel-linux-user"))
|
||||
|
||||
generate_dockerfile("debian-ppc64el-cross", "debian-11",
|
||||
cross="ppc64le",
|
||||
trailer=debian_cross_build("powerpc64le-linux-gnu-",
|
||||
"ppc64-softmmu,ppc64-linux-user"))
|
||||
|
||||
generate_dockerfile("debian-s390x-cross", "debian-11",
|
||||
cross="s390x",
|
||||
trailer=debian_cross_build("s390x-linux-gnu-",
|
||||
"s390x-softmmu,s390x-linux-user"))
|
||||
|
||||
#
|
||||
# Cirrus packages lists for GitLab
|
||||
#
|
||||
generate_cirrus("freebsd-12")
|
||||
generate_cirrus("freebsd-13")
|
||||
generate_cirrus("macos-11")
|
||||
|
||||
sys.exit(0)
|
||||
except Exception as ex:
|
||||
print(str(ex), file=sys.stderr)
|
||||
sys.exit(1)
|
||||
print(str(ex), file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
@ -1,376 +0,0 @@
|
||||
#! /bin/sh
|
||||
|
||||
if test -z "$source_path"; then
|
||||
echo Do not invoke this script directly. It is called
|
||||
echo automatically by configure.
|
||||
exit 1
|
||||
fi
|
||||
|
||||
write_c_skeleton() {
|
||||
cat > $TMPC <<EOF
|
||||
int main(void) { return 0; }
|
||||
EOF
|
||||
}
|
||||
|
||||
has() {
|
||||
command -v "$1" >/dev/null 2>&1
|
||||
}
|
||||
|
||||
do_compiler() {
|
||||
# Run the compiler, capturing its output to the log. First argument
|
||||
# is compiler binary to execute.
|
||||
local compiler="$1"
|
||||
shift
|
||||
if test -n "$BASH_VERSION"; then eval '
|
||||
echo >>config.log "
|
||||
funcs: ${FUNCNAME[*]}
|
||||
lines: ${BASH_LINENO[*]}"
|
||||
'; fi
|
||||
echo $compiler "$@" >> config.log
|
||||
$compiler "$@" >> config.log 2>&1 || return $?
|
||||
}
|
||||
|
||||
|
||||
TMPDIR1="config-temp"
|
||||
TMPC="${TMPDIR1}/qemu-conf.c"
|
||||
TMPE="${TMPDIR1}/qemu-conf.exe"
|
||||
|
||||
container="no"
|
||||
if test $use_containers = "yes"; then
|
||||
if has "docker" || has "podman"; then
|
||||
container=$($python $source_path/tests/docker/docker.py probe)
|
||||
fi
|
||||
fi
|
||||
|
||||
# cross compilers defaults, can be overridden with --cross-cc-ARCH
|
||||
: ${cross_cc_aarch64="aarch64-linux-gnu-gcc"}
|
||||
: ${cross_cc_aarch64_be="$cross_cc_aarch64"}
|
||||
: ${cross_cc_cflags_aarch64_be="-mbig-endian"}
|
||||
: ${cross_cc_alpha="alpha-linux-gnu-gcc"}
|
||||
: ${cross_cc_arm="arm-linux-gnueabihf-gcc"}
|
||||
: ${cross_cc_cflags_armeb="-mbig-endian"}
|
||||
: ${cross_cc_hexagon="hexagon-unknown-linux-musl-clang"}
|
||||
: ${cross_cc_cflags_hexagon="-mv67 -O2 -static"}
|
||||
: ${cross_cc_hppa="hppa-linux-gnu-gcc"}
|
||||
: ${cross_cc_i386="i686-linux-gnu-gcc"}
|
||||
: ${cross_cc_cflags_i386="-m32"}
|
||||
: ${cross_cc_m68k="m68k-linux-gnu-gcc"}
|
||||
: ${cross_cc_microblaze="microblaze-linux-musl-gcc"}
|
||||
: ${cross_cc_mips64el="mips64el-linux-gnuabi64-gcc"}
|
||||
: ${cross_cc_mips64="mips64-linux-gnuabi64-gcc"}
|
||||
: ${cross_cc_mipsel="mipsel-linux-gnu-gcc"}
|
||||
: ${cross_cc_mips="mips-linux-gnu-gcc"}
|
||||
: ${cross_cc_nios2="nios2-linux-gnu-gcc"}
|
||||
: ${cross_cc_ppc="powerpc-linux-gnu-gcc"}
|
||||
: ${cross_cc_cflags_ppc="-m32"}
|
||||
: ${cross_cc_ppc64="powerpc64-linux-gnu-gcc"}
|
||||
: ${cross_cc_cflags_ppc64="-m64 -mbig-endian"}
|
||||
: ${cross_cc_ppc64le="$cross_cc_ppc64"}
|
||||
: ${cross_cc_cflags_ppc64le="-m64 -mlittle-endian"}
|
||||
: ${cross_cc_riscv64="riscv64-linux-gnu-gcc"}
|
||||
: ${cross_cc_s390x="s390x-linux-gnu-gcc"}
|
||||
: ${cross_cc_sh4="sh4-linux-gnu-gcc"}
|
||||
: ${cross_cc_cflags_sparc="-m32 -mv8plus -mcpu=ultrasparc"}
|
||||
: ${cross_cc_sparc64="sparc64-linux-gnu-gcc"}
|
||||
: ${cross_cc_cflags_sparc64="-m64 -mcpu=ultrasparc"}
|
||||
: ${cross_cc_x86_64="x86_64-linux-gnu-gcc"}
|
||||
: ${cross_cc_cflags_x86_64="-m64"}
|
||||
|
||||
# tricore is special as it doesn't have a compiler
|
||||
: ${cross_as_tricore="tricore-as"}
|
||||
: ${cross_ld_tricore="tricore-ld"}
|
||||
|
||||
makefile=tests/tcg/Makefile.prereqs
|
||||
echo "# Automatically generated by configure - do not modify" > $makefile
|
||||
|
||||
config_host_mak=tests/tcg/config-host.mak
|
||||
echo "# Automatically generated by configure - do not modify" > $config_host_mak
|
||||
echo "SRC_PATH=$source_path" >> $config_host_mak
|
||||
echo "HOST_CC=$host_cc" >> $config_host_mak
|
||||
|
||||
tcg_tests_targets=
|
||||
for target in $target_list; do
|
||||
arch=${target%%-*}
|
||||
|
||||
# reset all container fields
|
||||
container_image=
|
||||
container_hosts=
|
||||
container_cross_cc=
|
||||
container_cross_as=
|
||||
container_cross_ld=
|
||||
|
||||
# suppress clang
|
||||
supress_clang=
|
||||
|
||||
case $target in
|
||||
aarch64-*)
|
||||
# We don't have any bigendian build tools so we only use this for AArch64
|
||||
container_hosts="x86_64 aarch64"
|
||||
container_image=debian-arm64-cross
|
||||
container_cross_cc=aarch64-linux-gnu-gcc-10
|
||||
;;
|
||||
alpha-*)
|
||||
container_hosts=x86_64
|
||||
container_image=debian-alpha-cross
|
||||
container_cross_cc=alpha-linux-gnu-gcc
|
||||
;;
|
||||
arm-*)
|
||||
# We don't have any bigendian build tools so we only use this for ARM
|
||||
container_hosts="x86_64 aarch64"
|
||||
container_image=debian-armhf-cross
|
||||
container_cross_cc=arm-linux-gnueabihf-gcc
|
||||
;;
|
||||
cris-*)
|
||||
container_hosts=x86_64
|
||||
container_image=fedora-cris-cross
|
||||
container_cross_cc=cris-linux-gnu-gcc
|
||||
;;
|
||||
hexagon-*)
|
||||
container_hosts=x86_64
|
||||
container_image=debian-hexagon-cross
|
||||
container_cross_cc=hexagon-unknown-linux-musl-clang
|
||||
;;
|
||||
hppa-*)
|
||||
container_hosts=x86_64
|
||||
container_image=debian-hppa-cross
|
||||
container_cross_cc=hppa-linux-gnu-gcc
|
||||
;;
|
||||
i386-*)
|
||||
container_hosts=x86_64
|
||||
container_image=fedora-i386-cross
|
||||
container_cross_cc=gcc
|
||||
supress_clang=yes
|
||||
;;
|
||||
m68k-*)
|
||||
container_hosts=x86_64
|
||||
container_image=debian-m68k-cross
|
||||
container_cross_cc=m68k-linux-gnu-gcc
|
||||
;;
|
||||
microblaze-*)
|
||||
container_hosts=x86_64
|
||||
container_image=debian-microblaze-cross
|
||||
container_cross_cc=microblaze-linux-musl-gcc
|
||||
;;
|
||||
mips64el-*)
|
||||
container_hosts=x86_64
|
||||
container_image=debian-mips64el-cross
|
||||
container_cross_cc=mips64el-linux-gnuabi64-gcc
|
||||
;;
|
||||
mips64-*)
|
||||
container_hosts=x86_64
|
||||
container_image=debian-mips64-cross
|
||||
container_cross_cc=mips64-linux-gnuabi64-gcc
|
||||
;;
|
||||
mipsel-*)
|
||||
container_hosts=x86_64
|
||||
container_image=debian-mipsel-cross
|
||||
container_cross_cc=mipsel-linux-gnu-gcc
|
||||
;;
|
||||
mips-*)
|
||||
container_hosts=x86_64
|
||||
container_image=debian-mips-cross
|
||||
container_cross_cc=mips-linux-gnu-gcc
|
||||
;;
|
||||
nios2-*)
|
||||
container_hosts=x86_64
|
||||
container_image=debian-nios2-cross
|
||||
container_cross_cc=nios2-linux-gnu-gcc
|
||||
;;
|
||||
ppc-*)
|
||||
container_hosts=x86_64
|
||||
container_image=debian-powerpc-test-cross
|
||||
container_cross_cc=powerpc-linux-gnu-gcc-10
|
||||
;;
|
||||
ppc64-*|ppc64le-*)
|
||||
container_hosts=x86_64
|
||||
container_image=debian-powerpc-test-cross
|
||||
container_cross_cc=${target%%-*}-linux-gnu-gcc-10
|
||||
container_cross_cc=powerpc${container_cross_cc#ppc}
|
||||
;;
|
||||
riscv64-*)
|
||||
container_hosts=x86_64
|
||||
container_image=debian-riscv64-test-cross
|
||||
container_cross_cc=riscv64-linux-gnu-gcc
|
||||
;;
|
||||
s390x-*)
|
||||
container_hosts=x86_64
|
||||
container_image=debian-s390x-cross
|
||||
container_cross_cc=s390x-linux-gnu-gcc
|
||||
;;
|
||||
sh4-*)
|
||||
container_hosts=x86_64
|
||||
container_image=debian-sh4-cross
|
||||
container_cross_cc=sh4-linux-gnu-gcc
|
||||
;;
|
||||
sparc64-*)
|
||||
container_hosts=x86_64
|
||||
container_image=debian-sparc64-cross
|
||||
container_cross_cc=sparc64-linux-gnu-gcc
|
||||
;;
|
||||
tricore-softmmu)
|
||||
container_hosts=x86_64
|
||||
container_image=debian-tricore-cross
|
||||
container_cross_as=tricore-as
|
||||
container_cross_ld=tricore-ld
|
||||
;;
|
||||
x86_64-*)
|
||||
container_hosts="aarch64 ppc64el x86_64"
|
||||
container_image=debian-amd64-cross
|
||||
container_cross_cc=x86_64-linux-gnu-gcc
|
||||
supress_clang=yes
|
||||
;;
|
||||
xtensa*-softmmu)
|
||||
container_hosts=x86_64
|
||||
container_image=debian-xtensa-cross
|
||||
|
||||
# default to the dc232b cpu
|
||||
container_cross_cc=/opt/2020.07/xtensa-dc232b-elf/bin/xtensa-dc232b-elf-gcc
|
||||
;;
|
||||
esac
|
||||
|
||||
config_target_mak=tests/tcg/config-$target.mak
|
||||
|
||||
echo "# Automatically generated by configure - do not modify" > $config_target_mak
|
||||
echo "TARGET_NAME=$arch" >> $config_target_mak
|
||||
case $target in
|
||||
*-softmmu)
|
||||
test -f $source_path/tests/tcg/$arch/Makefile.softmmu-target || continue
|
||||
qemu="qemu-system-$arch"
|
||||
;;
|
||||
*-linux-user|*-bsd-user)
|
||||
qemu="qemu-$arch"
|
||||
;;
|
||||
esac
|
||||
|
||||
eval "target_compiler_cflags=\${cross_cc_cflags_$arch}"
|
||||
|
||||
got_cross_cc=no
|
||||
|
||||
if eval test "x\"\${cross_cc_$arch}\"" != xyes; then
|
||||
eval "target_compiler=\"\${cross_cc_$arch}\""
|
||||
|
||||
if has $target_compiler; then
|
||||
if test "$supress_clang" = yes &&
|
||||
$target_compiler --version | grep -qi "clang"; then
|
||||
got_cross_cc=no
|
||||
else
|
||||
write_c_skeleton
|
||||
if ! do_compiler "$target_compiler" $target_compiler_cflags \
|
||||
-o $TMPE $TMPC -static ; then
|
||||
# For host systems we might get away with building without -static
|
||||
if do_compiler "$target_compiler" $target_compiler_cflags \
|
||||
-o $TMPE $TMPC ; then
|
||||
got_cross_cc=yes
|
||||
echo "CC=$target_compiler" >> $config_target_mak
|
||||
fi
|
||||
else
|
||||
got_cross_cc=yes
|
||||
echo "BUILD_STATIC=y" >> $config_target_mak
|
||||
echo "CC=$target_compiler" >> $config_target_mak
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# Special handling for assembler only tests
|
||||
eval "target_as=\"\${cross_as_$arch}\""
|
||||
eval "target_ld=\"\${cross_ld_$arch}\""
|
||||
if has $target_as && has $target_ld; then
|
||||
case $target in
|
||||
tricore-softmmu)
|
||||
echo "AS=$target_as" >> $config_target_mak
|
||||
echo "LD=$target_ld" >> $config_target_mak
|
||||
got_cross_cc=yes
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
fi
|
||||
|
||||
if test $got_cross_cc = yes; then
|
||||
# Test for compiler features for optional tests. We only do this
|
||||
# for cross compilers because ensuring the docker containers based
|
||||
# compilers is a requirememt for adding a new test that needs a
|
||||
# compiler feature.
|
||||
|
||||
case $target in
|
||||
aarch64-*)
|
||||
if do_compiler "$target_compiler" $target_compiler_cflags \
|
||||
-march=armv8.1-a+sve -o $TMPE $TMPC; then
|
||||
echo "CROSS_CC_HAS_SVE=y" >> $config_target_mak
|
||||
fi
|
||||
if do_compiler "$target_compiler" $target_compiler_cflags \
|
||||
-march=armv8.1-a+sve2 -o $TMPE $TMPC; then
|
||||
echo "CROSS_CC_HAS_SVE2=y" >> $config_target_mak
|
||||
fi
|
||||
if do_compiler "$target_compiler" $target_compiler_cflags \
|
||||
-march=armv8.3-a -o $TMPE $TMPC; then
|
||||
echo "CROSS_CC_HAS_ARMV8_3=y" >> $config_target_mak
|
||||
fi
|
||||
if do_compiler "$target_compiler" $target_compiler_cflags \
|
||||
-mbranch-protection=standard -o $TMPE $TMPC; then
|
||||
echo "CROSS_CC_HAS_ARMV8_BTI=y" >> $config_target_mak
|
||||
fi
|
||||
if do_compiler "$target_compiler" $target_compiler_cflags \
|
||||
-march=armv8.5-a+memtag -o $TMPE $TMPC; then
|
||||
echo "CROSS_CC_HAS_ARMV8_MTE=y" >> $config_target_mak
|
||||
fi
|
||||
;;
|
||||
ppc*)
|
||||
if do_compiler "$target_compiler" $target_compiler_cflags \
|
||||
-mpower8-vector -o $TMPE $TMPC; then
|
||||
echo "CROSS_CC_HAS_POWER8_VECTOR=y" >> $config_target_mak
|
||||
fi
|
||||
if do_compiler "$target_compiler" $target_compiler_cflags \
|
||||
-mpower10 -o $TMPE $TMPC; then
|
||||
echo "CROSS_CC_HAS_POWER10=y" >> $config_target_mak
|
||||
fi
|
||||
;;
|
||||
i386-linux-user)
|
||||
if do_compiler "$target_compiler" $target_compiler_cflags \
|
||||
-Werror -fno-pie -o $TMPE $TMPC; then
|
||||
echo "CROSS_CC_HAS_I386_NOPIE=y" >> $config_target_mak
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
elif test $got_cross_cc = no && test "$container" != no && \
|
||||
test -n "$container_image"; then
|
||||
for host in $container_hosts; do
|
||||
if test "$host" = "$cpu"; then
|
||||
echo "build-tcg-tests-$target: docker-image-$container_image" >> $makefile
|
||||
echo "BUILD_STATIC=y" >> $config_target_mak
|
||||
echo "CC=\$(DOCKER_SCRIPT) cc --cc $container_cross_cc -i qemu/$container_image -s $source_path --" >> $config_target_mak
|
||||
if test -n "$container_cross_as"; then
|
||||
echo "AS=\$(DOCKER_SCRIPT) cc --cc $container_cross_as -i qemu/$container_image -s $source_path --" >> $config_target_mak
|
||||
fi
|
||||
if test -n "$container_cross_ld"; then
|
||||
echo "LD=\$(DOCKER_SCRIPT) cc --cc $container_cross_ld -i qemu/$container_image -s $source_path --" >> $config_target_mak
|
||||
fi
|
||||
case $target in
|
||||
aarch64-*)
|
||||
echo "CROSS_CC_HAS_SVE=y" >> $config_target_mak
|
||||
echo "CROSS_CC_HAS_SVE2=y" >> $config_target_mak
|
||||
echo "CROSS_CC_HAS_ARMV8_3=y" >> $config_target_mak
|
||||
echo "CROSS_CC_HAS_ARMV8_BTI=y" >> $config_target_mak
|
||||
echo "CROSS_CC_HAS_ARMV8_MTE=y" >> $config_target_mak
|
||||
;;
|
||||
ppc*)
|
||||
echo "CROSS_CC_HAS_POWER8_VECTOR=y" >> $config_target_mak
|
||||
echo "CROSS_CC_HAS_POWER10=y" >> $config_target_mak
|
||||
;;
|
||||
i386-linux-user)
|
||||
echo "CROSS_CC_HAS_I386_NOPIE=y" >> $config_target_mak
|
||||
;;
|
||||
esac
|
||||
got_cross_cc=yes
|
||||
break
|
||||
fi
|
||||
done
|
||||
fi
|
||||
if test $got_cross_cc = yes; then
|
||||
mkdir -p tests/tcg/$target
|
||||
echo "QEMU=$PWD/$qemu" >> $config_target_mak
|
||||
echo "EXTRA_CFLAGS=$target_compiler_cflags" >> $config_target_mak
|
||||
echo "run-tcg-tests-$target: $qemu\$(EXESUF)" >> $makefile
|
||||
tcg_tests_targets="$tcg_tests_targets $target"
|
||||
fi
|
||||
done
|
||||
echo "TCG_TESTS_TARGETS=$tcg_tests_targets" >> $makefile
|
Loading…
x
Reference in New Issue
Block a user