Page MenuHomeFreeBSD

D39744.id120821.diff
No OneTemporary

D39744.id120821.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++
@@ -38,4 +41,13 @@
.-include "src.init.mk"
.-include <site.init.mk>
.-include "${.CURDIR}/local.init.mk"
+
+.if !empty(HAVE_FLAGS)
+# some makefiles (usually for things that might be built for host)
+# need -DHAVE_* flags to indicate supported features.
+# By putting such flags in HAVE_FLAGS, the noise below will
+# turn them into -DHAVE_WHATEVER=1 unless one of the makefiles
+# above set HAVE_WHATEVER=0
+CFLAGS+= ${HAVE_FLAGS:U:@F@-D${F}=${$F:U1}@}
+.endif
.endif
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,34 @@
+# We want to build some host tools (eg makefs, mkimg) for Linux
+
+.if ${MACHINE:Nhost*} == ""
+
+CFLAGS+= -I${SRCTOP}/tools/build/cross-build/include/linux
+
+WARNS= 0
+
+CFLAGS+= -DEFTYPE=EINVAL
+
+.ifdef PROG
+LOCAL_LIBRARIES+= bsd
+LIBADD+= egacy m
+# static linking does not work
+NO_SHARED= no
+.endif
+
+MK_TESTS= no
+MK_MAN= no
+
+# override some HAVE_FLAGS
+HAVE_STRUCT_STAT_ST_FLAGS= 0
+
+# someone used __unused for struct padding on Linux
+# we don't care enough about linux/sysctl.h to work around it
+CFLAGS+= -D__unused= -D_LINUX_SYSCTL_H
+
+# avoid type conflicts
+CFLAGS+= -D__va_list=__builtin_va_list
+
+# Bring in the full GNU namespace
+CFLAGS+= -D_DEFAULT_SOURCE -D_GNU_SOURCE -D_XOPEN_SOURCE
+
+.endif
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,20 @@
${_+_}@env BUILDENV_DIR=${.CURDIR} ${MAKE} -C ${SRCTOP} buildenv
.endif
+.if ${MACHINE:Nhost*} == ""
+.-include <src.init.${.MAKE.OS:tl}.mk>
+
+.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
Mon, Feb 9, 8:05 AM (17 h, 37 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28555862
Default Alt Text
D39744.id120821.diff (3 KB)

Event Timeline