File tree 18 files changed +43
-24
lines changed
18 files changed +43
-24
lines changed Original file line number Diff line number Diff line change @@ -197,7 +197,7 @@ _MAKE+= MK_META_MODE=no
197
197
_TARGET_ARCH = ${TARGET:S/pc98/i386/:S/arm64/aarch64/}
198
198
.elif !defined(TARGET) && defined(TARGET_ARCH) && \
199
199
${TARGET_ARCH} != ${MACHINE_ARCH}
200
- _TARGET = ${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb|hf )?/arm/:C/aarch64/arm64/:C/powerpc64/powerpc/:C/riscv64/riscv/}
200
+ _TARGET = ${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb)?/arm/:C/aarch64/arm64/:C/powerpc64/powerpc/:C/riscv64/riscv/}
201
201
.endif
202
202
.if defined(TARGET) && !defined(_TARGET)
203
203
_TARGET =${TARGET}
@@ -374,7 +374,7 @@ worlds:
374
374
.if make(universe) || make(universe_kernels) || make(tinderbox) || make(targets)
375
375
TARGETS? =amd64 arm arm64 i386 mips pc98 powerpc sparc64
376
376
_UNIVERSE_TARGETS = ${TARGETS}
377
- TARGET_ARCHES_arm? = arm armeb armv6 armv6hf
377
+ TARGET_ARCHES_arm? = arm armeb armv6
378
378
TARGET_ARCHES_arm64? = aarch64
379
379
TARGET_ARCHES_mips? = mipsel mips mips64el mips64 mipsn32
380
380
TARGET_ARCHES_powerpc? = powerpc powerpc64
Original file line number Diff line number Diff line change @@ -219,7 +219,6 @@ KNOWN_ARCHES?= aarch64/arm64 \
219
219
arm \
220
220
armeb/arm \
221
221
armv6/arm \
222
- armv6hf/arm \
223
222
i386 \
224
223
i386/pc98 \
225
224
mips \
Original file line number Diff line number Diff line change @@ -31,6 +31,14 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 11.x IS SLOW:
31
31
disable the most expensive debugging functionality run
32
32
"ln -s 'abort:false,junk:false' /etc/malloc.conf".)
33
33
34
+ 20160517:
35
+ The armv6 port now defaults to hard float ABI. Limited support
36
+ for running both hardfloat and soft float on the same system
37
+ is available using the libraries installed with -DWITH_LIBSOFT.
38
+ This has only been tested as an upgrade path for installworld
39
+ and packages may fail or need manual intervention to run. New
40
+ packages will be needed.
41
+
34
42
20160510:
35
43
Kernel modules compiled outside of a kernel build now default to
36
44
installing to /boot/modules instead of /boot/kernel. Many kernel
Original file line number Diff line number Diff line change 7
7
VERSION= "2.17.50 [FreeBSD] 2007-07-03"
8
8
9
9
.if defined(TARGET_ARCH)
10
- TARGET_CPUARCH=${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb|hf )?/arm/:C/powerpc64/powerpc/}
10
+ TARGET_CPUARCH=${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb)?/arm/:C/powerpc64/powerpc/}
11
11
.else
12
12
TARGET_CPUARCH=${MACHINE_CPUARCH}
13
13
.endif
Original file line number Diff line number Diff line change 4
4
# MACHINE_CPUARCH, but there's no easy way to export make functions...
5
5
6
6
.if defined(TARGET_ARCH)
7
- TARGET_CPUARCH=${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb|hf )?/arm/:C/powerpc64/powerpc/}
7
+ TARGET_CPUARCH=${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb)?/arm/:C/powerpc64/powerpc/}
8
8
.else
9
9
TARGET_CPUARCH=${MACHINE_CPUARCH}
10
10
.endif
Original file line number Diff line number Diff line change @@ -23,7 +23,7 @@ OBJ_RL= ${OBJ_ROOT}/../lib/libreadline/readline
23
23
# MACHINE_CPUARCH, but there's no easy way to export make functions...
24
24
25
25
.if defined(TARGET_ARCH)
26
- TARGET_CPUARCH =${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb|hf )?/arm/:C/powerpc64/powerpc/}
26
+ TARGET_CPUARCH =${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb)?/arm/:C/powerpc64/powerpc/}
27
27
.else
28
28
TARGET_CPUARCH =${MACHINE_CPUARCH}
29
29
.endif
Original file line number Diff line number Diff line change 4
4
# MACHINE_CPUARCH, but there's no easy way to export make functions...
5
5
6
6
.if defined(TARGET_ARCH)
7
- TARGET_CPUARCH =${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb|hf )?/arm/:C/powerpc64/powerpc/}
7
+ TARGET_CPUARCH =${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb)?/arm/:C/powerpc64/powerpc/}
8
8
.else
9
9
TARGET_CPUARCH =${MACHINE_CPUARCH}
10
10
.endif
Original file line number Diff line number Diff line change @@ -21,16 +21,19 @@ CFLAGS+= -fno-strict-aliasing
21
21
TARGET_ARCH? = ${MACHINE_ARCH}
22
22
BUILD_ARCH? = ${MACHINE_ARCH}
23
23
24
- .if ${TARGET_ARCH :Marm* hf* } != ""
24
+ # Armv6 uses hard float abi, unless the CPUTYPE has soft in it.
25
+ # arm (for armv4 and armv5 CPUs) always uses the soft float ABI.
26
+ # For all other targets, we stick with 'unknown'.
27
+ .if ${TARGET_ARCH :Marmv6* } && (!defined(CPUTYPE) || ${CPUTYPE:M* soft* } == "")
25
28
TARGET_ABI = gnueabihf
26
- .elif ${TARGET_ARCH :Marm* } != ""
29
+ .elif ${TARGET_ARCH :Marm* }
27
30
TARGET_ABI = gnueabi
28
31
.else
29
32
TARGET_ABI = unknown
30
33
.endif
31
34
32
- TARGET_TRIPLE? = ${TARGET_ARCH:C/amd64/x86_64/:C/armv6hf/armv6/:C/ arm64/aarch64/}-${TARGET_ABI}-freebsd11.0
33
- BUILD_TRIPLE? = ${BUILD_ARCH:C/amd64/x86_64/:C/armv6hf/armv6/:C/ arm64/aarch64/}-unknown-freebsd11.0
35
+ TARGET_TRIPLE? = ${TARGET_ARCH:C/amd64/x86_64/:C/arm64/aarch64/}-${TARGET_ABI}-freebsd11.0
36
+ BUILD_TRIPLE? = ${BUILD_ARCH:C/amd64/x86_64/:C/arm64/aarch64/}-unknown-freebsd11.0
34
37
CFLAGS+ = -DLLVM_DEFAULT_TARGET_TRIPLE=\"${TARGET_TRIPLE}\" \
35
38
-DLLVM_HOST_TRIPLE=\"${BUILD_TRIPLE}\" \
36
39
-DDEFAULT_SYSROOT=\"${TOOLS_PREFIX}\"
Original file line number Diff line number Diff line change @@ -105,7 +105,8 @@ NOASM=
105
105
.include "${LIBC_SRCTOP}/rpc/Makefile.inc"
106
106
.include "${LIBC_SRCTOP}/uuid/Makefile.inc"
107
107
.include "${LIBC_SRCTOP}/xdr/Makefile.inc"
108
- .if (${LIBC_ARCH} == "arm" && ${MACHINE_ARCH} != "armv6hf") ||\
108
+ .if (${LIBC_ARCH} == "arm" && \
109
+ (${MACHINE_ARCH:Marmv6*} == "" || (defined(CPUTYPE) && ${CPUTYPE:M*soft*}))) || \
109
110
${LIBC_ARCH} == "mips"
110
111
.include "${LIBC_SRCTOP}/softfloat/Makefile.inc"
111
112
.endif
Original file line number Diff line number Diff line change @@ -11,7 +11,7 @@ SYM_MAPS+=${LIBC_SRCTOP}/arm/Symbol.map
11
11
12
12
.include "${LIBC_SRCTOP}/arm/aeabi/Makefile.inc"
13
13
14
- .if ${MACHINE_ARCH :Marm * hf * } != ""
14
+ .if ${MACHINE_ARCH :Marmv6 * } && (!defined(CPUTYPE) || ${CPUTYPE:M * soft * } == "")
15
15
SYM_MAPS+ =${LIBC_SRCTOP}/arm/Symbol_vfp.map
16
16
.endif
17
17
Original file line number Diff line number Diff line change 5
5
SRCS+ = aeabi_atexit.c \
6
6
aeabi_unwind_cpp.c \
7
7
aeabi_unwind_exidx.c
8
- .if ${MACHINE_ARCH :Marm* hf* } == ""
8
+ .if (${MACHINE_ARCH :Marmv6* } && defined(CPUTYPE) && ${CPUTYPE:M* soft* } != "") || \
9
+ ${MACHINE_ARCH: Marmv6* } == " "
9
10
SRCS+ = aeabi_asm_double.S \
10
11
aeabi_asm_float.S \
11
12
aeabi_double.c \
12
13
aeabi_float.c
13
14
.endif
14
- .if ${MACHINE_ARCH :Marmv6* }
15
+ .if ${MACHINE_ARCH :Marmv6* } && (!defined(CPUTYPE) || ${CPUTYPE:M * soft * } == "")
15
16
SRCS+ = aeabi_vfp_double.S \
16
17
aeabi_vfp_float.S
17
18
.endif
Original file line number Diff line number Diff line change @@ -7,7 +7,7 @@ SRCS+= _ctx_start.S _setjmp.S _set_tp.c alloca.S fabs.c \
7
7
arm_initfini.c \
8
8
trivial-getcontextx.c
9
9
10
- .if ${MACHINE_ARCH} == "armv6hf"
10
+ .if ${MACHINE_ARCH :Marmv6 * } && (!defined(CPUTYPE) || ${CPUTYPE:M * soft * } == "")
11
11
SRCS+ = fpgetmask_vfp.c fpgetround_vfp.c fpgetsticky_vfp.c fpsetmask_vfp.c \
12
12
fpsetround_vfp.c fpsetsticky_vfp.c
13
13
.endif
Original file line number Diff line number Diff line change @@ -199,9 +199,10 @@ SRCF+= stdatomic
199
199
.endif
200
200
201
201
.for file in ${SRCF}
202
- . if ${MACHINE_ARCH :Marm* hf* } != "" && exists(${CRTSRC}/${CRTARCH}/${file}vfp.S)
202
+ .if ${MACHINE_ARCH :Marmv6* } && (!defined(CPUTYPE) || ${CPUTYPE:M* soft* } == "") && \
203
+ exists(${CRTSRC}/${CRTARCH}/${file}vfp.S)
203
204
SRCS+ = ${file}vfp.S
204
- . elif !(${MACHINE_CPUARCH} == "arm" && ${MACHINE_ARCH :Marm * hf * } == "") && exists(${CRTSRC}/${CRTARCH}/${file}.S)
205
+ . elif exists(${CRTSRC}/${CRTARCH}/${file}.S)
205
206
SRCS+ = ${file}.S
206
207
. else
207
208
SRCS+ = ${file}.c
Original file line number Diff line number Diff line change 3
3
LDBL_PREC = 53
4
4
SYM_MAPS += ${.CURDIR}/arm/Symbol.map
5
5
6
- .if ${TARGET_ARCH} == "armv6 "
6
+ .if ${MACHINE_ARCH :Marmv6 * } && defined(CPUTYPE) && ${CPUTYPE:M * soft * } != " "
7
7
ARCH_SRCS = fenv-softfp.c fenv-vfp.c
8
8
.endif
9
9
Original file line number Diff line number Diff line change 28
28
29
29
#define FENV_MANGLE (x ) __vfp_ ##x
30
30
#include "fenv-mangle.h"
31
- #define __ARM_PCS_VFP
31
+ #ifndef __ARM_PCS_VFP
32
+ #define __ARM_PCS_VFP 1
33
+ #endif
32
34
#include "fenv.c"
33
35
Original file line number Diff line number Diff line change @@ -309,14 +309,18 @@ MACHINE_CPU += arm
309
309
. if ${MACHINE_ARCH :Marmv6* } != ""
310
310
MACHINE_CPU += armv6
311
311
. endif
312
- # armv6 is a hybrid. It uses the softfp ABI, but doesn't emulate
312
+ # armv6 is a hybrid. It can use the softfp ABI, but doesn't emulate
313
313
# floating point in the general case, so don't define softfp for
314
314
# it at this time. arm and armeb are pure softfp, so define it
315
315
# for them.
316
316
. if ${MACHINE_ARCH :Marmv6* } == ""
317
317
MACHINE_CPU += softfp
318
318
. endif
319
- .if ${MACHINE_ARCH} == "armv6"
319
+ # Normally armv6 is hard float ABI from FreeBSD 11 onwards. However
320
+ # when CPUTYPE has 'soft' in it, we use the soft-float ABI to allow
321
+ # building of soft-float ABI libraries. In this case, we have to
322
+ # add the -mfloat-abi=softfp to force that.
323
+ .if ${MACHINE_ARCH :Marmv6* } && defined(CPUTYPE) && ${CPUTYPE:M* soft* } != ""
320
324
# Needs to be CFLAGS not _CPUCFLAGS because it's needed for the ABI
321
325
# not a nice optimization.
322
326
CFLAGS += -mfloat-abi=softfp
Original file line number Diff line number Diff line change @@ -43,7 +43,7 @@ OBJROOT:= ${OBJROOT:H:tA}/${OBJROOT:T}
43
43
.endif
44
44
45
45
# from src/Makefile (for universe)
46
- TARGET_ARCHES_arm? = arm armeb armv6 armv6hf
46
+ TARGET_ARCHES_arm? = arm armeb armv6
47
47
TARGET_ARCHES_arm64? = aarch64
48
48
TARGET_ARCHES_mips? = mipsel mips mips64el mips64 mipsn32 mipsn32el
49
49
TARGET_ARCHES_powerpc? = powerpc powerpc64
Original file line number Diff line number Diff line change @@ -13,7 +13,7 @@ unix ?= We run FreeBSD, not UNIX.
13
13
# and/or endian. This is called MACHINE_CPU in NetBSD, but that's used
14
14
# for something different in FreeBSD.
15
15
#
16
- MACHINE_CPUARCH =${MACHINE_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb|hf )?/arm/:C/powerpc64/powerpc/:C/riscv64/riscv/}
16
+ MACHINE_CPUARCH =${MACHINE_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb)?/arm/:C/powerpc64/powerpc/:C/riscv64/riscv/}
17
17
.endif
18
18
19
19
You can’t perform that action at this time.
0 commit comments