From nobody Tue Feb 10 18:56:49 2026 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652780766; cv=none; d=zohomail.com; s=zohoarc; b=cIVIg1BJkMyfWB+QENAoet+bwkbqXaoGvpcIzNLreroHg1kUGsS3lfjiFSjGjBKQ9egE9La2xdquZ1YLRglsl381HstiCwr1hLHlMRDQcvrglpL7NSijHXPEBt30a3Q4UmmAP76O1GcVB2/XD+WHFS1oPO5maE94IM71ep3fZ6M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652780766; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=VRIv/sD9m9Wh+4mN4HqaTQ3ASdMZGgWBoT8WPCbxu/o=; b=AmL369hqWaut5Kmnd7CYy9oP1YkNjsqR3z0WRkv+XaXqeUVfTeQC0ZQp3v8LGFPgXQ/BXTD10qZYOlE2gL5YlltKAGCcik4aCvw0CXctz7WuZZDGT5wNHfiG1bikWYSA3TuDSVn4Mh5FbjEtwtZacIfzNr9k9AipN4fArAKiDvU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1652780766417388.68596418854884; Tue, 17 May 2022 02:46:06 -0700 (PDT) Received: from localhost ([::1]:43620 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nqtmH-00070l-8W for importer2@patchew.org; Tue, 17 May 2022 05:46:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37448) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nqtTe-00005p-Vo for qemu-devel@nongnu.org; Tue, 17 May 2022 05:26:51 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]:21440) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nqtTc-0003dw-Tt for qemu-devel@nongnu.org; Tue, 17 May 2022 05:26:50 -0400 Received: from mail-ej1-f69.google.com (mail-ej1-f69.google.com [209.85.218.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-35-NE9_w6WtPza3qYseaeCDow-1; Tue, 17 May 2022 05:26:45 -0400 Received: by mail-ej1-f69.google.com with SMTP id oz9-20020a1709077d8900b006f3d9488090so7062282ejc.6 for ; Tue, 17 May 2022 02:26:45 -0700 (PDT) Received: from [192.168.10.118] ([2001:b07:6468:f312:c8dd:75d4:99ab:290a]) by smtp.gmail.com with ESMTPSA id y21-20020a056402171500b0042617ba639esm6530534edu.40.2022.05.17.02.26.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 May 2022 02:26:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652779608; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=VRIv/sD9m9Wh+4mN4HqaTQ3ASdMZGgWBoT8WPCbxu/o=; b=LSEUa5W3Y6JDBm0hzZzFNj9rpLIqEfQZK3SdPdUSIKZ8Zvoabdr2DlNCj0ZAYTlWfUQR71 hf+cv+eZnl2BnGkkBDNlcaEFDDO6bPYAKSpF6jHavmKpL9MvSXr7oor7oiorqy9fFENRdE RMTcyxAPNMC36waLNSPAycnCKb6qWas= X-MC-Unique: NE9_w6WtPza3qYseaeCDow-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=VRIv/sD9m9Wh+4mN4HqaTQ3ASdMZGgWBoT8WPCbxu/o=; b=VS/5tZPJRPvrIsGBCZt0fBPS9NHO9Y2ZA3y+MwsXMaFDTZ7Y7oMTdvSi+zikbtRVlN uYt+xtNEnAbcm5q67dso4AX7mysL7y+zqs931TWV4Gjhj+meUYkqd4xuRHYlFIaGRGPR xcNplZhtBECNP2vAE2is5I13VKPHEnSsZrJjwVE0J70awY6CkUSfXV8dwN1DnK+0Zifj aCQbq9n6iHHVNaiwUXlXhr/Ld5Ts7+AcKCHSue87HQz0hltghmNMW3DUm7vrlhRX0Xwq qnSD5lDmWY6xdhVz/BWXdCW4YxpA/hdkjL4uncfjCl28XJB2ER4nBexUw3JmGHrGuQ/L j53Q== X-Gm-Message-State: AOAM532brfWYbda1FWxtBURxjjD7c7TcdTnekLXYlI3111HA4LwZwJep TRHwcZG85D33RcWGF8naQXpdmqhSGIXDLMBfPRpbhuhlkwOWQhQoCxIzU8A6cqwkRhVCEfh9Kf1 ocTE5byJur2WChBOABVo63ulLSLETlM7JmVw+sNmVW88+ncQgManUceDA6NYcDWJW6Ns= X-Received: by 2002:a17:906:dc8a:b0:6f9:13e9:4c87 with SMTP id cs10-20020a170906dc8a00b006f913e94c87mr18539334ejc.729.1652779603657; Tue, 17 May 2022 02:26:43 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwNewSSzTR8NvKKvRQ463TmgkNACCC7wE1648FoJ3LPKXgIsboXz+aTutu1gPslW4dkygZl+A== X-Received: by 2002:a17:906:dc8a:b0:6f9:13e9:4c87 with SMTP id cs10-20020a170906dc8a00b006f913e94c87mr18539310ejc.729.1652779603313; Tue, 17 May 2022 02:26:43 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: alex.bennee@linaro.org, richard.henderson@linaro.org Subject: [PATCH 10/16] configure: introduce --cross-prefix-*= Date: Tue, 17 May 2022 11:26:10 +0200 Message-Id: <20220517092616.1272238-11-pbonzini@redhat.com> X-Mailer: git-send-email 2.36.0 In-Reply-To: <20220517092616.1272238-1-pbonzini@redhat.com> References: <20220517092616.1272238-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.082, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652780768129100001 Content-Type: text/plain; charset="utf-8" Also in preparation for handling more binaries from the cross binutils, support an option --cross-prefix-ARCH. All cross_cc_* defaults are replaced with cross_prefix_*; the cross_cc_* fallbacks are extended to the cross-compilation prefix, but the compiler fallbacks remain as well. This way, for example, --cross-cc-arm=3Darm-linux-gnueabihf-clang also applies to armeb binaries. Reviewed-by: Richard Henderson Signed-off-by: Paolo Bonzini --- configure | 137 ++++++++++++++++++++++++++++++------------------------ 1 file changed, 77 insertions(+), 60 deletions(-) diff --git a/configure b/configure index 016df3fa6e..ee4fcdacfe 100755 --- a/configure +++ b/configure @@ -365,6 +365,11 @@ for opt do --cross-cc-*) cc_arch=3D${opt#--cross-cc-}; cc_arch=3D${cc_arch%%=3D*} eval "cross_cc_${cc_arch}=3D\$optarg" ;; + --cross-prefix-*[!a-zA-Z0-9_-]*=3D*) error_exit "Passed bad --cross-pref= ix-FOO option" + ;; + --cross-prefix-*) cc_arch=3D${opt#--cross-prefix-}; cc_arch=3D${cc_arch%= %=3D*} + eval "cross_prefix_${cc_arch}=3D\$optarg" + ;; esac done # OS specific @@ -730,6 +735,8 @@ for opt do ;; --cross-cc-*) ;; + --cross-prefix-*) + ;; --enable-debug-info) meson_option_add -Ddebug=3Dtrue ;; --disable-debug-info) meson_option_add -Ddebug=3Dfalse @@ -1026,6 +1033,7 @@ Advanced options (experts only): --extra-ldflags=3DLDFLAGS append extra linker flags LDFLAGS --cross-cc-ARCH=3DCC use compiler when building ARCH guest test ca= ses --cross-cc-cflags-ARCH=3D use compiler flags when building ARCH guest t= ests + --cross-prefix-ARCH=3DPREFIX cross compiler prefix when building ARCH gu= est test cases --make=3DMAKE use specified make [$make] --python=3DPYTHON use specified python [$python] --meson=3DMESON use specified meson [$meson] @@ -1831,44 +1839,54 @@ if test $use_containers =3D "yes"; then fi =20 # cross compilers defaults, can be overridden with --cross-cc-ARCH -: ${cross_cc_aarch64=3D"aarch64-linux-gnu-gcc"} +: ${cross_prefix_aarch64=3D"aarch64-linux-gnu-"} +: ${cross_prefix_aarch64_be=3D"$cross_prefix_aarch64"} +: ${cross_prefix_alpha=3D"alpha-linux-gnu-"} +: ${cross_prefix_arm=3D"arm-linux-gnueabihf-"} +: ${cross_prefix_armeb=3D"$cross_prefix_arm"} +: ${cross_prefix_hexagon=3D"hexagon-unknown-linux-musl-"} +: ${cross_prefix_hppa=3D"hppa-linux-gnu-"} +: ${cross_prefix_i386=3D"i686-linux-gnu-"} +: ${cross_prefix_m68k=3D"m68k-linux-gnu-"} +: ${cross_prefix_microblaze=3D"microblaze-linux-musl-"} +: ${cross_prefix_mips64el=3D"mips64el-linux-gnuabi64-"} +: ${cross_prefix_mips64=3D"mips64-linux-gnuabi64-"} +: ${cross_prefix_mipsel=3D"mipsel-linux-gnu-"} +: ${cross_prefix_mips=3D"mips-linux-gnu-"} +: ${cross_prefix_nios2=3D"nios2-linux-gnu-"} +: ${cross_prefix_ppc=3D"powerpc-linux-gnu-"} +: ${cross_prefix_ppc64=3D"powerpc64-linux-gnu-"} +: ${cross_prefix_ppc64le=3D"$cross_prefix_ppc64"} +: ${cross_prefix_riscv64=3D"riscv64-linux-gnu-"} +: ${cross_prefix_s390x=3D"s390x-linux-gnu-"} +: ${cross_prefix_sh4=3D"sh4-linux-gnu-"} +: ${cross_prefix_sparc64=3D"sparc64-linux-gnu-"} +: ${cross_prefix_sparc=3D"$cross_prefix_sparc64"} +: ${cross_prefix_x86_64=3D"x86_64-linux-gnu-"} + : ${cross_cc_aarch64_be=3D"$cross_cc_aarch64"} : ${cross_cc_cflags_aarch64_be=3D"-mbig-endian"} -: ${cross_cc_alpha=3D"alpha-linux-gnu-gcc"} -: ${cross_cc_arm=3D"arm-linux-gnueabihf-gcc"} : ${cross_cc_armeb=3D"$cross_cc_arm"} : ${cross_cc_cflags_armeb=3D"-mbig-endian"} : ${cross_cc_hexagon=3D"hexagon-unknown-linux-musl-clang"} : ${cross_cc_cflags_hexagon=3D"-mv67 -O2 -static"} -: ${cross_cc_hppa=3D"hppa-linux-gnu-gcc"} -: ${cross_cc_i386=3D"i686-linux-gnu-gcc"} : ${cross_cc_cflags_i386=3D"-m32"} -: ${cross_cc_m68k=3D"m68k-linux-gnu-gcc"} -: ${cross_cc_microblaze=3D"microblaze-linux-musl-gcc"} -: ${cross_cc_mips64el=3D"mips64el-linux-gnuabi64-gcc"} -: ${cross_cc_mips64=3D"mips64-linux-gnuabi64-gcc"} -: ${cross_cc_mipsel=3D"mipsel-linux-gnu-gcc"} -: ${cross_cc_mips=3D"mips-linux-gnu-gcc"} -: ${cross_cc_nios2=3D"nios2-linux-gnu-gcc"} -: ${cross_cc_ppc=3D"powerpc-linux-gnu-gcc"} : ${cross_cc_cflags_ppc=3D"-m32"} -: ${cross_cc_ppc64=3D"powerpc64-linux-gnu-gcc"} : ${cross_cc_cflags_ppc64=3D"-m64 -mbig-endian"} : ${cross_cc_ppc64le=3D"$cross_cc_ppc64"} : ${cross_cc_cflags_ppc64le=3D"-m64 -mlittle-endian"} -: ${cross_cc_riscv64=3D"riscv64-linux-gnu-gcc"} -: ${cross_cc_s390x=3D"s390x-linux-gnu-gcc"} -: ${cross_cc_sh4=3D"sh4-linux-gnu-gcc"} -: ${cross_cc_sparc64=3D"sparc64-linux-gnu-gcc"} : ${cross_cc_cflags_sparc64=3D"-m64 -mcpu=3Dultrasparc"} : ${cross_cc_sparc=3D"$cross_cc_sparc64"} : ${cross_cc_cflags_sparc=3D"-m32 -mcpu=3Dsupersparc"} -: ${cross_cc_x86_64=3D"x86_64-linux-gnu-gcc"} : ${cross_cc_cflags_x86_64=3D"-m64"} =20 -# tricore is special as it doesn't have a compiler -: ${cross_as_tricore=3D"tricore-as"} -: ${cross_ld_tricore=3D"tricore-ld"} +compute_target_variable() { + if eval test -n "\"\${cross_prefix_$1}\""; then + if eval has "\"\${cross_prefix_$1}\$3\""; then + eval "$2=3D\"\${cross_prefix_$1}\$3\"" + fi + fi +} =20 probe_target_compiler() { # reset all output variables @@ -1914,93 +1932,99 @@ probe_target_compiler() { aarch64) # We don't have any bigendian build tools so we only use this for = AArch64 container_image=3Ddebian-arm64-cross - container_cross_cc=3Daarch64-linux-gnu-gcc-10 + container_cross_prefix=3Daarch64-linux-gnu- + container_cross_cc=3D${container_cross_prefix}gcc-10 ;; alpha) container_image=3Ddebian-alpha-cross - container_cross_cc=3Dalpha-linux-gnu-gcc + container_cross_prefix=3Dalpha-linux-gnu- ;; arm) # We don't have any bigendian build tools so we only use this for = ARM container_image=3Ddebian-armhf-cross - container_cross_cc=3Darm-linux-gnueabihf-gcc + container_cross_prefix=3Darm-linux-gnueabihf- ;; cris) container_image=3Dfedora-cris-cross - container_cross_cc=3Dcris-linux-gnu-gcc + container_cross_prefix=3Dcris-linux-gnu- ;; hexagon) container_image=3Ddebian-hexagon-cross - container_cross_cc=3Dhexagon-unknown-linux-musl-clang + container_cross_prefix=3Dhexagon-unknown-linux-musl- + container_cross_cc=3D${container_cross_prefix}clang ;; hppa) container_image=3Ddebian-hppa-cross - container_cross_cc=3Dhppa-linux-gnu-gcc + container_cross_prefix=3Dhppa-linux-gnu- ;; i386) container_image=3Dfedora-i386-cross - container_cross_cc=3Dgcc + container_cross_prefix=3D ;; m68k) container_image=3Ddebian-m68k-cross - container_cross_cc=3Dm68k-linux-gnu-gcc + container_cross_prefix=3Dm68k-linux-gnu- ;; microblaze) container_image=3Ddebian-microblaze-cross - container_cross_cc=3Dmicroblaze-linux-musl-gcc + container_cross_prefix=3Dmicroblaze-linux-musl- ;; mips64el) container_image=3Ddebian-mips64el-cross - container_cross_cc=3Dmips64el-linux-gnuabi64-gcc + container_cross_prefix=3Dmips64el-linux-gnuabi64- ;; mips64) container_image=3Ddebian-mips64-cross - container_cross_cc=3Dmips64-linux-gnuabi64-gcc + container_cross_prefix=3Dmips64-linux-gnuabi64- ;; mipsel) container_image=3Ddebian-mipsel-cross - container_cross_cc=3Dmipsel-linux-gnu-gcc + container_cross_prefix=3Dmipsel-linux-gnu- ;; mips) container_image=3Ddebian-mips-cross - container_cross_cc=3Dmips-linux-gnu-gcc + container_cross_prefix=3Dmips-linux-gnu- ;; nios2) container_image=3Ddebian-nios2-cross - container_cross_cc=3Dnios2-linux-gnu-gcc + container_cross_prefix=3Dnios2-linux-gnu- ;; ppc) container_image=3Ddebian-powerpc-test-cross - container_cross_cc=3Dpowerpc-linux-gnu-gcc-10 + container_cross_prefix=3Dpowerpc-linux-gnu- + container_cross_cc=3D${container_cross_prefix}gcc-10 ;; ppc64|ppc64le) container_image=3Ddebian-powerpc-test-cross - container_cross_cc=3Dpowerpc${1#ppc}-linux-gnu-gcc-10 + container_cross_prefix=3Dpowerpc${1#ppc}-linux-gnu- + container_cross_cc=3D${container_cross_prefix}gcc-10 ;; riscv64) container_image=3Ddebian-riscv64-test-cross - container_cross_cc=3Driscv64-linux-gnu-gcc + container_cross_prefix=3Driscv64-linux-gnu- ;; s390x) container_image=3Ddebian-s390x-cross - container_cross_cc=3Ds390x-linux-gnu-gcc + container_cross_prefix=3Ds390x-linux-gnu- ;; sh4) container_image=3Ddebian-sh4-cross - container_cross_cc=3Dsh4-linux-gnu-gcc + container_cross_prefix=3Dsh4-linux-gnu- ;; sparc64) container_image=3Ddebian-sparc64-cross - container_cross_cc=3Dsparc64-linux-gnu-gcc + container_cross_prefix=3Dsparc64-linux-gnu- ;; tricore) container_image=3Ddebian-tricore-cross + container_cross_prefix=3Dtricore- container_cross_as=3Dtricore-as container_cross_ld=3Dtricore-ld + break ;; x86_64) container_image=3Ddebian-amd64-cross - container_cross_cc=3Dx86_64-linux-gnu-gcc + container_cross_prefix=3Dx86_64-linux-gnu- ;; xtensa*) # FIXME: xtensa-linux-user? @@ -2008,9 +2032,12 @@ probe_target_compiler() { container_image=3Ddebian-xtensa-cross =20 # default to the dc232b cpu - container_cross_cc=3D/opt/2020.07/xtensa-dc232b-elf/bin/xtensa-dc2= 32b-elf-gcc + container_cross_prefix=3D/opt/2020.07/xtensa-dc232b-elf/bin/xtensa= -dc232b-elf- ;; esac + : ${container_cross_cc:=3D${container_cross_prefix}gcc} + : ${container_cross_as:=3D${container_cross_prefix}as} + : ${container_cross_ld:=3D${container_cross_prefix}ld} done =20 eval "target_cflags=3D\${cross_cc_cflags_$1}" @@ -2018,17 +2045,11 @@ probe_target_compiler() { if eval has "\"\${cross_cc_$1}\""; then eval "target_cc=3D\"\${cross_cc_$1}\"" fi + else + compute_target_variable $1 target_cc gcc fi - if eval test -n "\"\${cross_as_$1}\""; then - if eval has "\"\${cross_as_$1}\""; then - eval "target_as=3D\"\${cross_as_$1}\"" - fi - fi - if eval test -n "\"\${cross_ld_$1}\""; then - if eval has "\"\${cross_ld_$1}\""; then - eval "target_ld=3D\"\${cross_ld_$1}\"" - fi - fi + compute_target_variable $1 target_as as + compute_target_variable $1 target_ld ld if test "$1" =3D $cpu; then : ${target_cc:=3D$cc} : ${target_as:=3D$as} @@ -2061,12 +2082,8 @@ write_container_target_makefile() { if test -n "$container_cross_cc"; then echo "CC=3D\$(DOCKER_SCRIPT) cc --cc $container_cross_cc -i qemu/$cont= ainer_image -s $source_path --" fi - if test -n "$container_cross_as"; then - echo "AS=3D\$(DOCKER_SCRIPT) cc --cc $container_cross_as -i qemu/$cont= ainer_image -s $source_path --" - fi - if test -n "$container_cross_ld"; then - echo "LD=3D\$(DOCKER_SCRIPT) cc --cc $container_cross_ld -i qemu/$cont= ainer_image -s $source_path --" - fi + echo "AS=3D\$(DOCKER_SCRIPT) cc --cc $container_cross_as -i qemu/$contai= ner_image -s $source_path --" + echo "LD=3D\$(DOCKER_SCRIPT) cc --cc $container_cross_ld -i qemu/$contai= ner_image -s $source_path --" } =20 =20 --=20 2.36.0