svn commit: r255062 - in projects/arm_eabi_vfp: . contrib/binutils/bfd gnu/usr.bin/binutils gnu/usr.bin/cc gnu/usr.bin/gdb gnu/usr.bin/gdb/libgdb lib/clang lib/libc share/mk usr.bin/xlint

Andrew Turner andrew at FreeBSD.org
Fri Aug 30 08:29:26 UTC 2013


Author: andrew
Date: Fri Aug 30 08:29:23 2013
New Revision: 255062
URL: http://svnweb.freebsd.org/changeset/base/255062

Log:
  Add a new TARGET_ARCH value for ARM hard-float, armv6hf. It is only
  buildable with clang as gcc is too old to build this using the VFP
  registers. Newer versions of gcc added this after it changed to GPLv3.

Modified:
  projects/arm_eabi_vfp/Makefile
  projects/arm_eabi_vfp/Makefile.inc1
  projects/arm_eabi_vfp/contrib/binutils/bfd/config.bfd
  projects/arm_eabi_vfp/gnu/usr.bin/binutils/Makefile.inc0
  projects/arm_eabi_vfp/gnu/usr.bin/cc/Makefile.tgt
  projects/arm_eabi_vfp/gnu/usr.bin/gdb/Makefile.inc
  projects/arm_eabi_vfp/gnu/usr.bin/gdb/libgdb/Makefile
  projects/arm_eabi_vfp/lib/clang/clang.build.mk
  projects/arm_eabi_vfp/lib/libc/Makefile
  projects/arm_eabi_vfp/share/mk/bsd.endian.mk
  projects/arm_eabi_vfp/share/mk/bsd.own.mk
  projects/arm_eabi_vfp/share/mk/sys.mk
  projects/arm_eabi_vfp/usr.bin/xlint/Makefile.inc

Modified: projects/arm_eabi_vfp/Makefile
==============================================================================
--- projects/arm_eabi_vfp/Makefile	Fri Aug 30 08:25:07 2013	(r255061)
+++ projects/arm_eabi_vfp/Makefile	Fri Aug 30 08:29:23 2013	(r255062)
@@ -164,7 +164,7 @@ _MAKE=	PATH=${PATH} ${SUB_MAKE} -f Makef
 _TARGET_ARCH=	${TARGET:S/pc98/i386/}
 .elif !defined(TARGET) && defined(TARGET_ARCH) && \
     ${TARGET_ARCH} != ${MACHINE_ARCH}
-_TARGET=		${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb)?/arm/}
+_TARGET=		${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb|hf)?/arm/}
 .endif
 # Legacy names, for another transition period mips:mips(n32|64)?eb -> mips:mips\1
 .if defined(TARGET) && defined(TARGET_ARCH) && \
@@ -374,7 +374,7 @@ kernel-toolchains:
 #
 .if make(universe) || make(universe_kernels) || make(tinderbox) || make(targets)
 TARGETS?=amd64 arm i386 ia64 mips pc98 powerpc sparc64
-TARGET_ARCHES_arm?=	arm armeb armv6 armv6eb
+TARGET_ARCHES_arm?=	arm armeb armv6 armv6eb armv6hf
 TARGET_ARCHES_mips?=	mipsel mips mips64el mips64 mipsn32
 TARGET_ARCHES_powerpc?=	powerpc powerpc64
 TARGET_ARCHES_pc98?=	i386

Modified: projects/arm_eabi_vfp/Makefile.inc1
==============================================================================
--- projects/arm_eabi_vfp/Makefile.inc1	Fri Aug 30 08:25:07 2013	(r255061)
+++ projects/arm_eabi_vfp/Makefile.inc1	Fri Aug 30 08:29:23 2013	(r255062)
@@ -132,7 +132,7 @@ VERSION!=	uname -srp
 VERSION+=	${OSRELDATE}
 .endif
 
-KNOWN_ARCHES?=	amd64 arm armeb/arm armv6/arm armv6eb/arm i386 i386/pc98 ia64 mips mipsel/mips mips64el/mips mips64/mips mipsn32el/mips mipsn32/mips powerpc powerpc64/powerpc sparc64
+KNOWN_ARCHES?=	amd64 arm armeb/arm armv6/arm armv6eb/arm armv6hf/arm i386 i386/pc98 ia64 mips mipsel/mips mips64el/mips mips64/mips mipsn32el/mips mipsn32/mips powerpc powerpc64/powerpc sparc64
 .if ${TARGET} == ${TARGET_ARCH}
 _t=		${TARGET}
 .else
@@ -326,6 +326,8 @@ XFLAGS+=	-B${WORLDTMP}/usr/bin
 .if (${TARGET_ARCH} == "arm" || ${TARGET_ARCH} == "armv6") && \
 ${MK_ARM_EABI} != "no"
 TARGET_ABI=	gnueabi
+.elif ${TARGET_ARCH} == "armv6hf"
+TARGET_ABI=	gnueabihf
 .else
 TARGET_ABI=	unknown
 .endif

Modified: projects/arm_eabi_vfp/contrib/binutils/bfd/config.bfd
==============================================================================
--- projects/arm_eabi_vfp/contrib/binutils/bfd/config.bfd	Fri Aug 30 08:25:07 2013	(r255061)
+++ projects/arm_eabi_vfp/contrib/binutils/bfd/config.bfd	Fri Aug 30 08:29:23 2013	(r255062)
@@ -281,7 +281,7 @@ case "${targ}" in
     targ_defvec=bfd_elf32_bigarm_vec
     targ_selvecs=bfd_elf32_littlearm_vec
     ;;
-  armv6-*-freebsd*)
+  armv6-*-freebsd* | armv6hf-*-freebsd*)
     targ_defvec=bfd_elf32_littlearm_vec
     targ_selvecs=bfd_elf32_bigarm_vec
     ;;

Modified: projects/arm_eabi_vfp/gnu/usr.bin/binutils/Makefile.inc0
==============================================================================
--- projects/arm_eabi_vfp/gnu/usr.bin/binutils/Makefile.inc0	Fri Aug 30 08:25:07 2013	(r255061)
+++ projects/arm_eabi_vfp/gnu/usr.bin/binutils/Makefile.inc0	Fri Aug 30 08:29:23 2013	(r255062)
@@ -7,7 +7,7 @@
 VERSION=	"2.17.50 [FreeBSD] 2007-07-03"
 
 .if defined(TARGET_ARCH)
-TARGET_CPUARCH=${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb)?/arm/:C/powerpc64/powerpc/}
+TARGET_CPUARCH=${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb|hf)?/arm/:C/powerpc64/powerpc/}
 .else
 TARGET_CPUARCH=${MACHINE_CPUARCH}
 .endif

Modified: projects/arm_eabi_vfp/gnu/usr.bin/cc/Makefile.tgt
==============================================================================
--- projects/arm_eabi_vfp/gnu/usr.bin/cc/Makefile.tgt	Fri Aug 30 08:25:07 2013	(r255061)
+++ projects/arm_eabi_vfp/gnu/usr.bin/cc/Makefile.tgt	Fri Aug 30 08:29:23 2013	(r255062)
@@ -4,7 +4,7 @@
 # MACHINE_CPUARCH, but there's no easy way to export make functions...
 
 .if defined(TARGET_ARCH)
-TARGET_CPUARCH=${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb)?/arm/:C/powerpc64/powerpc/}
+TARGET_CPUARCH=${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb|hf)?/arm/:C/powerpc64/powerpc/}
 .else
 TARGET_CPUARCH=${MACHINE_CPUARCH}
 .endif

Modified: projects/arm_eabi_vfp/gnu/usr.bin/gdb/Makefile.inc
==============================================================================
--- projects/arm_eabi_vfp/gnu/usr.bin/gdb/Makefile.inc	Fri Aug 30 08:25:07 2013	(r255061)
+++ projects/arm_eabi_vfp/gnu/usr.bin/gdb/Makefile.inc	Fri Aug 30 08:29:23 2013	(r255062)
@@ -20,7 +20,7 @@ OBJ_GDB= ${OBJ_ROOT}/gdb
 # MACHINE_CPUARCH, but there's no easy way to export make functions...
 
 .if defined(TARGET_ARCH)
-TARGET_CPUARCH=${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb)?/arm/:C/powerpc64/powerpc/}
+TARGET_CPUARCH=${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb|hf)?/arm/:C/powerpc64/powerpc/}
 .else
 TARGET_CPUARCH=${MACHINE_CPUARCH}
 .endif

Modified: projects/arm_eabi_vfp/gnu/usr.bin/gdb/libgdb/Makefile
==============================================================================
--- projects/arm_eabi_vfp/gnu/usr.bin/gdb/libgdb/Makefile	Fri Aug 30 08:25:07 2013	(r255061)
+++ projects/arm_eabi_vfp/gnu/usr.bin/gdb/libgdb/Makefile	Fri Aug 30 08:29:23 2013	(r255062)
@@ -4,7 +4,7 @@
 # MACHINE_CPUARCH, but there's no easy way to export make functions...
 
 .if defined(TARGET_ARCH)
-TARGET_CPUARCH=${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb)?/arm/:C/powerpc64/powerpc/}
+TARGET_CPUARCH=${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb|hf)?/arm/:C/powerpc64/powerpc/}
 .else
 TARGET_CPUARCH=${MACHINE_CPUARCH}
 .endif

Modified: projects/arm_eabi_vfp/lib/clang/clang.build.mk
==============================================================================
--- projects/arm_eabi_vfp/lib/clang/clang.build.mk	Fri Aug 30 08:25:07 2013	(r255061)
+++ projects/arm_eabi_vfp/lib/clang/clang.build.mk	Fri Aug 30 08:29:23 2013	(r255062)
@@ -23,12 +23,14 @@ BUILD_ARCH?=	${MACHINE_ARCH}
 .if (${TARGET_ARCH} == "arm" || ${TARGET_ARCH} == "armv6") && \
     ${MK_ARM_EABI} != "no"
 TARGET_ABI=	gnueabi
+.elif ${TARGET_ARCH} == "armv6hf"
+TARGET_ABI=	gnueabihf
 .else
 TARGET_ABI=	unknown
 .endif
 
-TARGET_TRIPLE?=	${TARGET_ARCH:C/amd64/x86_64/}-${TARGET_ABI}-freebsd10.0
-BUILD_TRIPLE?=	${BUILD_ARCH:C/amd64/x86_64/}-unknown-freebsd10.0
+TARGET_TRIPLE?=	${TARGET_ARCH:C/amd64/x86_64/:C/armv6hf/armv6/}-${TARGET_ABI}-freebsd10.0
+BUILD_TRIPLE?=	${BUILD_ARCH:C/amd64/x86_64/:C/armv6hf/armv6/}-unknown-freebsd10.0
 CFLAGS+=	-DLLVM_DEFAULT_TARGET_TRIPLE=\"${TARGET_TRIPLE}\" \
 		-DLLVM_HOST_TRIPLE=\"${BUILD_TRIPLE}\" \
 		-DDEFAULT_SYSROOT=\"${TOOLS_PREFIX}\"

Modified: projects/arm_eabi_vfp/lib/libc/Makefile
==============================================================================
--- projects/arm_eabi_vfp/lib/libc/Makefile	Fri Aug 30 08:25:07 2013	(r255061)
+++ projects/arm_eabi_vfp/lib/libc/Makefile	Fri Aug 30 08:29:23 2013	(r255062)
@@ -93,7 +93,8 @@ NOASM=
 .include "${.CURDIR}/rpc/Makefile.inc"
 .include "${.CURDIR}/uuid/Makefile.inc"
 .include "${.CURDIR}/xdr/Makefile.inc"
-.if ${LIBC_ARCH} == "arm" || ${LIBC_ARCH} == "mips"
+.if (${LIBC_ARCH} == "arm" && ${MACHINE_ARCH} != "armv6hf") ||\
+     ${LIBC_ARCH} == "mips"
 .include "${.CURDIR}/softfloat/Makefile.inc"
 .endif
 .if ${MK_NIS} != "no"

Modified: projects/arm_eabi_vfp/share/mk/bsd.endian.mk
==============================================================================
--- projects/arm_eabi_vfp/share/mk/bsd.endian.mk	Fri Aug 30 08:25:07 2013	(r255061)
+++ projects/arm_eabi_vfp/share/mk/bsd.endian.mk	Fri Aug 30 08:29:23 2013	(r255062)
@@ -5,6 +5,7 @@
     ${MACHINE_ARCH} == "ia64" || \
     ${MACHINE_ARCH} == "arm"  || \
     ${MACHINE_ARCH} == "armv6"  || \
+    ${MACHINE_ARCH} == "armv6hf"  || \
     ${MACHINE_ARCH:Mmips*el} != ""
 TARGET_ENDIANNESS= 1234
 .elif ${MACHINE_ARCH} == "powerpc" || \

Modified: projects/arm_eabi_vfp/share/mk/bsd.own.mk
==============================================================================
--- projects/arm_eabi_vfp/share/mk/bsd.own.mk	Fri Aug 30 08:25:07 2013	(r255061)
+++ projects/arm_eabi_vfp/share/mk/bsd.own.mk	Fri Aug 30 08:29:23 2013	(r255062)
@@ -284,7 +284,6 @@ __DEFAULT_YES_OPTIONS = \
     FP_LIBC \
     FREEBSD_UPDATE \
     GAMES \
-    GCC \
     GCOV \
     GDB \
     GNU \
@@ -405,7 +404,7 @@ __T=${MACHINE_ARCH}
 # Clang is only for x86, powerpc and little-endian arm right now, by default.
 .if ${__T} == "amd64" || ${__T} == "i386" || ${__T:Mpowerpc*}
 __DEFAULT_YES_OPTIONS+=CLANG CLANG_FULL
-.elif ${__T} == "arm" || ${__T} == "armv6"
+.elif ${__T} == "arm" || ${__T} == "armv6" || ${__T} == "armv6hf"
 __DEFAULT_YES_OPTIONS+=CLANG
 # GCC is unable to build the full clang on arm, disable it by default.
 __DEFAULT_NO_OPTIONS+=CLANG_FULL
@@ -414,11 +413,17 @@ __DEFAULT_NO_OPTIONS+=CLANG CLANG_FULL
 .endif
 # Clang the default system compiler only on little-endian arm and x86.
 .if ${__T} == "amd64" || ${__T} == "arm" || ${__T} == "armv6" || \
-    ${__T} == "i386"
+    ${__T} == "armv6hf" || ${__T} == "i386"
 __DEFAULT_YES_OPTIONS+=CLANG_IS_CC
 .else
 __DEFAULT_NO_OPTIONS+=CLANG_IS_CC
 .endif
+# GCC has no support for armv6hf
+.if ${__T} == "armv6hf"
+__DEFAULT_NO_OPTIONS+=GCC
+.else
+__DEFAULT_YES_OPTIONS+=GCC
+.endif
 # FDT is needed only for arm, mips and powerpc
 .if ${__T:Marm*} || ${__T:Mpowerpc*} || ${__T:Mmips*}
 __DEFAULT_YES_OPTIONS+=FDT

Modified: projects/arm_eabi_vfp/share/mk/sys.mk
==============================================================================
--- projects/arm_eabi_vfp/share/mk/sys.mk	Fri Aug 30 08:25:07 2013	(r255061)
+++ projects/arm_eabi_vfp/share/mk/sys.mk	Fri Aug 30 08:29:23 2013	(r255062)
@@ -13,7 +13,7 @@ unix		?=	We run FreeBSD, not UNIX.
 # and/or endian.  This is called MACHINE_CPU in NetBSD, but that's used
 # for something different in FreeBSD.
 #
-MACHINE_CPUARCH=${MACHINE_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb)?/arm/:C/powerpc64/powerpc/}
+MACHINE_CPUARCH=${MACHINE_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb|hf)?/arm/:C/powerpc64/powerpc/}
 .endif
 
 # Set any local definitions first. Place this early, but it needs

Modified: projects/arm_eabi_vfp/usr.bin/xlint/Makefile.inc
==============================================================================
--- projects/arm_eabi_vfp/usr.bin/xlint/Makefile.inc	Fri Aug 30 08:25:07 2013	(r255061)
+++ projects/arm_eabi_vfp/usr.bin/xlint/Makefile.inc	Fri Aug 30 08:29:23 2013	(r255062)
@@ -8,7 +8,7 @@ WARNS?=		0
 # These assignments duplicate much of the functionality of
 # MACHINE_CPUARCH, but there's no easy way to export make functions...
 .if defined(TARGET_ARCH)
-TARGET_CPUARCH=	${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb)?/arm/}
+TARGET_CPUARCH=	${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb|hf)?/arm/}
 .else
 TARGET_CPUARCH=	${MACHINE_CPUARCH}
 TARGET_ARCH=	${MACHINE_ARCH}


More information about the svn-src-projects mailing list