Hi, This is not on Qemu, and I'm not cross-building. This is on an amd64 on 11.1-RELEASE-p2. Base was built without clang or gcc, and clang40 was installed from ports.
The base and kernel compile using lang/llvm40 with XCC, XCXX, and XCPP set. I'm a little confused, as how earlier, it seemed that ports that didn't need c++ were building without CC, CXX, and CPP options set. If I made a mistake here, I apologize for this. It seems CC, CXX, and CPP are made for ports. Then the problem is with Rust locating c++ that is in /usr/local/bin/ and not contained within FreeBSD 11.1's base, in /usr/bin/. Nearly all programs requiring c++, needed for my desktop (xorg, rxvt-unicode, leafpad, sox) compiled when all 6 variables were set (CC,CPP, etc). Only Rust, and programs depending on it failed. Now I think the problem is, that Rust and programs depending on it look in absolute locations for c++. > Sent: Sunday, October 29, 2017 at 12:11 AM > From: "Mark Millard" <mar...@dsl-only.net> > To: Sid <s...@bsdmail.com> > Cc: freebsd-toolchain@freebsd.org > Subject: Re: External LLVM toolchain not consistently locating c++ when > compiling ports > > > On 2017-Oct-28, at 9:40 PM, Sid <sid at bsdmail.com> wrote: > > > In /etc/make.conf, when I use, > > XCC= /usr/local/bin/clang40 > > XCXX= /usr/local/bin/clang++40 > > XCPP= /usr/local/bin/clang-cpp40 > > for ports that require c++ without clang in the base system, I get the > > error code > > make: "/usr/ports/Mk/Uses/compiler.mk" line 112:warning: "c++ -### > > /dev/null 2>&1" returned non-zero status > > Quoting https://wiki.freebsd.org/ExternalToolchain: > > XCC > > The XCC approach works with top level build targets (buildworld, buildkernel, > etc) and overrides common make variables such as CC, CXX, and AS during the > cross building portions of the build with values specified by the XCC, XCPP, > XAS, etc variables. This method touches few files and is relatively easy to > understand, but has drawbacks including the inability to build individual > programs easily. > > END QUOTE. > > Does ports support "cross building" that would be expected to use > XCC, XCXX, XCPP, and the like? > > To my knowledge there is no cross build environment for ports > that can avoid qemu (or an equivalent): cross builds of parts > are based on qemu, which use CC, CXX, CPP and the like as far > as I know. > > > Base and the kernel builds well with this setting. Compiles that don't need > > c++ also work with this setting. > > Unlike for ports builds. (That is my understanding.) > > > I've compensated by adding > > CC= /usr/local/bin/clang40 > > CXX= /usr/local/bin/clang++40 > > CPP= /usr/local/bin/clang-cpp40 > > to the above. While this works for many ports requiring c++, it doesn't > > work for Rust, and programs that depend on it (Firefox, Thunderbird). > > This is what I'd expect for "self hosted" (target=build) > types of contexts and for being in a qemu context that looks > like the target. > > I'm not aware of another form of cross build for > FreeBSD ports. (I'd like to be able to do powerpc64 > and powerpc without a system qemu. User qemu does > not work for targeting powerpc64 or for powerpc.) > > > It seems that XCXX is supposed to replace CXX fully, considering that XCC > > replaces CC, and XCPP replaces CPP when compiling other ports. > > Can you provide evidence of this? Does the evidence > involve cross building where the X prefix is involved? > > > The error message for compiling rust with all of the above (XCC, XCXX, > > XCPP, CC, CXX, CPP) set is > > couldn't find required command: "c++" > > Does the environment not have a c++ command in a place > listed in path? Otherwise it should be found. > > > This error happens whether the port option for lang/rust is set to compile > > with llvm40 or the bundled version. > > This is affected by /usr/ports/Mk/Uses/compiler.mk and I think this problem > > affects ports compiled with c++ in the base system as well. > > > === > Mark Millard > markmi at dsl-only.net > > _______________________________________________ freebsd-toolchain@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-toolchain To unsubscribe, send any mail to "freebsd-toolchain-unsubscr...@freebsd.org"