WITH_CLANG_BOOTSTRAP= for TARGET_ARCH=powerpc64 but bound to devel/powerpc64-binutils : can such be done?

Mark Millard markmi at dsl-only.net
Mon Nov 28 03:10:43 UTC 2016


[Looks like I misread something so. . .]

On 2016-Nov-27, at 4:34 PM, Mark Millard <markmi at dsl-only.net> wrote:

> Currently head has switched to clang 3.9.0 but my
> TARGET_ARCH=powerpc64for clang experiments for buildworld are blocked
> by WITH_BINUTILS_BOOTSTRAP= 's ld stopping the buildworld via failing
> asserts.
> 
> What I'd like to do is build the bootstrap clang but bound to a
> devel/powerpc64-binutils vintage to see if that works. So binutils
> being "cross tool chain" (even when directly invoked by clang) but
> clang itself not being cross tool chain but bootstrapped?
> 
> (elftoolchain may need to be considered with binutils.)
> 
> Do you know if there is a way for me to make assignments in a
> SRC_ENV_CONF file that might enable such a combination? Or
> do I need to modify the build environment to be non-standard?
> 
> So far in my reading /usr/src/Makefile.inc1 I've not seen any
> combination of settings that look like it would go through and
> work for what I've described here.

I misread something and the following seems to have worked:
(I tend to be explicit about some things that I do not need
to be in such files: it helps em remember and understand some
issues.)

# more ~/src.configs/src.conf.powerpc64-clang_altbinutils-bootstrap.amd64-host 
TO_TYPE=powerpc64
TOOLS_TO_TYPE=${TO_TYPE}
VERSION_CONTEXT=12.0
#
KERNCONF=GENERIC64vtsc-NODBG
TARGET=powerpc
.if ${.MAKE.LEVEL} == 0
TARGET_ARCH=${TO_TYPE}
.export TARGET_ARCH
.endif
#
WITH_CROSS_COMPILER=
WITHOUT_SYSTEM_COMPILER=
#
WITH_LIBCPLUSPLUS=
WITHOUT_BINUTILS_BOOTSTRAP=
WITH_CLANG_BOOTSTRAP=
WITH_CLANG=
WITH_CLANG_IS_CC=
WITH_CLANG_FULL=
WITH_CLANG_EXTRAS=
WITH_LLDB=
#
WITH_BOOT=
# world32/usr/src/lib/csu/powerpc/crti.o got:
# csu/powerpc/crti.S:34:13: error: unexpected token in memory operand
# csu/powerpc/crti.S:35:2: error: invalid instruction mnemonic 'mflr'
# and the like. So avoid LIB32.
WITHOUT_LIB32=
#
WITHOUT_ELFTOOLCHAIN_BOOTSTRAP=
WITHOUT_GCC_BOOTSTRAP=
WITHOUT_GCC=
WITHOUT_GCC_IS_CC=
WITHOUT_GNUCXX=
#
NO_WERROR=
#WERROR=
MALLOC_PRODUCTION=
#
WITH_DEBUG_FILES=
#
#
# For TO (so-called "cross") stages . . .
# So-called-cross via ${TO_TYPE}-xtoolchain-gcc/${TO_TYPE}-gcc. . .
# TOOLS_TO_TYPE based on ${TO_TYPE}-xtoolchain-gcc related binutils. . .
#
CROSS_BINUTILS_PREFIX=/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/
.if ${.MAKE.LEVEL} == 0
XAS=/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/as
XAR=/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/ar
XLD=/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/ld
XNM=/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/nm
XOBJCOPY=/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/objcopy
XOBJDUMP=/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/objdump
XRANLIB=/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/ranlib
XSIZE=/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/size
#NO-SUCH: XSTRINGS=/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/strings
XSTRINGS=/usr/local/bin/${TOOLS_TO_TYPE}-freebsd-strings
.export XAS
.export XAR
.export XLD
.export XNM
.export XOBJCOPY
.export XOBJDUMP
.export XRANLIB
.export XSIZE
.export XSTRINGS
.endif
#
#
# From based on clang (via system). . .
#
.if ${.MAKE.LEVEL} == 0
CC=/usr/bin/clang
CXX=/usr/bin/clang++
CPP=/usr/bin/clang-cpp
.export CC
.export CXX
.export CPP
.endif

I have not tested what the buildworld produced yet.

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



More information about the freebsd-toolchain mailing list