head -r324071 system clang 5 based powerpc64 building ports: x11-toolkit/qt5-gui gets "clang++: error: unknown argument: '-mminimal-toc'"

Mark Millard markmi at dsl-only.net
Fri Sep 29 19:24:50 UTC 2017


I attempted a poudriere based build of some
ports and the qt5-gui build involved failed
with the following sorts of notices. But
the context is using the same sources as
I've been testing various proposed armv6
related build fixes with (fixes taken from
bugzilla activity, not my own). I doubt
that they matter to the powerpc64 issue.


DEFAULT_LIBDIRS="/lib
/usr/lib
/usr/local/lib"
Running configuration tests...
Determining architecture... ()
clang++ -c -pipe -O2 -pipe -B/usr/local/bin/ -g -fno-strict-aliasing -mminimal-toc -B/usr/local/bin/ -g -Wall -W -fPIC  -I. -I/usr/local/include -I/usr/local/lib/qt5/mkspecs/freebsd-clang -o arch.o arch.cpp
clang++: error: unknown argument: '-mminimal-toc'
*** Error code 1

Stop.
make[1]: stopped in /wrkdirs/usr/ports/x11-toolkits/qt5-gui/work/qtbase-opensource-src-5.7.1/config.tests/arch
Unable to determine architecture!

Could not determine the target architecture!
Turn on verbose messaging (-v) to see the final report.
System architecture: 'unknown'
Host architecture: 'unknown'
clang++ -c -fvisibility=hidden fvisibility.c
clang++: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated [-Wdeprecated]
Symbol visibility control enabled.
clang++ -o libtest.so -shared -Wl,-Bsymbolic-functions -fPIC bsymbolic_functions.c
clang++: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated [-Wdeprecated]
bsymbolic_functions.c:2:2: error: "Symbolic function binding on this architecture may be broken, disabling it (see QTBUG-36129)."
#error "Symbolic function binding on this architecture may be broken, disabling it (see QTBUG-36129)."
 ^
1 error generated.
Symbolic function binding disabled.
checking for objcopy... 
clang++ -c -pipe -O2 -B/usr/local/bin/ -g -fno-strict-aliasing -mminimal-toc -O2 -Wall -W -fPIC  -I. -I/usr/local/include -I/usr/local/lib/qt5/mkspecs/freebsd-clang -o objcopy.o objcopy.cpp
clang++: error: unknown argument: '-mminimal-toc'
*** Error code 1

Stop.
make[1]: stopped in /wrkdirs/usr/ports/x11-toolkits/qt5-gui/work/qtbase-opensource-src-5.7.1/config.tests/unix/objcopy
objcopy disabled.
ERROR: -separate-debug-info was requested but this binutils does not support it.
Re-run configure with -v for more information
===>  Script "configure" failed unexpectedly.
Please report the problem to kde at FreeBSD.org [maintainer] and attach the
"/wrkdirs/usr/ports/x11-toolkits/qt5-gui/work/qtbase-opensource-src-5.7.1/config.log"
including the output of the failure of your make command. Also, it might be
a good idea to provide an overview of all packages installed on your system
(e.g. a /usr/local/sbin/pkg-static info -g -Ea).
*** Error code 1

Stop.
make: stopped in /usr/ports/x11-toolkits/qt5-gui
=>> Cleaning up wrkdir
===>  Cleaning for qt5-gui-5.7.1_1
build of x11-toolkits/qt5-gui | qt5-gui-5.7.1_1 ended at Fri Sep 29 11:24:04 PDT 2017
build time: 00:13:38
!!! build failure encountered !!!


Context:

# uname -apKU
FreeBSD FBSDG5L 12.0-CURRENT FreeBSD 12.0-CURRENT  r324071M  powerpc powerpc64 1200047 1200047

Built via amd64 -> powerpc64 cross build, using clang
for buildworld:

[Note: The kernel was built with gcc 4.2.1 .]

# poudriere jail -l
JAILNAME      VERSION      ARCH              METHOD TIMESTAMP           PATH
FBSDpowerpc64 12.0-CURRENT powerpc.powerpc64 null   2017-09-28 20:55:01 /usr/obj/DESTDIRs/clang-powerpc64-installworld_altbinutils-poud

(It is using /usr/src .)

# poudriere ports -l
PORTSTREE METHOD TIMESTAMP           PATH
default   null   2017-09-28 17:04:57 /usr/ports


# 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_ELFTOOLCHAIN_BOOTSTRAP=
WITH_CLANG_BOOTSTRAP=
WITH_CLANG=
WITH_CLANG_IS_CC=
WITH_CLANG_FULL=
WITH_CLANG_EXTRAS=
WITHOUT_LLD_BOOTSTRAP=
WITH_LLD=
WITHOUT_LLD_IS_LD=
WITH_LLDB=
#
WITH_BOOT=
WITH_LIB32=
#
WITHOUT_GCC_BOOTSTRAP=
WITHOUT_GCC=
WITHOUT_GCC_IS_CC=
WITHOUT_GNUCXX=
#
NO_WERROR=
MALLOC_PRODUCTION=
#
# Avoid converts between pointers to integer types with different sign [-Werror,-Wpointer-sign]
# and such from blocking the build.
WERROR=
#
WITH_REPRODUCIBLE_BUILD=
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
#
# Note: The WITH_CROSS_COMPILER picks up the CROSS_BINUTILS_PREFIX
#       binding automatically.
#
XAS=/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/as
XAR=/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/ar
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 XNM
.export XOBJCOPY
.export XOBJDUMP
.export XRANLIB
.export XSIZE
.export XSTRINGS
XLD=/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/ld
.export XLD
.endif

# svnlite status /usr/src/ | sort
?       /usr/src/sys/amd64/conf/GENERIC-DBG
?       /usr/src/sys/amd64/conf/GENERIC-NODBG
?       /usr/src/sys/arm/conf/GENERIC-DBG
?       /usr/src/sys/arm/conf/GENERIC-NODBG
?       /usr/src/sys/arm64/conf/GENERIC-DBG
?       /usr/src/sys/arm64/conf/GENERIC-NODBG
?       /usr/src/sys/powerpc/conf/GENERIC64vtsc-DBG
?       /usr/src/sys/powerpc/conf/GENERIC64vtsc-NODBG
?       /usr/src/sys/powerpc/conf/GENERICvtsc-DBG
?       /usr/src/sys/powerpc/conf/GENERICvtsc-NODBG
M       /usr/src/contrib/llvm/lib/Target/PowerPC/PPCFrameLowering.cpp
M       /usr/src/contrib/llvm/tools/lld/ELF/Arch/PPC64.cpp
M       /usr/src/crypto/openssl/crypto/armcap.c
M       /usr/src/lib/Makefile
M       /usr/src/lib/libkvm/kvm_powerpc.c
M       /usr/src/lib/libkvm/kvm_private.c
M       /usr/src/sys/arm64/arm64/identcpu.c
M       /usr/src/sys/arm64/arm64/mp_machdep.c
M       /usr/src/sys/boot/ofw/Makefile.inc
M       /usr/src/sys/boot/powerpc/Makefile.inc
M       /usr/src/sys/boot/powerpc/boot1.chrp/Makefile
M       /usr/src/sys/boot/powerpc/kboot/Makefile
M       /usr/src/sys/boot/uboot/Makefile.inc
M       /usr/src/sys/conf/kmod.mk
M       /usr/src/sys/conf/ldscript.powerpc
M       /usr/src/sys/ddb/db_main.c
M       /usr/src/sys/ddb/db_script.c
M       /usr/src/sys/kern/subr_pcpu.c
M       /usr/src/sys/powerpc/aim/mmu_oea64.c
M       /usr/src/sys/powerpc/ofw/ofw_machdep.c
M       /usr/src/sys/powerpc/powerpc/interrupt.c
M       /usr/src/sys/powerpc/powerpc/mp_machdep.c
M       /usr/src/sys/powerpc/powerpc/trap.c



# svnlite info /usr/ports/ | grep "Re[plv]"
Relative URL: ^/head
Repository Root: svn://svn0.us-west.freebsd.org/ports
Repository UUID: 35697150-7ecd-e111-bb59-0022644237b5
Revision: 450478
Last Changed Rev: 450478

# svnlite status /usr/ports
M       /usr/ports/Mk/bsd.port.mk
M       /usr/ports/Mk/bsd.qt.mk
M       /usr/ports/audio/liba52/Makefile
M       /usr/ports/base/gcc/Makefile
M       /usr/ports/base/gcc/distinfo
M       /usr/ports/base/gcc/pkg-plist
M       /usr/ports/devel/libunwind/Makefile
?       /usr/ports/devel/qt5/files/extrapatch-config.tests_unix_arch.test
M       /usr/ports/lang/gcc7/Makefile
M       /usr/ports/sysutils/cdrdao/Makefile
?       /usr/ports/www/qt5-webkit/files/patch-Source_JavaScriptCore_assembler_ARMAssembler.h
?       /usr/ports/www/qt5-webkit/files/patch-Source_JavaScriptCore_assembler_ARMv7Assembler.h
?       /usr/ports/www/qt5-webkit/files/patch-Source_JavaScriptCore_offlineasm_arm.rb
?       /usr/ports/www/qt5-webkit/files/patch-Source_WTF_wtf_Platform.h
?       /usr/ports/www/qt5-webkit/files/patch-Source_WebCore_platform_graphics_cpu_arm_filters_FELightingNEON.cpp
?       /usr/ports/www/qt5-webkit/files/patch-Source_bmalloc_bmalloc_BPlatform.h


# more /usr/local/etc/poudriere.d/make.conf
WANT_QT_VERBOSE_CONFIGURE=1
#
DEFAULT_VERSIONS+=perl5=5.24 gcc=7
#
# From a local /usr/ports/Mk/bsd.port.mk extension:
ALLOW_OPTIMIZATIONS_FOR_WITH_DEBUG=
#
.if ${.CURDIR:M*/devel/llvm*}
#WITH_DEBUG=
.elif ${.CURDIR:M*/www/qt5-webkit*}
#WITH_DEBUG=
.else
WITH_DEBUG=
.endif
MALLOC_PRODUCTION=
#
# The system clang for TARGET_ARCH=powerpc64
# and the system binutils (such as ld) do not
# (yet?) mix well. So for ports use the
# devel/binutils ones. (A problem before
# they are already in place!)
.if ${.CURDIR:M*/devel/binutils}
.elif ${.CURDIR:M*/math/gmp}
.elif ${.CURDIR:M*/math/mpfr}
.elif ${.CURDIR:M*/devel/bison}
.elif ${.CURDIR:M*/devel/gmake}
.elif ${.CURDIR:M*/devel/gettext-tools}
.elif ${.CURDIR:M*/print/indexinfo}
.elif ${.CURDIR:M*/devel/gettext-runtime}
.elif ${.CURDIR:M*/ports-mgmt/pkg}
.elif ${.CURDIR:M*/devel/m4}
.elif ${.CURDIR:M*/lang/perl5.*}
.elif ${.CURDIR:M*/print/texinfo}
.elif ${.CURDIR:M*/misc/help2man}
.elif ${.CURDIR:M*/devel/p5-Locale-gettext}
.else
USE_BINUTILS=
CFLAGS+=-B${LOCALBASE}/bin/
CXXFLAGS+=-B${LOCALBASE}/bin/
CPPFLAGS+=-B${LOCALBASE}/bin/
.endif

(In the future I will eliminate the explicit
?FLAGS assignments from my environment but
they were in use here.)


# svnlite diff /usr/ports/Mk/bsd.port.mk
Index: /usr/ports/Mk/bsd.port.mk
===================================================================
--- /usr/ports/Mk/bsd.port.mk	(revision 450478)
+++ /usr/ports/Mk/bsd.port.mk	(working copy)
@@ -1130,12 +1130,12 @@
 
 # Get the operating system type
 .if !defined(OPSYS)
-OPSYS!=	${UNAME} -s
+OPSYS!=	echo FreeBSD
 .endif
 _EXPORTED_VARS+=	OPSYS
 
 .if !defined(_OSRELEASE)
-_OSRELEASE!=	${UNAME} -r
+_OSRELEASE!=	echo 12.0-CURRENT
 .endif
 _EXPORTED_VARS+=	_OSRELEASE
 
@@ -1651,7 +1651,11 @@
 STRIP_CMD=	${TRUE}
 .endif
 DEBUG_FLAGS?=	-g
+.if defined(ALLOW_OPTIMIZATIONS_FOR_WITH_DEBUG)
+CFLAGS:=		${CFLAGS} ${DEBUG_FLAGS}
+.else
 CFLAGS:=		${CFLAGS:N-O*:N-fno-strict*} ${DEBUG_FLAGS}
+.endif
 .if defined(INSTALL_TARGET)
 INSTALL_TARGET:=	${INSTALL_TARGET:S/^install-strip$/install/g}
 .endif


(Note: I've had problems with some ${UNAME} use returning empty strings,
which is why I've used echo as a replacement in places. The real point
for the above is the ALLOW_OPTIMIZATIONS_FOR_WITH_DEBUG use.)

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



More information about the freebsd-ports mailing list