Page MenuHomeFreeBSD

D39744.diff
No OneTemporary

D39744.diff

diff --git a/share/mk/local.dirdeps.mk b/share/mk/local.dirdeps.mk
--- a/share/mk/local.dirdeps.mk
+++ b/share/mk/local.dirdeps.mk
@@ -60,7 +60,15 @@
rm -rf ${OBJTOP}/tmp
beforedirdeps: cleanup_worldtmp
.endif
-.endif
+
+# pseudo option for building host tools on old or non-FreeBSD host
+# allows us to leverage Makefile.depend.options with
+# DIRDEPS_OPTIONS = host_egacy
+# dirdeps-options.mk will qualify with ${DEP_MACHINE} (and others)
+# before looking at the bare option.
+MK_host_egacy.host= ${MK_host_egacy}
+
+.endif # !target(_DIRDEP_USE)
# reset this each time
DIRDEPS_FILTER.xtras=
@@ -69,6 +77,7 @@
.endif
.if ${DEP_MACHINE} != "host"
+MK_host_egacy.${DEP_MACHINE}= no
# this is how we can handle optional dependencies
.if ${DEP_RELDIR} == "lib/libc"
diff --git a/share/mk/local.init.mk b/share/mk/local.init.mk
--- a/share/mk/local.init.mk
+++ b/share/mk/local.init.mk
@@ -19,7 +19,10 @@
CXXFLAGS_LAST+= --sysroot=${SYSROOT}
LDADD+= --sysroot=${SYSROOT}
.elif ${MK_STAGING} == "yes"
-CFLAGS+= -isystem ${STAGE_INCLUDEDIR}
+ISYSTEM?= ${STAGE_INCLUDEDIR}
+# no space after -isystem makes it easier to
+# grep the flag out of command lines (in meta files) to see its value.
+CFLAGS+= -isystem${ISYSTEM}
# XXX: May be needed for GCC to build with libc++ rather than libstdc++. See Makefile.inc1
#CXXFLAGS+= -std=gnu++11
#LDADD+= -L${STAGE_LIBDIR}/libc++
diff --git a/share/mk/local.sys.mk b/share/mk/local.sys.mk
--- a/share/mk/local.sys.mk
+++ b/share/mk/local.sys.mk
@@ -79,6 +79,14 @@
.endif
.endif
+.if ${MK_DIRDEPS_BUILD} == "yes"
+.if ${.MAKE.OS} != "FreeBSD" || ${_HOST_OSREL:R} < ${OS_REVISION:R}
+# a pseudo option to indicate we need libegacy for host
+MK_host_egacy= yes
+.endif
+.endif
+MK_host_egacy?= no
+
.if ${.MAKE.MODE:Mmeta*} != ""
# we can afford to use cookies to prevent some targets
# re-running needlessly but only when using filemon.
diff --git a/share/mk/src.init.linux.mk b/share/mk/src.init.linux.mk
new file mode 100644
--- /dev/null
+++ b/share/mk/src.init.linux.mk
@@ -0,0 +1,15 @@
+# We want to build some host tools (eg makefs, mkimg) for Linux
+# This only gets included during DIRDEPS_BUILD when MACHINE is "host"
+
+CFLAGS+= -I${SRCTOP}/tools/build/cross-build/include/linux
+
+WARNS= 0
+
+.ifdef PROG
+LOCAL_LIBRARIES+= bsd egacy
+LIBADD+= egacy m
+.endif
+
+# Bring in the full GNU namespace
+CFLAGS+= -D_GNU_SOURCE
+
diff --git a/share/mk/src.init.mk b/share/mk/src.init.mk
--- a/share/mk/src.init.mk
+++ b/share/mk/src.init.mk
@@ -8,4 +8,35 @@
${_+_}@env BUILDENV_DIR=${.CURDIR} ${MAKE} -C ${SRCTOP} buildenv
.endif
+.if ${MACHINE:Nhost*} == ""
+.if ${.MAKE.OS} != "FreeBSD"
+# these won't work anyway - see tools/build/mk/Makefile.boot.pre
+MK_DEBUG_FILES= no
+MK_MAN= no
+MK_PIE= no
+MK_RETPOLINE= no
+NO_SHARED= no
+MK_TESTS= no
+
+.-include <src.init.${.MAKE.OS:tl}.mk>
+
+CFLAGS+= \
+ -DHAVE_NBTOOL_CONFIG_H=1 \
+ -I${SRCTOP}/tools/build/cross-build/include/common \
+
+.endif
+
+.if ${MK_host_egacy} == "yes"
+.ifdef PROG
+LOCAL_LIBRARIES+= egacy
+LIBADD+= egacy
+.endif
+.endif
+
+.if ${MK_STAGING} == "yes"
+ISYSTEM= /usr/include
+CFLAGS+= -I${STAGE_INCLUDEDIR}
+.endif
+.endif
+
.endif # !target(__<src.init.mk>__)

File Metadata

Mime Type
text/plain
Expires
Sat, Nov 16, 9:32 PM (21 h, 41 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
14664639
Default Alt Text
D39744.diff (3 KB)

Event Timeline