devel/llvm10 (and 11) on aarch64: only BE_AMDGPU registered targets despite OPTIONS_FILE_SET+=BE_NATIVE also being set

Mark Millard marklmi at yahoo.com
Fri Apr 9 17:51:42 UTC 2021



On 2021-Apr-8, at 10:46, Mark Millard <marklmi at yahoo.com> wrote:

> Building devel/llvm10 via poudriere-devel on a Cortex-A57
> system (OverDrive 1000), I ended up with just:
> 
> # /usr/local/llvm10/bin/llc -version
> LLVM (http://llvm.org/):
>  LLVM version 10.0.1
>  Optimized build.
>  Default target: aarch64-portbld-freebsd14.0
>  Host CPU: (unknown)
> 
>  Registered Targets:
>    amdgcn - AMD GCN GPUs
>    r600   - AMD GPUs HD2XXX-HD6XXX
> 
> from a context that has:
> 
> # grep -r BE /usr/local/etc/poudriere.d/options/devel_llvm10/
> /usr/local/etc/poudriere.d/options/devel_llvm10/options:_FILE_COMPLETE_OPTIONS_LIST=BE_AMDGPU CLANG DOCS EXTRAS LIT LLD LLDB LLD_LINK OPENMP PYCLANG BE_FREEBSD BE_NATIVE BE_STANDARD
> /usr/local/etc/poudriere.d/options/devel_llvm10/options:OPTIONS_FILE_SET+=BE_AMDGPU
> /usr/local/etc/poudriere.d/options/devel_llvm10/options:OPTIONS_FILE_UNSET+=BE_FREEBSD
> /usr/local/etc/poudriere.d/options/devel_llvm10/options:OPTIONS_FILE_SET+=BE_NATIVE
> /usr/local/etc/poudriere.d/options/devel_llvm10/options:OPTIONS_FILE_UNSET+=BE_STANDARD
> 
> (I've used the combination in various llvm*'s for years,
> including using such for llvm10. Something has changed.)
> 
> I'll not repeat the material here but llvm11 got the same
> sort of result.
> 
> May be that "Host CPU: (unknown)" has something to do with
> it?
> 
> This has been true since I built and installed back on
> 2021-Feb-11 and is true of my updating build started
> yesterday (bulk still in progress). LLVM10 pkg info
> from active install:
> 
> # pkg info llvm10
> llvm10-10.0.1_5
> Name           : llvm10
> Version        : 10.0.1_5
> Installed on   : Thu Feb 11 12:05:43 2021 PST
> Origin         : devel/llvm10
> Architecture   : FreeBSD:14:aarch64
> Prefix         : /usr/local
> Categories     : devel lang
> Licenses       : MIT, BSD3CLAUSE, PD, LLVM, REGEX, LLVM2
> Maintainer     : brooks at FreeBSD.org
> WWW            : http://llvm.org/
> Comment        : LLVM and Clang
> Options        :
> 	BE_AMDGPU      : on
> 	BE_FREEBSD     : off
> 	BE_NATIVE      : on
> 	BE_STANDARD    : off
> 	CLANG          : on
> 	DOCS           : on
> 	EXTRAS         : on
> 	LIT            : on
> 	LLD            : on
> 	LLDB           : on
> 	LLD_LINK       : on
> 	OPENMP         : on
> 	PYCLANG        : off
> Shared Libs required:
> 	libedit.so.0
> 	liblua-5.2.so
> 	libpython3.7m.so.1.0
> 	libxml2.so.2
> Shared Libs provided:
> 	libRemarks.so.10
> 	libarcher.so
> 	libclang-cpp.so.10
> 	liblldb.so.10
> 	libLTO.so.10
> 	libLLVM-10.so
> 	libomptarget.so
> 	libomp.so
> 	libclang.so.10
> Annotations    :
> 	FreeBSD_version: 1400004
> 	repo_type      : binary
> 	repository     : custom
> Flat size      : 509MiB
> Description    :
> The LLVM Project is a collection of modular and reusable compiler and
> toolchain technologies.
> 
> This port includes Clang (a C/C++/Objective-C compiler), LLD (a linker),
> LLDB (a debugger), an OpenMP runtime library, and the LLVM infrastructure
> these are built on.
> 
> WWW: http://llvm.org/
> 
> 
> (So the above predates the git conversion.)
> 
> The issue was first noticed via build failures like (from a
> log file):
> 
> . . .
> Sanity testing C compiler: /usr/local/bin/clang10
> Is cross compiler: False.
> Sanity check compiler command line: /usr/local/bin/clang10 /wrkdirs/usr/ports/graphics/mesa-libs/work/mesa-20.2.3/_build/meson-private/sanitycheckc.c -o /wrkdirs/usr/ports/graphics/mesa-libs/work/mesa-20.2.3/_build/meson-private/sanitycheckc.exe -O2 -pipe -mcpu=cortex-a57 -g -fstack-protector-strong -fno-strict-aliasing -mcpu=cortex-a57 -pipe -D_FILE_OFFSET_BITS=64 -Wl,-rpath=/usr/local/llvm10/lib
> Sanity check compile stdout:
> 
> -----
> Sanity check compile stderr:
> error: unable to create target: 'No available targets are compatible with triple "aarch64-portbld-freebsd14.0"'
> 1 error generated.
> . . .
> 
> 
> The FreeBSD is a non-debug build based on main 7381bbee29df:
> 
> # ~/fbsd-based-on-what-freebsd-main.sh 
> FreeBSD FBSDCA57 14.0-CURRENT FreeBSD 14.0-CURRENT mm-src-n245445-def0058cc690 GENERIC-NODBG  arm64 aarch64 1400005 1400005
> def0058cc690 (HEAD -> mm-src) mm-src snapshot for mm's patched build in git context.
> merge-base: 7381bbee29df959e88ec59866cf2878263e7f3b2
> merge-base: CommitDate: 2021-03-12 20:29:42 +0000
> 7381bbee29df (freebsd/main, freebsd/HEAD, pure-src, main) cam: Run all XPT_ASYNC ccbs in a dedicated thread
> n245444 (--first-parent --count for merge-base)

Using OPTIONS_FILE_SET+=BE_STANDARD instead of
OPTIONS_FILE_SET+=BE_NATIVE did not have this
problem. (I've not tried BE_FREEBSD so far.)

Also, my Cortex-A7 (so: armv7) context did not have
the "amdgcn/r600 only" problem with
OPTIONS_FILE_SET+=BE_NATIVE :

# /usr/local/llvm10/bin/llc -version
LLVM (http://llvm.org/):
  LLVM version 10.0.1
  Optimized build.
  Default target: armv7-portbld-freebsd14.0-gnueabihf
  Host CPU: (unknown)

  Registered Targets:
    amdgcn  - AMD GCN GPUs
    arm     - ARM
    armeb   - ARM (big endian)
    r600    - AMD GPUs HD2XXX-HD6XXX
    thumb   - Thumb
    thumbeb - Thumb (big endian)

# pkg info llvm10
llvm10-10.0.1_5
Name           : llvm10
Version        : 10.0.1_5
Installed on   : Fri Feb 12 11:59:11 2021 PST
Origin         : devel/llvm10
Architecture   : FreeBSD:14:armv7
Prefix         : /usr/local
Categories     : devel lang
Licenses       : MIT, BSD3CLAUSE, PD, REGEX, LLVM2, LLVM
Maintainer     : brooks at FreeBSD.org
WWW            : http://llvm.org/
Comment        : LLVM and Clang
Options        :
        BE_AMDGPU      : on
        BE_FREEBSD     : off
        BE_NATIVE      : on
        BE_STANDARD    : off
        CLANG          : on
        DOCS           : on
        EXTRAS         : on
        LIT            : on
        LLD            : on
        LLDB           : on
        LLD_LINK       : on
        PYCLANG        : off
Shared Libs required:
        libedit.so.0
        liblua-5.2.so
        libpython3.7m.so.1.0
        libxml2.so.2
Shared Libs provided:
        libLTO.so.10
        libRemarks.so.10
        libLLVM-10.so
        libclang-cpp.so.10
        liblldb.so.10
        libclang.so.10
Annotations    :
        FreeBSD_version: 1400004
        repo_type      : binary
        repository     : custom
Flat size      : 511MiB
Description    :
The LLVM Project is a collection of modular and reusable compiler and
toolchain technologies.

This port includes Clang (a C/C++/Objective-C compiler), LLD (a linker),
LLDB (a debugger), an OpenMP runtime library, and the LLVM infrastructure
these are built on.

WWW: http://llvm.org/


So somehow specific to Cortex-A57/Cortex-A72 or to aarch64
generally. (The MACCHIATObin Double Shot had the same
build problem as the OverDrive 1000.)

It might be appropriate to disable the BE_NATIVE option
for aarch64 if it is going to silently not produce aarch64
support.

===
Mark Millard
marklmi at yahoo.com
( dsl-only.net went
away in early 2018-Mar)



More information about the freebsd-toolchain mailing list