Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 8 Mar 2009 03:14:08 +0000 (UTC)
From:      John Birrell <jb@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r189505 - projects/jbuild/bld
Message-ID:  <200903080314.n283E8Fs070241@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jb
Date: Sun Mar  8 03:14:08 2009
New Revision: 189505
URL: http://svn.freebsd.org/changeset/base/189505

Log:
  Add the jbuild system makefiles. These are a WIP

Added:
  projects/jbuild/bld/
  projects/jbuild/bld/bsd.buildfiles.mk
  projects/jbuild/bld/bsd.cpu.mk
  projects/jbuild/bld/bsd.dirdep.mk
  projects/jbuild/bld/bsd.doc.mk
  projects/jbuild/bld/bsd.endian.mk
  projects/jbuild/bld/bsd.files.mk
  projects/jbuild/bld/bsd.genfiles.mk
  projects/jbuild/bld/bsd.headers.mk
  projects/jbuild/bld/bsd.hostlib.mk
  projects/jbuild/bld/bsd.hostprog.mk
  projects/jbuild/bld/bsd.incs.mk
  projects/jbuild/bld/bsd.info.mk
  projects/jbuild/bld/bsd.init.mk
  projects/jbuild/bld/bsd.kernconf.mk
  projects/jbuild/bld/bsd.kernel.mk
  projects/jbuild/bld/bsd.kmod.mk
  projects/jbuild/bld/bsd.lib.mk
  projects/jbuild/bld/bsd.man.mk
  projects/jbuild/bld/bsd.objs.mk
  projects/jbuild/bld/bsd.pkg.mk
  projects/jbuild/bld/bsd.prog.mk
  projects/jbuild/bld/bsd.relfiles.mk
  projects/jbuild/bld/bsd.scripts.mk
  projects/jbuild/bld/bsd.snmpmod.mk
  projects/jbuild/bld/bsd.subdir.mk
  projects/jbuild/bld/bsd.symver.mk
  projects/jbuild/bld/sys.mk

Added: projects/jbuild/bld/bsd.buildfiles.mk
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/jbuild/bld/bsd.buildfiles.mk	Sun Mar  8 03:14:08 2009	(r189505)
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+.if ${__MKLVL__} != 1
+all: genfiles
+.endif
+
+.include <bsd.dirdep.mk>
+.include <bsd.genfiles.mk>

Added: projects/jbuild/bld/bsd.cpu.mk
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/jbuild/bld/bsd.cpu.mk	Sun Mar  8 03:14:08 2009	(r189505)
@@ -0,0 +1,194 @@
+# $FreeBSD: src/share/mk/bsd.cpu.mk,v 1.48 2005/05/24 21:24:40 cognet Exp $
+
+# Set default CPU compile flags and baseline CPUTYPE for each arch.  The
+# compile flags must support the minimum CPU type for each architecture but
+# may tune support for more advanced processors.
+
+.if !defined(CPUTYPE) || empty(CPUTYPE)
+_CPUCFLAGS =
+. if ${MACHINE_ARCH} == "i386"
+MACHINE_CPU = i486
+. elif ${MACHINE_ARCH} == "alpha"
+_CPUCFLAGS = -mcpu=ev4 -mtune=ev5
+MACHINE_CPU = ev4
+. elif ${MACHINE_ARCH} == "amd64"
+MACHINE_CPU = amd64 sse2 sse
+. elif ${MACHINE_ARCH} == "ia64"
+MACHINE_CPU = itanium
+. elif ${MACHINE_ARCH} == "sparc64"
+. elif ${MACHINE_ARCH} == "arm"
+MACHINE_CPU = arm
+. elif ${MACHINE_ARCH} == "mips"
+MACHINE_CPU = mips
+. endif
+.else
+
+# Handle aliases (not documented in make.conf to avoid user confusion
+# between e.g. i586 and pentium)
+
+. if ${MACHINE_ARCH} == "i386"
+.  if ${CPUTYPE} == "nocona"
+CPUTYPE = prescott
+.  elif ${CPUTYPE} == "p4"
+CPUTYPE = pentium4
+.  elif ${CPUTYPE} == "p4m"
+CPUTYPE = pentium4m
+.  elif ${CPUTYPE} == "p3"
+CPUTYPE = pentium3
+.  elif ${CPUTYPE} == "p3m"
+CPUTYPE = pentium3m
+.  elif ${CPUTYPE} == "p-m"
+CPUTYPE = pentium-m
+.  elif ${CPUTYPE} == "p2"
+CPUTYPE = pentium2
+.  elif ${CPUTYPE} == "i686"
+CPUTYPE = pentiumpro
+.  elif ${CPUTYPE} == "i586/mmx"
+CPUTYPE = pentium-mmx
+.  elif ${CPUTYPE} == "i586"
+CPUTYPE = pentium
+.  elif ${CPUTYPE} == "opteron" || ${CPUTYPE} == "athlon64" || \
+     ${CPUTYPE} == "k8"
+CPUTYPE = athlon-mp
+.  elif ${CPUTYPE} == "k7"
+CPUTYPE = athlon
+.  endif
+. elif ${MACHINE_ARCH} == "amd64"
+.  if ${CPUTYPE} == "prescott"
+CPUTYPE = nocona
+.  endif
+. endif
+
+###############################################################################
+# Logic to set up correct gcc optimization flag.  This must be included
+# after /etc/make.conf so it can react to the local value of CPUTYPE
+# defined therein.  Consult:
+#	http://gcc.gnu.org/onlinedocs/gcc/DEC-Alpha-Options.html
+#	http://gcc.gnu.org/onlinedocs/gcc/IA-64-Options.html
+#	http://gcc.gnu.org/onlinedocs/gcc/RS-6000-and-PowerPC-Options.html
+#	http://gcc.gnu.org/onlinedocs/gcc/SPARC-Options.html
+#	http://gcc.gnu.org/onlinedocs/gcc/i386-and-x86-64-Options.html
+
+. if ${MACHINE_ARCH} == "i386"
+.  if ${CPUTYPE} == "crusoe"
+_CPUCFLAGS = -march=i686 -falign-functions=0 -falign-jumps=0 -falign-loops=0
+.  elif ${CPUTYPE} == "k5"
+_CPUCFLAGS = -march=pentium
+.  else
+_CPUCFLAGS = -march=${CPUTYPE}
+.  endif # GCC on 'i386'
+.  if ${CPUTYPE} == "crusoe"
+_ICC_CPUCFLAGS = -tpp6 -xiM
+.  elif ${CPUTYPE} == "athlon-mp" || ${CPUTYPE} == "athlon-xp" || \
+    ${CPUTYPE} == "athlon-4"
+_ICC_CPUCFLAGS = -tpp6 -xiMK
+.  elif ${CPUTYPE} == "athlon-tbird" || ${CPUTYPE} == "athlon"
+_ICC_CPUCFLAGS = -tpp6 -xiM
+.  elif ${CPUTYPE} == "k6-3" || ${CPUTYPE} == "k6-2" || ${CPUTYPE} == "k6"
+_ICC_CPUCFLAGS = -tpp6 -xi
+.  elif ${CPUTYPE} == "k5"
+_ICC_CPUCFLAGS = -tpp5
+.  elif ${CPUTYPE} == "pentium4" || ${CPUTYPE} == "pentium4m"
+_ICC_CPUCFLAGS = -tpp7 -xiMKW
+.  elif ${CPUTYPE} == "pentium3" || ${CPUTYPE} == "pentium3m" || \
+     ${CPUTYPE} == "pentium-m"
+_ICC_CPUCFLAGS = -tpp6 -xiMK
+.  elif ${CPUTYPE} == "pentium2" || ${CPUTYPE} == "pentiumpro"
+_ICC_CPUCFLAGS = -tpp6 -xiM
+.  elif ${CPUTYPE} == "pentium-mmx"
+_ICC_CPUCFLAGS = -tpp5 -xM
+.  elif ${CPUTYPE} == "pentium"
+_ICC_CPUCFLAGS = -tpp5
+.  else
+_ICC_CPUCFLAGS =
+.  endif # ICC on 'i386'
+. elif ${MACHINE_ARCH} == "alpha"
+_CPUCFLAGS = -mcpu=${CPUTYPE}
+. elif ${MACHINE_ARCH} == "amd64"
+_CPUCFLAGS = -march=${CPUTYPE}
+. elif ${MACHINE_ARCH} == "arm"
+.  if ${CPUTYPE} == "xscale"
+#XXX: gcc doesn't seem to like -mcpu=xscale, and dies while rebuilding itself
+#_CPUCFLAGS = -mcpu=xscale
+_CPUCFLAGS = -march=armv5te -D__XSCALE__
+.  else
+_CPUCFLAGS = -mcpu=${CPUTYPE}
+.  endif
+. endif
+
+# Set up the list of CPU features based on the CPU type.  This is an
+# unordered list to make it easy for client makefiles to test for the
+# presence of a CPU feature.
+
+. if ${MACHINE_ARCH} == "i386"
+.  if ${CPUTYPE} == "opteron" || ${CPUTYPE} == "athlon64"
+MACHINE_CPU = athlon-xp athlon k7 3dnow sse2 sse mmx k6 k5 i586 i486 i386
+.  elif ${CPUTYPE} == "athlon-mp" || ${CPUTYPE} == "athlon-xp" || \
+    ${CPUTYPE} == "athlon-4"
+MACHINE_CPU = athlon-xp athlon k7 3dnow sse mmx k6 k5 i586 i486 i386
+.  elif ${CPUTYPE} == "athlon" || ${CPUTYPE} == "athlon-tbird"
+MACHINE_CPU = athlon k7 3dnow mmx k6 k5 i586 i486 i386
+.  elif ${CPUTYPE} == "k6-3" || ${CPUTYPE} == "k6-2"
+MACHINE_CPU = 3dnow mmx k6 k5 i586 i486 i386
+.  elif ${CPUTYPE} == "k6"
+MACHINE_CPU = mmx k6 k5 i586 i486 i386
+.  elif ${CPUTYPE} == "k5"
+MACHINE_CPU = k5 i586 i486 i386
+.  elif ${CPUTYPE} == "pentium4" || ${CPUTYPE} == "pentium4m" || ${CPUTYPE} == "pentium-m"
+MACHINE_CPU = sse2 sse i686 mmx i586 i486 i386
+.  elif ${CPUTYPE} == "pentium3" || ${CPUTYPE} == "pentium3m"
+MACHINE_CPU = sse i686 mmx i586 i486 i386
+.  elif ${CPUTYPE} == "pentium2"
+MACHINE_CPU = i686 mmx i586 i486 i386
+.  elif ${CPUTYPE} == "pentiumpro"
+MACHINE_CPU = i686 i586 i486 i386
+.  elif ${CPUTYPE} == "pentium-mmx"
+MACHINE_CPU = mmx i586 i486 i386
+.  elif ${CPUTYPE} == "pentium"
+MACHINE_CPU = i586 i486 i386
+.  elif ${CPUTYPE} == "i486"
+MACHINE_CPU = i486 i386
+.  elif ${CPUTYPE} == "i386"
+MACHINE_CPU = i386
+.  endif
+. elif ${MACHINE_ARCH} == "alpha"
+.  if ${CPUTYPE} == "ev6"
+MACHINE_CPU = ev6 ev56 pca56 ev5 ev45 ev4
+.  elif ${CPUTYPE} == "pca56"
+MACHINE_CPU = pca56 ev56 ev5 ev45 ev4
+.  elif ${CPUTYPE} == "ev56"
+MACHINE_CPU = ev56 ev5 ev45 ev4
+.  elif ${CPUTYPE} == "ev5"
+MACHINE_CPU = ev5 ev45 ev4
+.  elif ${CPUTYPE} == "ev45"
+MACHINE_CPU = ev45 ev4
+.  elif ${CPUTYPE} == "ev4"
+MACHINE_CPU = ev4
+.  endif
+. elif ${MACHINE_ARCH} == "amd64"
+.  if ${CPUTYPE} == "opteron" || ${CPUTYPE} == "athlon64" || ${CPUTYPE} == "k8"
+MACHINE_CPU = k8 3dnow
+.  elif ${CPUTYPE} == "nocona"
+MACHINE_CPU = sse3
+.  endif
+MACHINE_CPU += amd64 sse2 sse mmx
+. elif ${MACHINE_ARCH} == "ia64"
+.  if ${CPUTYPE} == "itanium"
+MACHINE_CPU = itanium
+.  endif
+. endif
+.endif
+
+.if ${MACHINE_ARCH} == "alpha"
+_CPUCFLAGS += -mieee
+.endif
+
+# NB: COPTFLAGS is handled in /usr/src/sys/conf/kern.pre.mk
+
+.if !defined(NO_CPU_CFLAGS)
+. if ${CC} == "icc"
+CFLAGS += ${_ICC_CPUCFLAGS}
+. else
+CFLAGS += ${_CPUCFLAGS}
+. endif
+.endif

Added: projects/jbuild/bld/bsd.dirdep.mk
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/jbuild/bld/bsd.dirdep.mk	Sun Mar  8 03:14:08 2009	(r189505)
@@ -0,0 +1,379 @@
+#
+# $FreeBSD$
+#
+
+# This list of include makefiles is passed to jdirdep for it to use when
+# deciding where in a Buildfile to write the DIRDEP= and SRCDIRDEP= lines.
+INCMK= \
+	bsd.buildlib.mk \
+	bsd.buildtools.mk \
+	bsd.headers.mk \
+	bsd.kernconf.mk \
+	bsd.kernel.mk \
+	bsd.lib.mk \
+	bsd.objs.mk \
+	bsd.package.mk \
+	bsd.prog.mk \
+	bsd.scripts.mk
+
+JDIRDEP ?= jdirdep
+
+ENV_JDIRDEP= CURDIR=${.CURDIR} OBJDIR=${.OBJDIR} SRCTOP=${.SRCTOP} SUPMAC=${MACHINE_LIST:Q}
+.for t in ${MACHINE_LIST}
+ENV_JDIRDEP+= MACHINE_ARCH_${t:S/-/_/g}=${MACHINE_ARCH.${t}}
+.endfor
+ENV_JDIRDEP+= INCMK=${INCMK:Q}
+
+_ONE_MACHINE = no
+
+.if defined(HOSTPROG)
+_ONE_MACHINE= yes
+ONE_MACHINE  = host
+.endif
+
+.if defined(COMMONDIR)
+_ONE_MACHINE= yes
+ONE_MACHINE  = common
+.endif
+
+.if defined(TARGET_MACHINE)
+_ONE_MACHINE= yes
+ONE_MACHINE  = ${TARGET_MACHINE}
+.endif
+
+# Generate Buildfile.dirdep for the current directory.
+# Note: This writes to the source tree!
+.if make(gendirdep)
+
+.if ${.SRCREL} == stage
+DIRDEP =
+.elif !defined(DIRDEP)
+DIRDEP = stage
+.endif
+
+PARINC=
+.if exists(${.CURDIR}/../Buildfile.inc)
+PARINC=	${.CURDIR}/../Buildfile.inc
+.endif
+
+_DIRDEP=
+_XDIRDEP=
+.for d in ${DIRDEP}
+_d=${d:M*MACHINE_ARCH*}
+.if !empty(_d)
+_XDIRDEP+= ${d}
+.else
+_DIRDEP+= ${d}
+.endif
+.endfor
+
+.for t in ${MACHINE_LIST}
+DIRDEP.${t}?=
+.endfor
+
+BUILDFILE_DIRDEP= ${.CURDIR}/Buildfile.dirdep
+
+gendirdep : .PHONY
+	rm -f ${BUILDFILE_DIRDEP}
+	echo "# This file is automatically generated. DO NOT EDIT!" >> ${BUILDFILE_DIRDEP}
+	echo ".if !defined(NODIRDEP)" >> ${BUILDFILE_DIRDEP}
+.for t in ${MACHINE_LIST}
+.if !empty(DIRDEP.${t})
+	{ echo "# DIRDEP.${t}= ${DIRDEP.${t}}"; \
+	for _d in ${DIRDEP.${t}}; \
+	do \
+		echo ".if empty(D_INC_DONE:M$${_d})"; \
+		echo "D_INC_DONE+= $${_d}"; \
+		echo -n "D_INC_DONE:= $$"; \
+		echo "{D_INC_DONE}"; \
+		echo -n ".if exists($$"; \
+		echo "{.SRCTOP}/$${_d}/Buildfile.dirdep)"; \
+		echo -n ".include \"$$"; \
+		echo "{.SRCTOP}/$${_d}/Buildfile.dirdep\""; \
+		echo ".endif"; \
+		echo ".endif"; \
+		echo ""; \
+	done; \
+	} >> ${BUILDFILE_DIRDEP}
+.endif
+.endfor
+	{ echo "# DIRDEP= ${DIRDEP}"; \
+	} >> ${BUILDFILE_DIRDEP}
+.if defined(DIRDEP) && !empty(DIRDEP)
+	{ for _d in ${_DIRDEP}; \
+	do \
+		echo ".if empty(D_INC_DONE:M$${_d})"; \
+		echo "D_INC_DONE+= $${_d}"; \
+		echo -n "D_INC_DONE:= $$"; \
+		echo "{D_INC_DONE}"; \
+		echo -n ".if exists($$"; \
+		echo "{.SRCTOP}/$${_d}/Buildfile.dirdep)"; \
+		echo -n ".include \"$$"; \
+		echo "{.SRCTOP}/$${_d}/Buildfile.dirdep\""; \
+		echo ".endif"; \
+		echo ".endif"; \
+		echo ""; \
+	done; \
+	for _d in ${_XDIRDEP}; \
+	do \
+		echo -n ".for t in $$"; \
+		echo "{MACHINE_LIST}"; \
+			echo "_d=$$_d"; \
+			echo -n ".if empty(D_INC_DONE:M$$"; \
+			echo -n "{_d:S,MACHINE_ARCH,$$"; \
+			echo -n "{MACHINE_ARCH.$$"; \
+			echo "{t}},g})"; \
+			echo -n "D_INC_DONE+= $$"; \
+			echo -n "{_d:S,MACHINE_ARCH,$$"; \
+			echo -n "{MACHINE_ARCH.$$"; \
+			echo "{t}},g}"; \
+			echo -n "D_INC_DONE:= $$"; \
+			echo "{D_INC_DONE}"; \
+			echo -n ".if exists($$"; \
+			echo -n "{.SRCTOP}/$$"; \
+			echo -n "{_d:S,MACHINE_ARCH,$$"; \
+			echo -n "{MACHINE_ARCH.$$"; \
+			echo "{t}},g}/Buildfile.dirdep)"; \
+			echo -n ".include \"$$"; \
+			echo -n "{.SRCTOP}/$$"; \
+			echo -n "{_d:S,MACHINE_ARCH,$$"; \
+			echo -n "{MACHINE_ARCH.$$"; \
+			echo "{t}},g}/Buildfile.dirdep\""; \
+			echo ".endif"; \
+			echo ".endif"; \
+			echo ""; \
+		echo ".endfor"; \
+	done; \
+	} >> ${BUILDFILE_DIRDEP}
+.endif
+	echo ".endif" >> ${BUILDFILE_DIRDEP}
+	{ echo ""; \
+	echo -n ".for t in $$"; \
+	echo "{MACHINE_LIST}"; \
+	echo -n "D_TGTS_$$"; \
+	echo "{t}="; \
+	echo ".endfor"; \
+	echo ""; \
+	} >> ${BUILDFILE_DIRDEP}
+	echo ".if !defined(NODIRDEP)" >> ${BUILDFILE_DIRDEP}
+.for t in ${MACHINE_LIST}
+.if !empty(DIRDEP.${t})
+	{ for _d in ${DIRDEP.${t}}; \
+	do \
+		echo -n ".if exists($$"; \
+		echo "{.SRCTOP}/$${_d}/Buildfile.dirdep)"; \
+		echo -n "D_TGTS_${t}+="; \
+		echo -n " $$"; \
+		echo "{.OBJROOT}/${t}/$${_d}/all"; \
+		echo -n "D_TGTS_${t}:= $$"; \
+		echo "{D_TGTS_${t}}"; \
+		echo ".endif"; \
+		echo ""; \
+	done; \
+	} >> ${BUILDFILE_DIRDEP}
+.endif
+.endfor
+.if defined(ONLY_MACHINE)
+	echo "_MACHINE_LIST:= ${ONLY_MACHINE}" >> ${BUILDFILE_DIRDEP}
+.else
+	{ echo -n "_MACHINE_LIST:= $$"; \
+	echo "{MACHINE_LIST}";
+	} >> ${BUILDFILE_DIRDEP}
+.endif
+.if defined(DIRDEP) && !empty(DIRDEP)
+	{ for _d in ${_DIRDEP}; \
+	do \
+		echo -n ".if exists($$"; \
+		echo "{.SRCTOP}/$${_d}/Buildfile.dirdep)"; \
+		echo -n ".for _t in $$"; \
+		echo "{_MACHINE_LIST}"; \
+		echo -n "D_TGTS_$$"; \
+		echo -n "{_t}+="; \
+		echo -n " $$"; \
+		echo -n "{.OBJROOT}/$$"; \
+		echo "{_t}/$${_d}/all"; \
+		echo -n "D_TGTS_$$"; \
+		echo -n "{_t}:= $$"; \
+		echo -n "{D_TGTS_$$"; \
+		echo "{_t}}"; \
+		echo ".endfor"; \
+		echo ".endif"; \
+		echo ""; \
+	done; \
+	for _d in ${_XDIRDEP}; \
+	do \
+		echo -n ".for t in $$"; \
+		echo "{_MACHINE_LIST}"; \
+			echo "_d=$$_d"; \
+			echo -n ".if exists($$"; \
+			echo -n "{.SRCTOP}/$$"; \
+			echo -n "{_d:S,MACHINE_ARCH,$$"; \
+			echo -n "{MACHINE_ARCH.$$"; \
+			echo "{t}},g}/Buildfile.dirdep)"; \
+			echo -n "D_TGTS_$$"; \
+			echo -n "{t}+="; \
+			echo -n " $$"; \
+			echo -n "{.OBJROOT}/$$"; \
+			echo -n "{t}/$$"; \
+			echo -n "{_d:S,MACHINE_ARCH,$$"; \
+			echo -n "{MACHINE_ARCH.$$"; \
+			echo "{t}},g}/all"; \
+			echo -n "D_TGTS_$$"; \
+			echo -n "{t}:= $$"; \
+			echo -n "{D_TGTS_$$"; \
+			echo "{t}}"; \
+			echo ".endif"; \
+			echo ""; \
+		echo ".endfor"; \
+	done; \
+	echo ""; \
+	} >> ${BUILDFILE_DIRDEP}
+.endif
+	echo ".endif" >> ${BUILDFILE_DIRDEP}
+	{ \
+	if [ ${_ONE_MACHINE} = yes ]; \
+	then \
+		echo -n ".for t in $$"; \
+		echo "{MACHINE_LIST:N${ONE_MACHINE}}"; \
+			echo -n "$$"; \
+			echo -n "{.OBJROOT}/$$"; \
+			echo -n "{t}/${.SRCREL}/all : $$"; \
+			echo "{.OBJROOT}/${ONE_MACHINE}/${.SRCREL}/all .PHONY"; \
+		echo ".endfor"; \
+		echo -n "$$"; \
+		echo -n "{.OBJROOT}/${ONE_MACHINE}/${.SRCREL}/all : $$"; \
+		echo "{D_TGTS_${ONE_MACHINE}} .PHONY"; \
+		echo -n "	echo Checking $$"; \
+		echo "{.OBJROOT}/${ONE_MACHINE}/${.SRCREL}"; \
+		echo -n "	cd $$"; \
+		echo -n "{.SRCTOP}/${.SRCREL} && MACHINE=${ONE_MACHINE} $$"; \
+		echo -n "{MAKE} $$"; \
+		echo "{.MAKEFLAGS:NMACHINE=*:N-DALLMACHINES} all"; \
+	else \
+		echo -n ".for t in $$"; \
+		echo "{MACHINE_LIST}"; \
+		echo -n "$$"; \
+		echo -n "{.OBJROOT}/$$"; \
+		echo -n "{t}/${.SRCREL}/all : $$"; \
+		echo -n "{D_TGTS_$$"; \
+		echo "{t}} .PHONY"; \
+		echo -n "	echo Checking $$"; \
+		echo -n "{.OBJROOT}/$$"; \
+		echo "{t}/${.SRCREL}"; \
+		echo -n "	cd $$"; \
+		echo -n "{.SRCTOP}/${.SRCREL} && MACHINE=$$"; \
+		echo -n "{t} $$"; \
+		echo -n "{MAKE} $$"; \
+		echo "{.MAKEFLAGS:NMACHINE=*:N-DALLMACHINES} all"; \
+		echo ".endfor"; \
+	fi; \
+	} >> ${BUILDFILE_DIRDEP}
+
+# Figure out what DIRDEP= should be
+.elif make(getdirdep)
+
+getdirdep	: .PHONY
+	echo "Reading the meta data files to determine the directory dependencies..."
+	${ENV_JDIRDEP} ${JDIRDEP}
+
+# Generate a graph of directory dependencies
+.elif make(graphdirdep)
+
+graphdirdep	: .PHONY
+	${ENV_JDIRDEP} ${JDIRDEP} -g
+	unflatten -l 4 -f 4 ${.OBJDIR}/dirdep.gv | dot -Tps2 -o ${.OBJDIR}/dirdep.ps
+	ps2pdf ${.OBJDIR}/dirdep.ps ${.OBJDIR}/dirdep.pdf
+
+# Do a recursive update of DIRDEP= in the Buildfiles
+.elif make(regendirdep)
+
+regendirdep	: .PHONY
+	echo "Updating Buildfile.dirdep ..."
+	${ENV_JDIRDEP} ${JDIRDEP} -rf
+
+# Do a recursive parse of meta data to check for source usage
+.elif make(rsrcdirdep)
+
+rsrcdirdep	: .PHONY
+	echo "Parsing meta data for source usage..."
+	${ENV_JDIRDEP} ${JDIRDEP} -rs
+
+# Do a parse of meta data to check for source usage
+.elif make(srcdirdep)
+
+srcdirdep	: .PHONY
+	echo "Parsing meta data for source usage..."
+	${ENV_JDIRDEP} ${JDIRDEP} -s
+
+# Do a recursive update of DIRDEP= in the Buildfiles
+.elif make(rupdatedirdep)
+
+rupdatedirdep	: .PHONY
+	echo "Updating DIRDEP in Buildfile..."
+	${ENV_JDIRDEP} ${JDIRDEP} -rsu
+
+# Update of DIRDEP= in the current Buildfile
+.elif make(updatedirdep)
+
+updatedirdep	: .PHONY
+	echo "Updating DIRDEP in Buildfiles..."
+	${ENV_JDIRDEP} ${JDIRDEP} -su
+
+.else
+
+# D_INC_DONE is used to keep track of which dependencies have been included
+# to avoid including more than once. See the generation code above.
+D_INC_DONE=
+
+# Only include dependencies in the top-level build
+.if ${__MKLVL__} == 1
+# Generate the initial Buildfile.dirdep if there isn't one yet.
+.if !exists(${.CURDIR}/Buildfile.dirdep)
+__X!=	cd ${.CURDIR} && ${MAKE} gendirdep
+.endif
+# Include the dependencies for the things that this directory depends on.
+# This will recursively include all other dependencies until we have a 
+# complete set starting with this directory.
+.include "${.CURDIR}/Buildfile.dirdep"
+
+.if target(all)
+.error "The top level 'all' target is defined only in bsd.dirdep.mk!"
+.else
+# This is the main target for _all_ top level builds. It is used only to
+# do builds on a directory by directory basis, including this directory.
+all : dirdep .PHONY
+
+D_TGTS=
+
+.if ${_ONE_MACHINE} == yes
+D_TGTS+= ${.OBJROOT}/${ONE_MACHINE}/${.SRCREL}/all
+.else
+.if defined(ONLY_MACHINE)
+_MACHINES=
+.for m in ${ONLY_MACHINE}
+.if !empty(MACHINES:M${m})
+_MACHINES+= ${m}
+_MACHINES:= ${_MACHINES}
+.endif
+.endfor
+MACHINES:= ${_MACHINES}
+.endif
+
+.for t in ${MACHINES}
+D_TGTS+= ${D_TGTS_${t}}
+D_TGTS+= ${.OBJROOT}/${t}/${.SRCREL}/all
+.endfor
+.endif
+
+dirdep	: ${D_TGTS} .PHONY
+.endif
+
+.else
+.if !target(all)
+# We do everything by dependencies.
+all	: .PHONY
+.endif
+.endif
+
+.endif
+

Added: projects/jbuild/bld/bsd.doc.mk
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/jbuild/bld/bsd.doc.mk	Sun Mar  8 03:14:08 2009	(r189505)
@@ -0,0 +1,186 @@
+#	from: @(#)bsd.doc.mk	5.3 (Berkeley) 1/2/91
+# $FreeBSD: src/share/mk/bsd.doc.mk,v 1.59 2004/12/21 09:33:42 ru Exp $
+#
+# The include file <bsd.doc.mk> handles installing BSD troff documents.
+#
+#
+# +++ variables +++
+#
+# DCOMPRESS_CMD	Program to compress troff documents.  Output is to stdout.
+#		[${COMPRESS_CMD}]
+#
+# DESTDIR	Change the tree where the documents get installed.  [not set]
+#
+# DOC		Document name.  [paper]
+#
+# EXTRA		Extra files (not SRCS) that make up the document.  [not set]
+#
+# LPR		Printer command.  [lpr]
+#
+# MACROS	Macro packages used to build the document.  [not set]
+#
+# NO_DOCCOMPRESS If you do not want formatted troff documents to be
+#		compressed when they are installed.  [not set]
+#
+# PRINTERDEVICE	Indicates which output formats will be generated
+#		(ascii, ps, html).  [ascii]
+#
+# SRCDIR	Directory where source files live.  [${.CURDIR}]
+#
+# SRCS		List of source files.  [not set]
+#
+# TRFLAGS	Additional flags to groff(1).  [not set]
+#
+# USE_EQN	If set, preprocess with eqn(1).  [not set]
+#
+# USE_PIC	If set, preprocess with pic(1).  [not set]
+#
+# USE_REFER	If set, preprocess with refer(1).  [not set]
+#
+# USE_SOELIM	If set, preprocess with soelim(1).  [not set]
+#
+# USE_TBL	If set, preprocess with tbl(1).  [not set]
+#
+# VOLUME	Volume the document belongs to.  [not set]
+
+PRINTERDEVICE?=	ascii
+
+BIB?=		bib
+GREMLIN?=	grn
+GRIND?=		vgrind -f
+INDXBIB?=	indxbib
+PIC?=		pic
+REFER?=		refer
+.for _dev in ${PRINTERDEVICE:Mascii}
+ROFF.ascii?=	groff -Tascii ${TRFLAGS} -mtty-char ${MACROS} -o${PAGES}
+.endfor
+.for _dev in ${PRINTERDEVICE:Nascii}
+ROFF.${_dev}?=	groff -T${_dev} ${TRFLAGS} ${MACROS} -o${PAGES}
+.endfor
+SOELIM?=	soelim
+TBL?=		tbl
+
+DOC?=		paper
+LPR?=		lpr
+
+.if defined(USE_EQN)
+TRFLAGS+=	-e
+.endif
+.if defined(USE_PIC)
+TRFLAGS+=	-p
+.endif
+.if defined(USE_REFER)
+TRFLAGS+=	-R
+.endif
+.if defined(USE_SOELIM)
+TRFLAGS+=	-I${SRCDIR}
+.endif
+.if defined(USE_TBL)
+TRFLAGS+=	-t
+.endif
+
+DCOMPRESS_EXT?=	${COMPRESS_EXT}
+DCOMPRESS_CMD?=	${COMPRESS_CMD}
+.for _dev in ${PRINTERDEVICE:Mhtml}
+DFILE.html=	${DOC}.html
+.endfor
+.for _dev in ${PRINTERDEVICE:Nhtml}
+.if defined(NO_DOCCOMPRESS)
+DFILE.${_dev}=	${DOC}.${_dev}
+.else
+DFILE.${_dev}=	${DOC}.${_dev}${DCOMPRESS_EXT}
+.endif
+.endfor
+
+PAGES?=		1-
+
+UNROFF?=	unroff
+HTML_SPLIT?=	yes
+UNROFFFLAGS?=	-fhtml
+.if ${HTML_SPLIT} == "yes"
+UNROFFFLAGS+=	split=1
+.endif
+
+# Compatibility mode flag for groff.  Use this when formatting documents with
+# Berkeley me macros (orig_me(7)).
+COMPAT?=	-C
+
+.PATH: ${.CURDIR} ${SRCDIR}
+
+.for _dev in ${PRINTERDEVICE}
+all: ${DFILE.${_dev}}
+.endfor
+
+.if !target(print)
+.for _dev in ${PRINTERDEVICE}
+print: ${DFILE.${_dev}}
+.endfor
+print:
+.for _dev in ${PRINTERDEVICE}
+.if defined(NO_DOCCOMPRESS)
+	${LPR} ${DFILE.${_dev}}
+.else
+	${DCOMPRESS_CMD} -d ${DFILE.${_dev}} | ${LPR}
+.endif
+.endfor
+.endif
+
+realinstall:
+.for _dev in ${PRINTERDEVICE:Mhtml}
+	cd ${SRCDIR}; \
+	    ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
+	    ${DOC}*.html ${DESTDIR}${BINDIR}/${VOLUME}
+.endfor
+.for _dev in ${PRINTERDEVICE:Nhtml}
+	${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
+	    ${DFILE.${_dev}} ${DESTDIR}${BINDIR}/${VOLUME}
+.endfor
+
+spell: ${SRCS}
+	(cd ${.CURDIR}; spell ${SRCS} ) | sort | \
+		comm -23 - ${.CURDIR}/spell.ok > ${DOC}.spell
+
+BINDIR?=	/usr/share/doc
+BINMODE=	444
+
+SRCDIR?=	${.CURDIR}
+
+.if defined(EXTRA) && !empty(EXTRA)
+_stamp.extra: ${EXTRA}
+	touch ${.TARGET}
+.endif
+
+.for _dev in ${PRINTERDEVICE:Nhtml}
+.if !target(${DFILE.${_dev}})
+.if target(_stamp.extra)
+${DFILE.${_dev}}: _stamp.extra
+.endif
+${DFILE.${_dev}}: ${SRCS}
+.if defined(NO_DOCCOMPRESS)
+	${ROFF.${_dev}} ${.ALLSRC:N_stamp.extra} > ${.TARGET}
+.else
+	${ROFF.${_dev}} ${.ALLSRC:N_stamp.extra} | ${DCOMPRESS_CMD} > ${.TARGET}
+.endif
+.endif
+.endfor
+
+.for _dev in ${PRINTERDEVICE:Mhtml}
+.if !target(${DFILE.html})
+.if target(_stamp.extra)
+${DFILE.html}: _stamp.extra
+.endif
+${DFILE.html}: ${SRCS}
+.if defined(MACROS) && !empty(MACROS)
+	cd ${SRCDIR}; ${UNROFF} ${MACROS} ${UNROFFFLAGS} \
+	    document=${DOC} ${SRCS}
+.else # unroff(1) requires a macro package as an argument
+	cd ${SRCDIR}; ${UNROFF} -ms ${UNROFFFLAGS} \
+	    document=${DOC} ${SRCS}
+.else
+.endif
+.endif
+.endfor
+
+DISTRIBUTION?=	doc
+
+.include <bsd.obj.mk>

Added: projects/jbuild/bld/bsd.endian.mk
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/jbuild/bld/bsd.endian.mk	Sun Mar  8 03:14:08 2009	(r189505)
@@ -0,0 +1,14 @@
+# $FreeBSD: src/share/mk/bsd.endian.mk,v 1.5 2008/04/28 14:54:17 gonzo Exp $
+
+.if ${MACHINE_ARCH} == "amd64" || \
+    ${MACHINE_ARCH} == "i386" || \
+    ${MACHINE_ARCH} == "ia64" || \
+    (${MACHINE_ARCH} == "arm" && !defined(TARGET_BIG_ENDIAN)) || \
+    (${MACHINE_ARCH} == "mips" && !defined(TARGET_BIG_ENDIAN))
+TARGET_ENDIANNESS= 1234
+.elif ${MACHINE_ARCH} == "powerpc" || \
+    ${MACHINE_ARCH} == "sparc64" || \
+    ${MACHINE_ARCH} == "arm" || \
+    ${MACHINE_ARCH} == "mips"
+TARGET_ENDIANNESS= 4321
+.endif

Added: projects/jbuild/bld/bsd.files.mk
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/jbuild/bld/bsd.files.mk	Sun Mar  8 03:14:08 2009	(r189505)
@@ -0,0 +1,65 @@
+# $FreeBSD: src/share/mk/bsd.files.mk,v 1.4 2005/04/11 07:13:29 harti Exp $
+
+FILESGROUPS?=	FILES
+
+.if !target(buildfiles)
+.for group in ${FILESGROUPS}
+buildfiles: ${${group}}
+.endfor
+.endif
+
+all: buildfiles
+
+.if !target(installfiles)
+.for group in ${FILESGROUPS}
+.if defined(${group}) && !empty(${group})
+
+${group}OWN?=	${SHAREOWN}
+${group}GRP?=	${SHAREGRP}
+${group}MODE?=	${SHAREMODE}
+${group}DIR?=	${BINDIR}
+
+_${group}FILES=
+.for file in ${${group}}
+.if defined(${group}OWN_${file:T}) || defined(${group}GRP_${file:T}) || \
+    defined(${group}MODE_${file:T}) || defined(${group}DIR_${file:T}) || \
+    defined(${group}NAME_${file:T})
+${group}OWN_${file:T}?=	${${group}OWN}
+${group}GRP_${file:T}?=	${${group}GRP}
+${group}MODE_${file:T}?=	${${group}MODE}
+${group}DIR_${file:T}?=	${${group}DIR}
+.if defined(${group}NAME)
+${group}NAME_${file:T}?=	${${group}NAME}
+.else
+${group}NAME_${file:T}?=	${file:T}
+.endif
+installfiles: _${group}INS_${file:T}
+_${group}INS_${file:T}: ${file}
+	${INSTALL} -o ${${group}OWN_${.ALLSRC:T}} \
+	    -g ${${group}GRP_${.ALLSRC:T}} -m ${${group}MODE_${.ALLSRC:T}} \
+	    ${.ALLSRC} \
+	    ${DESTDIR}${${group}DIR_${.ALLSRC:T}}/${${group}NAME_${.ALLSRC:T}}
+.else
+_${group}FILES+= ${file}
+.endif
+.endfor
+.if !empty(_${group}FILES)
+installfiles: _${group}INS
+_${group}INS: ${_${group}FILES}
+.if defined(${group}NAME)
+	${INSTALL} -o ${${group}OWN} -g ${${group}GRP} \
+	    -m ${${group}MODE} ${.ALLSRC} \
+	    ${DESTDIR}${${group}DIR}/${${group}NAME}
+.else
+	${INSTALL} -o ${${group}OWN} -g ${${group}GRP} \
+	    -m ${${group}MODE} ${.ALLSRC} ${DESTDIR}${${group}DIR}
+.endif
+.endif
+
+.endif # defined(${group}) && !empty(${group})
+.endfor
+
+.endif # !target(installfiles)
+
+realinstall: installfiles
+.ORDER: beforeinstall installfiles

Added: projects/jbuild/bld/bsd.genfiles.mk
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/jbuild/bld/bsd.genfiles.mk	Sun Mar  8 03:14:08 2009	(r189505)
@@ -0,0 +1,68 @@
+# $FreeBSD$
+#
+# Built files
+#
+# Any headers in the source file list are built
+BUILTFILES+= ${SRCS:M*.h}
+
+# Any generated source files are built
+GENSRCS?=
+GENHDRS?=
+BUILTFILES+= ${GENSRCS} ${GENHDRS}
+
+# The directory dependencies must be complete before the generated
+# sources and headers are built.
+.for _S in ${GENSRCS} ${GENHDRS}
+.ORDER: dirdep ${_S}
+.endfor
+
+# Any yacc files in the source file list are built into a C file and
+# a corresponding header
+.for _S in ${SRCS:M*.y} ${GENSRCS:M*.y}
+BUILTFILES+= ${_S:R}.h ${_S:R}.c
+.endfor
+
+# Rules to build the C file and header from yacc source
+.for _S in ${SRCS:M*.y} ${GENSRCS:M*.y}
+${_S:R}.h: ${_S}
+	${YACC} ${YFLAGS} -d -b ${_S:R} ${.ALLSRC}
+	mv ${_S:R}.tab.h ${_S:R}.h
+	mv ${_S:R}.tab.c ${_S:R}.c
+${_S:R}.c: ${_S:R}.h
+.ORDER: dirdep ${_S:R}.h ${_S:R}.c
+.endfor
+
+# Any lex files in the source file list are built into a C file
+.for _S in ${SRCS:M*.l} ${GENSRCS:M*.l}
+BUILTFILES+= ${_S:R}.c
+.endfor
+
+# Rules to build the C file from lex source
+.for _S in ${SRCS:M*.l} ${GENSRCS:M*.l}
+${_S:R}.c: ${_S}
+	${LEX} ${LFLAGS} -o${.TARGET} ${.ALLSRC}
+.ORDER: dirdep ${_S:R}.c
+.endfor
+
+# Any m4 files in the source file list are built into a C file
+.for _S in ${SRCS:M*.m4}
+BUILTFILES+= ${_S:R}.c
+.endfor
+
+.for _S in ${SRCS:M*.m4}
+.ORDER: dirdep ${_S:R}.c
+.endfor
+
+# Any error table files in the source file list are built into a C file and
+# a corresponding header
+.for _S in ${SRCS:M*.et}
+BUILTFILES+= ${_S:R}.h ${_S:R}.c
+.endfor
+
+# Rules to build the C file and header from error table source
+.for _S in ${SRCS:M*.et}
+${_S:R}.c ${_S:R}.h: ${_S}
+	compile_et ${.ALLSRC}
+.endfor
+
+genfiles: ${BUILTFILES}

Added: projects/jbuild/bld/bsd.headers.mk
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/jbuild/bld/bsd.headers.mk	Sun Mar  8 03:14:08 2009	(r189505)
@@ -0,0 +1,65 @@
+
+.if defined(HOSTPROG) && ${MACHINE} != ${HOST_MACHINE}
+
+# This is a host program and we're not building the host so all we want to
+# do is update our dependencies which will include the host program.
+.if ${__MKLVL__} != 1
+all : .PHONY
+.endif
+
+.include <bsd.dirdep.mk>
+
+.else
+.if defined(NOT_MACHINE_ARCH) && !empty(NOT_MACHINE_ARCH:M${MACHINE_ARCH})
+DONT_DO_IT=
+.endif
+
+.if defined(NOT_MACHINE) && !empty(NOT_MACHINE:M${MACHINE})
+DONT_DO_IT=
+.endif
+
+.if defined(ONLY_MACHINE) && empty(ONLY_MACHINE:M${MACHINE})
+DONT_DO_IT=
+.endif
+
+.if defined(COMMONDIR) && ${MACHINE} != common
+DONT_DO_IT=
+.endif
+
+.if defined(HOSTPROG) && ${MACHINE} != host
+DONT_DO_IT=
+.endif
+
+.if defined(TARGET_MACHINE) && ${MACHINE} != ${TARGET_MACHINE}
+DONT_DO_IT=
+.endif
+
+.if defined(DONT_DO_IT)
+
+.if ${__MKLVL__} != 1
+all:	.PHONY
+.endif
+
+.else
+.if ${__MKLVL__} != 1
+all	: genfiles allincs relfiles
+.ORDER	: genfiles allincs relfiles
+.endif
+.endif
+
+.if make(checkheaders)
+_HEADERS != ls ${.CURDIR}/*.h
+.for i in ${_HEADERS:T}
+.if empty(INCS:M${i})
+X!= echo "${i} is not in INCS" >&2; echo
+.endif
+.endfor
+
+checkheaders: .PHONY
+.endif
+
+.include <bsd.dirdep.mk>
+.include <bsd.genfiles.mk>

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200903080314.n283E8Fs070241>