Re: armv7 targeting (on aarch64, via poudriere-devel): system's clang 13 rejected building devel/lllvm13

From: Mark Millard via freebsd-toolchain <freebsd-toolchain_at_freebsd.org>
Date: Mon, 15 Nov 2021 19:40:49 UTC

On 2021-Nov-15, at 11:35, Mark Millard <marklmi@yahoo.com> wrote:

> On 2021-Nov-15, at 10:40, Dimitry Andric <dim@FreeBSD.org> wrote:
> 
>> On 15 Nov 2021, at 19:14, Mark Millard via arm <arm@freebsd.org> wrote:
>>> 
>>> There error was:
>>> 
>>> error: non-constant-expression cannot be narrowed from type 'long long' to 'std::size_t' (aka 'unsi
>>> gned int') in initializer list [-Wc++11-narrowing]
>>> std::size_t resultBytes{size * elementBytes};
>>>                        ^~~~~~~~~~~~~~~~~~~
>>> /wrkdirs/usr/ports/devel/llvm13/work/llvm-project-13.0.0.src/flang/runtime/misc-intrinsic.cpp:50:27: note: insert an explicit cast to silence this issue
>>> std::size_t resultBytes{size * elementBytes};
>>>                        ^~~~~~~~~~~~~~~~~~~
>>>                        static_cast<size_t>( )
>> 
>> The flang subproject does quite a lot of mixing of size_t and uint64_t, assuming in various places that they are the same. You will also encounter similar errors when attempting to build it for e.g. i386, or other 32 bit architectures. I think it is quite a lot of work to get all of these right, and it should really be discussed upstream.
>> 
>> So for now, I would advise to only turn on the flang option for amd64 by default.
> 
> flang was not being built:
> 
> # more /usr/local/etc/poudriere.d/options/devel_llvm13/options 
> # This file is auto-generated by 'make config'.
> # Options for llvm13-13.0.0
> _OPTIONS_READ=llvm13-13.0.0
> _FILE_COMPLETE_OPTIONS_LIST=BE_AMDGPU CLANG DOCS EXTRAS FLANG LIT LLD LLDB MLIR OPENMP PYCLANG BE_FREEBSD BE_NATIVE BE_STANDARD
> OPTIONS_FILE_SET+=BE_AMDGPU
> OPTIONS_FILE_SET+=CLANG
> OPTIONS_FILE_SET+=DOCS
> OPTIONS_FILE_SET+=EXTRAS
> OPTIONS_FILE_UNSET+=FLANG
> OPTIONS_FILE_SET+=LIT
> OPTIONS_FILE_SET+=LLD
> OPTIONS_FILE_SET+=LLDB
> OPTIONS_FILE_SET+=MLIR
> OPTIONS_FILE_UNSET+=OPENMP
> OPTIONS_FILE_UNSET+=PYCLANG
> OPTIONS_FILE_UNSET+=BE_FREEBSD
> OPTIONS_FILE_SET+=BE_NATIVE
> OPTIONS_FILE_UNSET+=BE_STANDARD
> 

Hmm. I got that wrong, somehow the above was not used.
From the log file:

---Begin OPTIONS List---
===> The following configuration options are available for llvm13-13.0.0_2:
     BE_AMDGPU=on: AMD GPU backend (required by mesa)
     CLANG=on: Build clang
     DOCS=on: Build and/or install documentation
     EXTRAS=on: Extra clang tools
     FLANG=on: Flang FORTRAN compiler
     LIT=on: Install lit and FileCheck test tools
     LLD=on: Install lld, the LLVM linker
     LLDB=on: Install lldb, the LLVM debugger
     MLIR=on: Multi-Level Intermediate Representation
     PYCLANG=on: Install python bindings to libclang
====> Options available for the single BACKENDS: you have to select exactly one of them
     BE_FREEBSD=off: Backends for FreeBSD architectures
     BE_NATIVE=off: Backend(s) for this architecture (ARM)
     BE_STANDARD=on: All non-experimental backends
===> Use 'make config' to modify these settings




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