aboutsummaryrefslogtreecommitdiff
path: root/share
diff options
context:
space:
mode:
authorBrooks Davis <brooks@FreeBSD.org>2019-11-07 17:10:33 +0000
committerBrooks Davis <brooks@FreeBSD.org>2019-11-07 17:10:33 +0000
commit36712a94975f5bd0d26c85377283b49a2369c82f (patch)
treeec72d36f8d28eff4cc9107478af3e5666c8c91d7 /share
parent751d8d156a837f4c3ce23e66f749fd44db7f3745 (diff)
downloadsrc-36712a94975f5bd0d26c85377283b49a2369c82f.tar.gz
src-36712a94975f5bd0d26c85377283b49a2369c82f.zip
libcompat: build 32-bit rtld and ldd as part of "everything"
Alter bsd.compat.mk to set MACHINE and MACHINE_ARCH when included directly so MD paths in Makefiles work. In the process centralize setting them in LIBCOMPATWMAKEENV. Alter .PATH and CFLAGS settings in work when the Makefile is included. While here only support LIB32 on supported platforms rather than always enabling it and requiring users of MK_LIB32 to filter based TARGET/MACHINE_ARCH. The net effect of this change is to make Makefile.libcompat only build compatability libraries. Reviewed by: imp, kib Obtained from: CheriBSD (conceptually) Sponsored by: DARPA, AFRL Differential Revision: https://reviews.freebsd.org/D22251
Notes
Notes: svn path=/head/; revision=354449
Diffstat (limited to 'share')
-rw-r--r--share/mk/bsd.compat.mk24
-rw-r--r--share/mk/src.opts.mk8
2 files changed, 24 insertions, 8 deletions
diff --git a/share/mk/bsd.compat.mk b/share/mk/bsd.compat.mk
index 4d6c8aac56f1..fc9d62921d17 100644
--- a/share/mk/bsd.compat.mk
+++ b/share/mk/bsd.compat.mk
@@ -26,8 +26,9 @@ LIB32CPUFLAGS= -march=${COMPAT_CPUTYPE}
LIB32CPUFLAGS+= -target x86_64-unknown-freebsd13.0
.endif
LIB32CPUFLAGS+= -m32
-LIB32WMAKEENV= MACHINE=i386 MACHINE_ARCH=i386 \
- MACHINE_CPU="i686 mmx sse sse2"
+LIB32_MACHINE= i386
+LIB32_MACHINE_ARCH= i386
+LIB32WMAKEENV= MACHINE_CPU="i686 mmx sse sse2"
LIB32WMAKEFLAGS= \
AS="${XAS} --32" \
LD="${XLD} -m elf_i386_fbsd -L${LIBCOMPATTMP}/usr/lib32"
@@ -40,7 +41,8 @@ LIB32CPUFLAGS= -mcpu=powerpc
LIB32CPUFLAGS= -mcpu=${COMPAT_CPUTYPE}
.endif
LIB32CPUFLAGS+= -m32
-LIB32WMAKEENV= MACHINE=powerpc MACHINE_ARCH=powerpc
+LIB32_MACHINE= powerpc
+LIB32_MACHINE_ARCH= powerpc
LIB32WMAKEFLAGS= \
LD="${XLD} -m elf32ppc_fbsd"
@@ -61,7 +63,8 @@ LIB32CPUFLAGS= -target mips-unknown-freebsd13.0
.endif
.endif
LIB32CPUFLAGS+= -mabi=32
-LIB32WMAKEENV= MACHINE=mips MACHINE_ARCH=mips
+LIB32_MACHINE= mips
+LIB32_MACHINE_ARCH= mips
.if ${COMPAT_ARCH:Mmips64el*} != ""
LIB32WMAKEFLAGS= LD="${XLD} -m elf32ltsmip_fbsd"
.else
@@ -82,7 +85,9 @@ LIB32WMAKEFLAGS+= -DCOMPAT_32BIT
HAS_COMPAT=SOFT
LIBSOFTCFLAGS= -DCOMPAT_SOFTFP
LIBSOFTCPUFLAGS= -mfloat-abi=softfp
-LIBSOFTWMAKEENV= CPUTYPE=soft MACHINE=arm MACHINE_ARCH=${COMPAT_ARCH}
+LIBSOFT_MACHINE= arm
+LIBSOFT_MACHINE_ARCH= ${COMPAT_ARCH}
+LIBSOFTWMAKEENV= CPUTYPE=soft
LIBSOFTWMAKEFLAGS= -DCOMPAT_SOFTFP
.endif
@@ -114,8 +119,8 @@ _LIBCOMPAT:= ${WANT_COMPAT}
# Generic code for each type.
# Set defaults based on type.
libcompat= ${_LIBCOMPAT:tl}
-_LIBCOMPAT_MAKEVARS= _OBJTOP TMP CPUFLAGS CFLAGS CXXFLAGS WMAKEENV \
- WMAKEFLAGS WMAKE
+_LIBCOMPAT_MAKEVARS= _OBJTOP TMP CPUFLAGS CFLAGS CXXFLAGS \
+ _MACHINE _MACHINE_ARCH WMAKEENV WMAKEFLAGS WMAKE
.for _var in ${_LIBCOMPAT_MAKEVARS}
.if !empty(LIB${_LIBCOMPAT}${_var})
LIBCOMPAT${_var}?= ${LIB${_LIBCOMPAT}${_var}}
@@ -131,6 +136,9 @@ LIBCOMPATCFLAGS+= ${LIBCOMPATCPUFLAGS} \
--sysroot=${LIBCOMPATTMP} \
${BFLAGS}
+LIBCOMPATWMAKEENV+= MACHINE=${LIBCOMPAT_MACHINE}
+LIBCOMPATWMAKEENV+= MACHINE_ARCH=${LIBCOMPAT_MACHINE_ARCH}
+
# -B is needed to find /usr/lib32/crti.o for GCC and /usr/libsoft/crti.o for
# Clang/GCC.
LIBCOMPATCFLAGS+= -B${LIBCOMPATTMP}/usr/lib${libcompat}
@@ -139,6 +147,8 @@ LIBCOMPATCFLAGS+= -B${LIBCOMPATTMP}/usr/lib${libcompat}
LIBDIR_BASE:= /usr/lib${libcompat}
_LIB_OBJTOP= ${LIBCOMPAT_OBJTOP}
CFLAGS+= ${LIBCOMPATCFLAGS}
+MACHINE= ${LIBCOMPAT_MACHINE}
+MACHINE_ARCH= ${LIBCOMPAT_MACHINE_ARCH}
.endif
.endif
diff --git a/share/mk/src.opts.mk b/share/mk/src.opts.mk
index 171676dd52d3..d1558df0f6c4 100644
--- a/share/mk/src.opts.mk
+++ b/share/mk/src.opts.mk
@@ -126,7 +126,6 @@ __DEFAULT_YES_OPTIONS = \
LDNS \
LDNS_UTILS \
LEGACY_CONSOLE \
- LIB32 \
LIBPTHREAD \
LIBTHR \
LLVM_COV \
@@ -358,6 +357,13 @@ __DEFAULT_NO_OPTIONS+=GDB_LIBEXEC
.else
__DEFAULT_YES_OPTIONS+=GDB_LIBEXEC
.endif
+# LIB32 is supported on amd64, mips64, and powerpc64
+.if (${MACHINE_ARCH} == "amd64" || ${MACHINE_ARCH:Mmips64*} || \
+ ${MACHINE_ARCH} == "powerpc64")
+__DEFAULT_YES_OPTIONS+=LIB32
+.else
+BROKEN_OPTIONS+=LIB32
+.endif
# Only doing soft float API stuff on armv6 and armv7
.if ${__T} != "armv6" && ${__T} != "armv7"
BROKEN_OPTIONS+=LIBSOFT