Re: Error crosscompiling 14.0-ALPHA1 on amd64 for arm64.aarch64
Date: Sun, 13 Aug 2023 21:01:11 UTC
On Aug 13, 2023, at 13:19, Juraj Lutter <otis@freebsd.org> wrote:
>> On 13 Aug 2023, at 21:13, Mark Millard <marklmi@yahoo.com> wrote:
>> 
>> But the offical CI builds on amd64 do not have the problem.
>> 
>> We still have not found what is different about your context from the
>> standard context used for CI builds and snapshot builds, all of which
>> have worked find building on amd64 to target aarch64 with armv7 support.
> 
> My src.conf:
> 
> WITHOUT_PROFILE=yes
> WITHOUT_TESTS=yes
> WITHOUT_STATIC=yes
> 
> WITHOUT_LLVM_TARGET_ALL=yes
Starting below this is wrong presuming all
builds are actually done on amd64:
> .if "${TARGET}" == "arm64" && "${TARGET_ARCH}" == "aarch64"
> KERNCONF?=GENERIC-MMCCAM
> REPODIR?=/data/poudriere/packages/pkgbase
> MODULES_EXTRA="rpi_ft5406"
> WITH_LLVM_TARGET_AARCH64=yes
> WITH_LLVM_TARGET_ARM=yes
> .else
> KERNCONF?=GENERIC-NODEBUG
> REPODIR?=/data/poudriere/packages/pkgbase
> WITH_LLVM_TARGET_AARCH64=yes
> WITH_LLVM_TARGET_X86=yes
> .endif
Ending here.
This is written as if there were separate toolchains for
each target. That is not how llvm/clang/lld works,
unlike gcc. One toolchain covers all the targets. That
is what the FreBSD llvm support is structured for.
You want the one llvm/clang/lld toolchain that includes
everything required to build any/all of:
A) amd64
B) i386 for amd64's lib32
C) aarch64
D) armv7 for aarch64's lib32
So the *_LLVM_TARGET_* parts would be more like:
WITHOUT_PROFILE=yes
WITHOUT_TESTS=yes
WITHOUT_STATIC=yes
WITHOUT_LLVM_TARGET_ALL=yes
WITH_LLVM_TARGET_AARCH64=yes
WITH_LLVM_TARGET_X86=yes
WITH_LLVM_TARGET_AARCH64=yes
WITH_LLVM_TARGET_ARM=yes
So: outside the later conditional logic.
(Your REPODIR?= lines are identical and could also be factored
out of the conditional logic if they are not expected to be
independently changed. Only the KERNCONF?= lines are actually
target specific, needing to be in the conditional logic.)
> make.conf is empty, git workdir has `main’ checked out, without any modifications (git status reports clean workdir)
> 
===
Mark Millard
marklmi at yahoo.com