powerpc64 10.0-STABLE uses -mlongcall , -mcall-aixdesc , and -Wa, -many --none of which does clang 3.4.1 support

Mark Millard markmi at dsl-only.net
Mon Jun 30 07:55:10 UTC 2014


buildworld uses -mlongcall for /usr/src/lib/csu/powerpc64/ and so clang 3.4.1 stops there.

buildkernel uses -mcall-aixdesc and -Wa,-many for /usr/obj/usr/src/sys/GENERIC64/ and so clang stops there as well.


Technique of discovery: Starting from

FreeBSD-10.0-STABLE-powerpc-powerpc64-20140622-r267746-disk1.iso

[with /usr/ports/Mk/Uses/compiler.mk still reverted so it does not avoid clang so much --but I'v not gotten to devel/boost-all testing yet]

and with /etc/make.conf being:

CPP=clang-cpp
CC=clang
CXX=clang++

then following script tries buildworld and buildkernel:

#!/bin/sh
rm -fr /usr/obj/*
#
# Presume a free-standing clang c++ is available for bootstrapping:
# One is in 10.0-STABLE for the specifics here.
#
# Convert to having hosted implementation material in place.
#
cd /usr/src/lib/libcxxrt
make clean
make
make install
#
cd /usr/src/lib/libc++
make clean
make
make install
#
# Then with the hosted implementation in place...
#
make buildworld
make buildkernel

In essence: it bootstraps from a freestanding clang based c++ implementation to a hosted c++ implementation before any other possible other uses of the c++ compiler (including before llvm and/or clang are rebuilt: They require a hosted implementation.).

libcxxrt and libc++ built without reporting errors. The lack of && between make buildworld and make buildkernel allowed the script file to show where both stopped: I was more interested in that information than continuing to build without starting over.

I will probably see what happens if I repeat my boost-all experiment: rebuild all the prerequisites in this context and then retry boost-all (if it it gets that far). That would mean that icu had been built by clang (if it is successful).

===
Mark Millard
markmi at dsl-only.net



More information about the freebsd-ppc mailing list