Re: compiling with ports llvm11 breaks on mman.h: struct shm_larg epage_conf

From: Brooks Davis <brooks_at_freebsd.org>
Date: Tue, 15 Sep 2020 16:33:43 +0000
On Mon, Sep 14, 2020 at 06:46:52PM +0200, Dimitry Andric wrote:
> On 13 Sep 2020, at 20:56, Dimitry Andric <dim_at_FreeBSD.org> wrote:
> > 
> > On 12 Sep 2020, at 23:00, Ronald Klop <ronald-lists_at_klop.ws> wrote:
> >> 
> >> On Sat, 12 Sep 2020 18:28:03 +0200, Dimitry Andric <dim_at_freebsd.org> wrote:
> >>> On 12 Sep 2020, at 17:43, Ronald Klop <ronald-lists_at_klop.ws> wrote:
> >>>> 
> >>>> Because I'm tired of hours of compilation of llvm/clang I'm testing compiling FreeBSD with llvm11 from a pkg.
> > ...
> > It is during the building world stage and happens with and without NO_CLEAN.
> >> Full command:
> >> /usr/local/bin/clang11  -O2 -pipe -fno-common   -DNO__SCCSID -DNO__RCSID -I/usr/src/lib/libc
> >> /include -I/usr/src/include -I/usr/src/lib/libc/amd64 -DNLS  -D__DBINTERFACE_PRIVATE -I/usr/
> >> src/contrib/gdtoa -I/usr/src/contrib/libc-vis -DINET6 -I/usr/obj/usr/src/amd64.amd64/lib/lib
> >> c -I/usr/src/lib/libc/resolv -D_ACL_PRIVATE -DPOSIX_MISTAKE -I/usr/src/lib/libmd -I/usr/src/
> >> contrib/jemalloc/include -DMALLOC_PRODUCTION -I/usr/src/contrib/tzcode/stdtime -I/usr/src/li
> >> b/libc/stdtime -I/usr/src/lib/libc/locale -DBROKEN_DES -DPORTMAP -DDES_BUILTIN -I/usr/src/li
> >> b/libc/rpc -DWANT_HYPERV -DYP -DNS_CACHING -DSYMBOL_VERSIONING -g -MD  -MF.depend.shm_open.o
> >> -MTshm_open.o -std=gnu99 -Wno-format-zero-length -nobuiltininc -idirafter /usr/local/llvm11
> >> /lib/clang/11.0.0/include -fstack-protector-strong -Wsystem-headers -Werror -Wall -Wno-format-y2k -Wno-uninitialized -Wno-pointer-sign -Wno-empty-body -Wno-string-plus-int -Wno-unused-
> >> const-variable -Wno-tautological-compare -Wno-unused-value -Wno-parentheses-equality -Wno-un
> >> used-function -Wno-enum-conversion -Wno-unused-local-typedef -Wno-address-of-packed-member -
> >> Wno-switch -Wno-switch-enum -Wno-knr-promoted-parameter  -Qunused-arguments    -I/usr/src/lib/libutil -I/usr/src/lib/msun/amd64 -I/usr/src/lib/msun/x86 -I/usr/src/lib/msun/src -c /usr/
> >> src/lib/libc/sys/shm_open.c -o shm_open.o
> > 
> > After a pretty long build of the llvm11 port, I can at least reproduce your error. It looks like the problem is that clang11 does not get any --sysroot parameter passed.
> ...
> > So except for the expected difference in the -idirafter option that points to the clang internal headers, the main problem is that for some reason, clang11 does not get the -target and --sysroot options passed.
> 
> In the end it turns out that the problems is caused by setting CC (and CXX, etc) in make.conf. This has the unfortunate side-effect that any XCFLAGS are overridden during the world stages, such that the all-important --sysroot flags is not added.
> 
> In short, never set CC, CXX, CPP or LD in your make.conf or build environment, but use XCC, XCXX, XCPP and XLD instead. Better yet, install one of the llvm packages from the devel category, and set CROSS_TOOLCHAIN.
> 
> Keep an eye on https://wiki.freebsd.org/ExternalToolchain, which still has a little bit of outdated information, but is hopefully going to be updated soon.

I've made some modest updates to this page to reflect building with
modern LLVM ports.

-- Brooks

Received on Tue Sep 15 2020 - 14:33:50 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:25 UTC