build-user-hexagon CI job is not actually testing hexagon Description of problem: Look at the output from the `build-user-hexagon` CI job and see what compiler meson reports it is using: https://gitlab.com/qemu-project/qemu/-/jobs/4790457871 ``` Project name: qemu Project version: 8.0.91 C compiler for the host machine: cc -m64 -mcx16 (gcc 10.2.1 "cc (Debian 10.2.1-6) 10.2.1 20210110") C linker for the host machine: cc -m64 -mcx16 ld.bfd 2.35.2 Host machine cpu family: x86_64 Host machine cpu: x86_64 ``` What is 'cc' resolving to ? ``` $ podman run -it registry.gitlab.com/qemu-project/qemu/qemu/debian-hexagon-cross cc -v | grep Target Target: x86_64-linux-gnu ``` That is a x86_64 target native compiler, not a hexagon target cross compiler. The ``tests/docker/dockerfiles/debian-hexagon-cross.docker`` file installs the hexagon toolchain under ``/opt`` and adds the dir to ``$PATH`` with: ``` ENV PATH $PATH:${TOOLCHAIN_INSTALL}/${TOOLCHAIN_BASENAME}/x86_64-linux-gnu/bin ``` This toolchain just installs a `clang` binary, not ``cc`` So when ``configure`` runs it looks for ``cc`` first and finds the naitve x86_64 GCC install from the container, not the clang cross compiler It is also not possible to merely set ``CC=clang`` because meson will assume it is a native compiler and crash and burn when unable to run binaries ``` # CC=clang ./configure --target-list=x86_64-softmmu Using './build' as the directory for build output ...snip... Sphinx not found/usable, disabling docs. Disabling PIE due to missing toolchain support The Meson build system Version: 1.2.0 Source dir: /qemu Build dir: /qemu/build Build type: native build Project name: qemu Project version: 8.0.92 ../meson.build:1:0: ERROR: Executables created by c compiler clang -m64 -mcx16 are not runnable. ``` AFAICT, the root problem here is that the hexagon container is not setup in the same way as the other cross compiler containers. We need the toolchain binaries to be named after the target triplet - ie not ``clang`` but ``hexagon-unknown-linux-musl-clang`` This used to be done but was thrown away when switching to a pre-built toolchain in b9052d36342c947b36447558ed0a0dd3fb3fb8f4 Then the container also needs to set the configure args for the cross target ``` ENV QEMU_CONFIGURE_OPTS --cross-prefix=hexagon-unknown-linux-musl- ``` AFAICT, this was never done, so even before switching to the pre-built toolchain, I think the `build-user-hexagon` CI job was running a native built not hexagon build.