Module Name:    src
Committed By:   uebayasi
Date:           Mon Nov 30 16:13:23 UTC 2009

Modified Files:
        src: BUILDING Makefile build.sh
        src/distrib/sets: Makefile checkflist comments deps descrs makeflist
            makeobsolete makesrctars maketars sets.subr
        src/etc: Makefile
        src/etc/mtree: Makefile
        src/share/mk: bsd.README bsd.own.mk bsd.sys.mk

Log Message:
Support "extsrc", externally added programs and libraries.  Users can write
their own reach-overs, cross-build, install, and get set files just like base
and X11 / X.org.  (These sets are not included as TNF releases.)


To generate a diff of this commit:
cvs rdiff -u -r1.89 -r1.90 src/BUILDING
cvs rdiff -u -r1.274 -r1.275 src/Makefile
cvs rdiff -u -r1.221 -r1.222 src/build.sh
cvs rdiff -u -r1.70 -r1.71 src/distrib/sets/Makefile
cvs rdiff -u -r1.34 -r1.35 src/distrib/sets/checkflist
cvs rdiff -u -r1.14 -r1.15 src/distrib/sets/comments
cvs rdiff -u -r1.10 -r1.11 src/distrib/sets/deps
cvs rdiff -u -r1.15 -r1.16 src/distrib/sets/descrs
cvs rdiff -u -r1.74 -r1.75 src/distrib/sets/makeflist
cvs rdiff -u -r1.29 -r1.30 src/distrib/sets/makeobsolete
cvs rdiff -u -r1.37 -r1.38 src/distrib/sets/makesrctars
cvs rdiff -u -r1.69 -r1.70 src/distrib/sets/maketars
cvs rdiff -u -r1.91 -r1.92 src/distrib/sets/sets.subr
cvs rdiff -u -r1.373 -r1.374 src/etc/Makefile
cvs rdiff -u -r1.10 -r1.11 src/etc/mtree/Makefile
cvs rdiff -u -r1.259 -r1.260 src/share/mk/bsd.README
cvs rdiff -u -r1.597 -r1.598 src/share/mk/bsd.own.mk
cvs rdiff -u -r1.185 -r1.186 src/share/mk/bsd.sys.mk

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/BUILDING
diff -u src/BUILDING:1.89 src/BUILDING:1.90
--- src/BUILDING:1.89	Sat Oct 10 19:05:28 2009
+++ src/BUILDING	Mon Nov 30 16:13:22 2009
@@ -74,6 +74,9 @@
      x11/           ``Reachover'' build structure for X11R6; the source is in
                     X11SRCDIR.
 
+     extsrc/        ``Reachover'' build structure for externally added programs
+                    and libraries; the source is in EXTSRCSRCDIR.
+
    Build tree layout
      The NetBSD build tree is described in hier(7), and the release layout is
      described in release(7).
@@ -164,6 +167,13 @@
                  Note: build.sh will provide a default of destdir.MACHINE (in
                  the top-level .OBJDIR) unless run in `expert' mode.
 
+     EXTSRCSRCDIR
+		 Directory containing sources of externally added programs
+		 and libraries.  If specified, must be an absolute path.
+
+                 Default: NETBSDRCDIR/../extsrc, if that exists; otherwise
+                 /usr/extsrc.
+
      MAKECONF    The name of the make(1) configuration file.  Only settable in
                  the process environment.
 
@@ -212,6 +222,11 @@
 
                  Default: ``yes''
 
+     MKEXTSRC    Can be set to ``yes'' or ``no''.  Indicates whether extsrc is
+                 built from EXTSRCSRCDIR.
+
+                 Default: ``no''
+
      MKHTML      Can be set to ``yes'' or ``no''.  Indicates whether prefor-
                  matted HTML manual pages will be built and installed
 
@@ -874,6 +889,13 @@
 
      -x        Set MKX11=yes.
 
+     -Y extsrcsrc
+               Set the value of EXTSRCSRCDIR to extsrcsrc.  If a relative path is
+               specified, it will be converted to an absolute path before
+               being used.
+
+     -y        Set MKEXTSRC=yes.
+
      -Z var    Unset ("zap") the environment variable var.  This is propagated
                to the nbmake wrapper.
 

Index: src/Makefile
diff -u src/Makefile:1.274 src/Makefile:1.275
--- src/Makefile:1.274	Fri Sep  4 17:21:33 2009
+++ src/Makefile	Mon Nov 30 16:13:22 2009
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile,v 1.274 2009/09/04 17:21:33 pooka Exp $
+#	$NetBSD: Makefile,v 1.275 2009/11/30 16:13:22 uebayasi Exp $
 
 #
 # This is the top-level makefile for building NetBSD. For an outline of
@@ -108,6 +108,7 @@
 #   do-x11:          builds and installs X11 if ${MKX11} != "no"; either
 #                    X11R7 from src/external/mit/xorg if ${X11FLAVOUR} == "Xorg"
 #                    or X11R6 from src/x11
+#   do-extsrc:       builds and installs extsrc if ${MKEXTSRC} != "no".
 #   do-obsolete:     installs the obsolete sets (for the postinstall-* targets).
 #
 
@@ -252,6 +253,9 @@
 .if ${MKX11} != "no"
 BUILDTARGETS+=	do-x11
 .endif
+.if ${MKEXTSRC} != "no"
+BUILDTARGETS+=	do-extsrc
+.endif
 BUILDTARGETS+=	do-obsolete
 
 #
@@ -482,6 +486,14 @@
 	@false
 .endif
 
+do-extsrc: .PHONY .MAKE
+.if ${MKEXTSRC} != "no"
+	${MAKEDIRTARGET} extsrc build
+.else
+	@echo "MKEXTSRC is not enabled"
+	@false
+.endif
+
 do-obsolete: .PHONY .MAKE
 	${MAKEDIRTARGET} etc install-obsolete-lists
 

Index: src/build.sh
diff -u src/build.sh:1.221 src/build.sh:1.222
--- src/build.sh:1.221	Tue Nov 24 13:39:07 2009
+++ src/build.sh	Mon Nov 30 16:13:22 2009
@@ -1,5 +1,5 @@
 #! /usr/bin/env sh
-#	$NetBSD: build.sh,v 1.221 2009/11/24 13:39:07 pooka Exp $
+#	$NetBSD: build.sh,v 1.222 2009/11/30 16:13:22 uebayasi Exp $
 #
 # Copyright (c) 2001-2009 The NetBSD Foundation, Inc.
 # All rights reserved.
@@ -550,7 +550,8 @@
 Usage: ${progname} [-EnorUux] [-a arch] [-B buildid] [-C cdextras]
                 [-D dest] [-j njob] [-M obj] [-m mach] [-N noisy]
                 [-O obj] [-R release] [-S seed] [-T tools]
-                [-V var=[value]] [-w wrapper] [-X x11src] [-Z var]
+                [-V var=[value]] [-w wrapper] [-X x11src] [-Y extsrcsrc]
+                [-Z var]
                 operation [...]
 
  Build operations (all imply "obj" and "tools"):
@@ -618,6 +619,9 @@
                 [Default: \${TOOLDIR}/bin/${toolprefix}make-\${MACHINE}]
     -X x11src   Set X11SRCDIR to x11src.  [Default: /usr/xsrc]
     -x          Set MKX11=yes; build X11 from X11SRCDIR
+    -Y extsrcsrc
+                Set EXTSRCSRCDIR to extsrcsrc.  [Default: /usr/extsrc]
+    -y          Set MKEXTSRC=yes; build extsrc from EXTSRCSRCDIR
     -Z v        Unset ("zap") variable \`v'.
 
 _usage_
@@ -626,7 +630,7 @@
 
 parseoptions()
 {
-	opts='a:B:C:D:Ehj:M:m:N:nO:oR:rS:T:UuV:w:xX:Z:'
+	opts='a:B:C:D:Ehj:M:m:N:nO:oR:rS:T:UuV:w:xX:yY:Z:'
 	opt_a=no
 
 	if type getopts >/dev/null 2>&1; then
@@ -797,6 +801,15 @@
 			setmakeenv MKX11 yes
 			;;
 
+		-Y)
+			eval ${optargcmd}; resolvepath OPTARG
+			setmakeenv EXTSRCSRCDIR "${OPTARG}"
+			;;
+
+		-y)
+			setmakeenv MKEXTSRC yes
+			;;
+
 		-Z)
 			eval ${optargcmd}
 		    # XXX: consider restricting which variables can be unset?
@@ -1323,7 +1336,7 @@
 	eval cat <<EOF ${makewrapout}
 #! ${HOST_SH}
 # Set proper variables to allow easy "make" building of a NetBSD subtree.
-# Generated from:  \$NetBSD: build.sh,v 1.221 2009/11/24 13:39:07 pooka Exp $
+# Generated from:  \$NetBSD: build.sh,v 1.222 2009/11/30 16:13:22 uebayasi Exp $
 # with these arguments: ${_args}
 #
 

Index: src/distrib/sets/Makefile
diff -u src/distrib/sets/Makefile:1.70 src/distrib/sets/Makefile:1.71
--- src/distrib/sets/Makefile:1.70	Sat Sep 19 07:09:54 2009
+++ src/distrib/sets/Makefile	Mon Nov 30 16:13:23 2009
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile,v 1.70 2009/09/19 07:09:54 snj Exp $
+#	$NetBSD: Makefile,v 1.71 2009/11/30 16:13:23 uebayasi Exp $
 
 # The `all' target must appear before bsd.own.mk is pulled in.
 all:
@@ -26,12 +26,19 @@
 
 MAKETARS_FLAGS=
 .if ${MKX11} != "no"
-MAKEFLIST_FLAGS=	-b
-MAKESRCTARS_FLAGS=	-x ${X11SRCDIR} -N ${NETBSDSRCDIR}/etc
-.else
-MAKEFLIST_FLAGS=
-MAKESRCTARS_FLAGS= 	-N ${NETBSDSRCDIR}/etc
+MAKESRCTARS_X11_FLAGS=	-x ${X11SRCDIR}
+.endif
+.if ${MKEXTSRC} != "no"
+MAKESRCTARS_EXTSRC_FLAGS=	-y ${EXTSRCSRCDIR}
+.endif
+.if ${MKX11} != "no"
+MAKEFLIST_X11_FLAGS=	,x
+.endif
+.if ${MKEXTSRC} != "no"
+MAKEFLIST_EXTSRC_FLAGS=	,ext
 .endif
+MAKEFLIST_FLAGS=	-L base${MAKEFLIST_X11_FLAGS}${MAKEFLIST_EXTSRC_FLAGS}
+MAKESRCTARS_FLAGS= 	-N ${NETBSDSRCDIR}/etc
 
 .if ${MAKEVERBOSE} < 2
 MAKETARS_FLAGS+=	-q
@@ -122,6 +129,9 @@
 checkflist-x11: .PHONY check_DESTDIR
 	${SETSCMD} ./checkflist -x ${CHECKFLIST_FLAGS}
 
+checkflist-extsrc: .PHONY check_DESTDIR
+	${SETSCMD} ./checkflist -y ${CHECKFLIST_FLAGS}
+
 .if defined(DESTDIR) && ${DESTDIR} != ""
 checkflist_if_DESTDIR: checkflist
 .else
@@ -185,6 +195,7 @@
 	${_MKMSG_CREATE} "source tar files"
 	mkdir -p ${SOURCETARDIR}
 	${SETSCMD} ./makesrctars ${MAKESRCTARS_FLAGS} \
+	    ${MAKESRCTARS_X11_FLAGS} ${MAKESRCTARS_EXTSRC_FLAGS} \
 	    ${NETBSDSRCDIR} ${SOURCETARDIR}
 
 

Index: src/distrib/sets/checkflist
diff -u src/distrib/sets/checkflist:1.34 src/distrib/sets/checkflist:1.35
--- src/distrib/sets/checkflist:1.34	Thu Apr 23 09:30:56 2009
+++ src/distrib/sets/checkflist	Mon Nov 30 16:13:23 2009
@@ -1,6 +1,6 @@
 #! /bin/sh --
 #
-#	$NetBSD: checkflist,v 1.34 2009/04/23 09:30:56 apb Exp $
+#	$NetBSD: checkflist,v 1.35 2009/11/30 16:13:23 uebayasi Exp $
 #
 # Verify output of makeflist against contents of ${DESTDIR} and ${metalog}.
 
@@ -34,15 +34,23 @@
 allowmissing=false
 
 # handle args
-while getopts xbM:em ch; do
+while getopts xybL:M:em ch; do
 	case ${ch} in
 	x)
 		xargs="-x"
 		origin="./etc/X11 ./etc/fonts ./usr/X11R6"
 		;;
+	y)
+		xargs="-y"
+		origin="./etc/ext ./usr/ext"
+		;;
+	# backward compat
 	b)
 		xargs="-b"
 		;;
+	L)
+		xargs="-L ${OPTARG}"
+		;;
 	M)
 		metalog="${OPTARG}"
 		;;
@@ -54,9 +62,11 @@
 		;;
 	*)
 		cat 1>&2 <<USAGE
-Usage: ${prog} [-x|-b] [-M metalog] [-e] [-m]
+Usage: ${prog} [-x|-y|-b|-L lists] [-M metalog] [-e] [-m]
 	-x		check only x11 lists
+	-y		check only extsrc lists
 	-b		check netbsd + x11 lists
+	-L base,x,ext	check specified lists
 	-M metalog	metalog file
 	-e		extra files are not considered an error
 	-m		missing files are not considered an error

Index: src/distrib/sets/comments
diff -u src/distrib/sets/comments:1.14 src/distrib/sets/comments:1.15
--- src/distrib/sets/comments:1.14	Wed Nov 12 12:35:50 2008
+++ src/distrib/sets/comments	Mon Nov 30 16:13:23 2009
@@ -257,6 +257,7 @@
 etc-dhclient-etc configuration files for DHCP dyanamic host configuration protocol client utilities
 etc-dhclient-rc startup script for DHCP dynamic host configuration protocol client
 etc-dhcpd-rc startup script for DHCP dynamic host configuration protocol daemon
+etc-extsrc-rc startup scripts for externally added programs
 etc-games-etc configuration file for games
 etc-games-scores empty score files for games
 etc-ipf-rc startup scripts for IP filter

Index: src/distrib/sets/deps
diff -u src/distrib/sets/deps:1.10 src/distrib/sets/deps:1.11
--- src/distrib/sets/deps:1.10	Wed Nov 12 12:35:50 2008
+++ src/distrib/sets/deps	Mon Nov 30 16:13:23 2009
@@ -24,6 +24,7 @@
 base-dhcpd-examples base-sys-share
 base-efs-root base-sys-root
 base-ext2fs-root base-sys-root
+base-extsrc-root base-sys-root
 base-filecorefs-root base-sys-root
 base-fstab-examples base-sys-share
 base-games-root base-sys-root

Index: src/distrib/sets/descrs
diff -u src/distrib/sets/descrs:1.15 src/distrib/sets/descrs:1.16
--- src/distrib/sets/descrs:1.15	Wed Nov 12 12:35:50 2008
+++ src/distrib/sets/descrs	Mon Nov 30 16:13:23 2009
@@ -508,6 +508,7 @@
 etc-dhclient-etc	configuration files for DHCP dyanamic host configuration protocol client utilities
 etc-dhclient-rc	startup script for DHCP dynamic host configuration protocol client
 etc-dhcpd-rc	startup script for DHCP dynamic host configuration protocol daemon
+etc-extsrc-rc	startup scripts for externally added programs
 etc-games-etc	configuration file for games
 etc-games-scores	empty score files for games
 etc-ipf-rc	startup script for IP filter

Index: src/distrib/sets/makeflist
diff -u src/distrib/sets/makeflist:1.74 src/distrib/sets/makeflist:1.75
--- src/distrib/sets/makeflist:1.74	Wed Jan  4 13:40:23 2006
+++ src/distrib/sets/makeflist	Mon Nov 30 16:13:23 2009
@@ -1,6 +1,6 @@
 #!/bin/sh
 #
-# $NetBSD: makeflist,v 1.74 2006/01/04 13:40:23 apb Exp $
+# $NetBSD: makeflist,v 1.75 2009/11/30 16:13:23 uebayasi Exp $
 #
 # Print out the files in some or all lists.
 # Usage: makeflist [-bxlo] [-a arch] [-m machine] [-s setsdir] [setname ...]
@@ -13,9 +13,11 @@
 usage()
 {
 	cat 1>&2 <<USAGE
-Usage: ${0##*/} [-bxlo] [-a arch] [-m machine] [-s setsdir] [setname [...]]
+Usage: ${0##*/} [-L base,x,ext] [-bxyo] [-a arch] [-m machine] [-s setsdir] [setname [...]]
+	-L base,x,ext	print specified lists
 	-b		print netbsd + x11 lists
 	-x		print make x11 lists
+	-y		print make extsrc lists
 	-l		just list the selected set names, not the contents
 	-o		only match obsolete files
 	-a arch		set arch (e.g, m68k, mipseb, mipsel, powerpc) [${MACHINE_ARCH}]
@@ -27,14 +29,29 @@
 }
 
 # handle args
-while getopts bxloa:m:s: ch; do
+while getopts L:bxXloa:m:s: ch; do
 	case ${ch} in
+	L)
+		lists=$(
+			for _list in $( echo ${OPTARG} | tr , ' ' ); do
+				case $_list in
+				base)	echo "${nlists}" ;;
+				x)	echo "${xlists}" ;;
+				ext)	echo "${extlists}" ;;
+				esac
+			done
+		)
+		;;
+	# backward compat
 	b)
 		lists="${nlists} ${xlists}"
 		;;
 	x)
 		lists="${xlists}"
 		;;
+	y)
+		lists="${extlists}"
+		;;
 	l)
 		listonly=1
 		;;

Index: src/distrib/sets/makeobsolete
diff -u src/distrib/sets/makeobsolete:1.29 src/distrib/sets/makeobsolete:1.30
--- src/distrib/sets/makeobsolete:1.29	Sat Jan 28 19:01:23 2006
+++ src/distrib/sets/makeobsolete	Mon Nov 30 16:13:23 2009
@@ -1,6 +1,6 @@
 #!/bin/sh
 #
-# $NetBSD: makeobsolete,v 1.29 2006/01/28 19:01:23 apb Exp $
+# $NetBSD: makeobsolete,v 1.30 2009/11/30 16:13:23 uebayasi Exp $
 #
 # Print out the obsolete files for a set
 # Usage: makeobsolete [-b] [-x] [-a arch] [-m machine] [-s setsdir] \
@@ -17,8 +17,10 @@
 {
 	cat 1>&2 <<USAGE
 Usage: ${0##*/} [-a arch] [-m machine] [-s setsdir] [setname ...]
+	-L base,x,ext	make specified lists
 	-b		make netbsd + x11 lists
 	-x 		only make x11 lists
+	-y 		only make extsrc lists
 	-a arch		set arch (e.g, m68k, mips, powerpc)	[${MACHINE_ARCH}]
 	-m machine	set machine (e.g, amiga, i386, macppc)	[${MACHINE}]
 	-s setsdir	directory to find sets	[${setd}]
@@ -28,14 +30,29 @@
 	exit 1
 }
 
-while getopts bxa:m:s:t: ch; do
+while getopts L:bxya:m:s:t: ch; do
 	case ${ch} in
+	L)
+		lists=$(
+			for _list in $( echo ${OPTARG} | tr , ' ' ); do
+				case $_list in
+				base)	echo "${nlists}" ;;
+				x)	echo "${xlists}" ;;
+				ext)	echo "${extlists}" ;;
+				esac
+			done
+		)
+		;;
+	# backward compat
 	b)
-		lists="${xlists} ${nlists}"
+		lists="${nlists} ${xlists}"
 		;;
 	x)
 		lists="${xlists}"
 		;;
+	y)
+		lists="${extlists}"
+		;;
 	a)
 		MACHINE_ARCH="${OPTARG}"
 		MACHINE_CPU="$(arch_to_cpu "${OPTARG}")"

Index: src/distrib/sets/makesrctars
diff -u src/distrib/sets/makesrctars:1.37 src/distrib/sets/makesrctars:1.38
--- src/distrib/sets/makesrctars:1.37	Sat Sep 19 07:09:54 2009
+++ src/distrib/sets/makesrctars	Mon Nov 30 16:13:23 2009
@@ -1,6 +1,6 @@
 #! /bin/sh
 #
-#	$NetBSD: makesrctars,v 1.37 2009/09/19 07:09:54 snj Exp $
+#	$NetBSD: makesrctars,v 1.38 2009/11/30 16:13:23 uebayasi Exp $
 #
 # makesrctars srcdir setdir
 #	Create source tarballs in setdir from the source under srcdir.
@@ -20,11 +20,12 @@
 usage()
 {
 	cat 1>&2 <<USAGE
-Usage: ${prog} [-N password/group dir] [-q] [-x xsrcdir] srcdir setdir
+Usage: ${prog} [-N password/group dir] [-q] [-x xsrcdir] [-y extsrcsrcdir] srcdir setdir
 	-N dir		location which contains master.passwd and group files
 			(defaults to \${srcdir}/etc)
 	-q		quiet operation
 	-x xsrcdir	build xsrc.tgz from xsrcdir
+	-y extsrcsrcdir	build extsrc.tgz from extsrcsrcdir
 	srcdir		location of sources
 	setdir		where to write the .tgz files to
 USAGE
@@ -38,7 +39,7 @@
 
 
 # handle args
-while getopts N:qx: ch; do
+while getopts N:qx:y: ch; do
 	case ${ch} in
 	q)
 		quiet=true
@@ -46,6 +47,9 @@
 	x)
 		xsrcdir="${OPTARG}"
 		;;
+	y)
+		extsrcsrcdir="${OPTARG}"
+		;;
 	N)
 		PASSWD="${OPTARG}"
 		;;
@@ -132,6 +136,18 @@
 fi
 
 
+# create extsrc sets
+#
+if [ -n "${extsrcsrcdir}" ]; then
+	if ! cd "${extsrcsrcdir}"; then
+		echo >&2 "${prog}: can't chdir to ${extsrcsrcdir}"
+		exit 1
+	fi
+	srcprefix=usr/extsrc
+	makeset extsrc .
+fi
+
+
 msg "Creating checksum files"
 (cd "${setdir}"
 	${CKSUM} -a md5  *.tgz > MD5

Index: src/distrib/sets/maketars
diff -u src/distrib/sets/maketars:1.69 src/distrib/sets/maketars:1.70
--- src/distrib/sets/maketars:1.69	Sat Sep 12 11:01:55 2009
+++ src/distrib/sets/maketars	Mon Nov 30 16:13:23 2009
@@ -1,6 +1,6 @@
 #!/bin/sh
 #
-# $NetBSD: maketars,v 1.69 2009/09/12 11:01:55 apb Exp $
+# $NetBSD: maketars,v 1.70 2009/11/30 16:13:23 uebayasi Exp $
 #
 # Make release tar files for some or all lists.  Usage:
 # maketars [-b] [-x] [-i installdir] [-a arch] [-m machine] [-s setsdir]
@@ -8,10 +8,11 @@
 #
 # The default sets are "base comp etc games man misc tests text"
 # The X sets are "xbase xcomp xetc xfont xserver"
+# The extsrc sets are "extbase extcomp extetc"
 #
 # If '-i installdir' is given, copy the given sets to installdir
 # (using pax -rw ...) instead of creating tar files.
-# In this case, remove "etc" and "xetc" from the list of default sets.
+# In this case, remove "etc", "xetc", and "extetc" from the list of default sets.
 #
 
 prog="${0##*/}"
@@ -31,11 +32,14 @@
 usage()
 {
 	cat 1>&2 <<USAGE
-Usage: ${prog} [-b] [-x] [-i idir] [-a arch] [-m machine] [-s setsdir] [-S]
+Usage: ${prog} [-L base,x,ext] [-b] [-x] [-y] [-i idir] [-a arch] [-m machine] [-s setsdir] [-S]
 	    [-M metalog] [-N etcdir] [-d dest] [-t targetdir] [setname ...]
+	-L base,x,ext	Make specified lists
 	-b		Make both netbsd and x11 lists
 	-x		Only make x11 lists
 		[Default: make netbsd lists]
+	-y		Only make extsrc lists
+		[Default: make netbsd lists]
 	-i idir		Install sets to idir instead of creating tar files
 	-a arch		Set arch (e.g, m68k, mipseb, mipsel, powerpc) [${MACHINE_ARCH}]
 	-m machine	Set machine (e.g, amiga, i386, macppc) [${MACHINE}]
@@ -57,14 +61,29 @@
 }
 
 # handle args
-while getopts bxi:a:m:qs:SM:N:d:t: ch; do
+while getopts L:bxyi:a:m:qs:SM:N:d:t: ch; do
 	case ${ch} in
+	L)
+		lists=$(
+			for _list in $( echo ${OPTARG} | tr , ' ' ); do
+				case $_list in
+				base)	echo "${nlists}" ;;
+				x)	echo "${xlists}" ;;
+				ext)	echo "${extlists}" ;;
+				esac
+			done
+		)
+		;;
+	# backward compat
 	b)
 		lists="${nlists} ${xlists}"
 		;;
 	x)
 		lists="${xlists}"
 		;;
+	y)
+		lists="${extlists}"
+		;;
 	i)
 		installdir="${OPTARG}"
 		;;
@@ -102,8 +121,8 @@
 	esac
 done
 shift $((${OPTIND} - 1))
-if [ -n "${installdir}" ]; then	# if -i, remove etc & xetc from the default list
-	lists="$(echo ${lists} | ${SED} -e 's/ etc / /;s/ xetc / /')"
+if [ -n "${installdir}" ]; then	# if -i, remove etc + xetc + extetc from the default list
+	lists="$(echo ${lists} | ${SED} -e 's/ etc / /;s/ xetc / /;s/ extetc / /')"
 fi
 if [ -n "$*" ]; then
 	lists="$*"

Index: src/distrib/sets/sets.subr
diff -u src/distrib/sets/sets.subr:1.91 src/distrib/sets/sets.subr:1.92
--- src/distrib/sets/sets.subr:1.91	Thu Nov  5 17:34:25 2009
+++ src/distrib/sets/sets.subr	Mon Nov 30 16:13:23 2009
@@ -1,4 +1,4 @@
-#	$NetBSD: sets.subr,v 1.91 2009/11/05 17:34:25 dyoung Exp $
+#	$NetBSD: sets.subr,v 1.92 2009/11/30 16:13:23 uebayasi Exp $
 #
 
 #
@@ -6,6 +6,7 @@
 #	setsdir			path to src/distrib/sets
 #	nlists			list of base sets
 #	xlists			list of x11 sets
+#	extlists		list of extsrc sets
 #	obsolete		controls if obsolete files are selected instead
 #	module			if != "no", enable MODULE sets
 #	shlib			shared library format (a.out, elf, or "")
@@ -36,6 +37,7 @@
 	MKDEBUGLIB	\
 	MKDOC		\
 	MKDYNAMICROOT	\
+	MKEXTSRC	\
 	MKGCC		\
 	MKGCCCMDS	\
 	MKGDB		\
@@ -225,6 +227,7 @@
 	nlists="base comp etc games man misc tests text"
 fi
 xlists="xbase xcomp xetc xfont xserver"
+extlists="extbase extcomp extetc"
 
 OSRELEASE=`${HOST_SH} ${NETBSDSRCDIR}/sys/conf/osrelease.sh`
 MODULEDIR="stand/${MACHINE}/${OSRELEASE}/modules"
@@ -239,7 +242,7 @@
 # In each file, a record consists of a path and a System Package name,
 # separated by whitespace. E.g.,
 #
-# 	# $NetBSD: sets.subr,v 1.91 2009/11/05 17:34:25 dyoung Exp $
+# 	# $NetBSD: sets.subr,v 1.92 2009/11/30 16:13:23 uebayasi Exp $
 # 	.			base-sys-root	[keyword[,...]]
 # 	./altroot		base-sys-root
 # 	./bin			base-sys-root
@@ -272,6 +275,7 @@
 #	debuglib		${MKDEBUGLIB} != no
 #	doc			${MKDOC} != no
 #	dynamicroot		${MKDYNAMICROOT} != no
+#	extsrc			${MKEXTSRC} != no
 #	gcc			${MKGCC} != no
 #	gcccmds			${MKGCCCMDS} != no
 #	gdb			${MKGDB} != no
@@ -415,15 +419,18 @@
 # For a given setname $set, the following files may be selected from
 # .../list/$set:
 #	mi
+#	mi.ext.*
 #	ad.${MACHINE_ARCH}
 # (or)	ad.${MACHINE_CPU}
 #	ad.${MACHINE_CPU}.shl
 #	md.${MACHINE}.${MACHINE_ARCH}
 # (or)	md.${MACHINE}
 #	stl.mi
-#	stl.stlib
+#	stl.${stlib}
 #	shl.mi
-#	shl.shlib
+#	shl.mi.ext.*
+#	shl.${shlib}
+#	shl.${shlib}.ext.*
 #	module.mi			if ${module} != no
 #	module.${MACHINE}		if ${module} != no
 #	module.ad.${MACHINE_ARCH}	if ${module} != no
@@ -444,6 +451,11 @@
 
 	setdir=$setsdir/lists/$setname
 	echo $setdir/mi
+	for _extsrc_pkg in ${EXTSRCS}; do
+		if [ -f $setdir/mi.ext.${_extsrc_pkg} ]; then
+			echo $setdir/mi.ext.${_extsrc_pkg}
+		fi
+	done
 	if [ "${MACHINE}" != "${MACHINE_ARCH}" ]; then
 		# Prefer an ad.${MACHINE_ARCH} over an ad.${MACHINE_CPU},
 		# since the arch-specific one will be more specific than
@@ -473,9 +485,19 @@
 		if [ -f $setdir/shl.mi ]; then
 			echo $setdir/shl.mi
 		fi
+		for _extsrc_pkg in ${EXTSRCS}; do
+			if [ -f $setdir/shl.mi.ext.${_extsrc_pkg} ]; then
+				echo $setdir/shl.mi.ext.${_extsrc_pkg}
+			fi
+		done
 		if [ -f $setdir/shl.${shlib} ]; then
 			echo $setdir/shl.${shlib}
 		fi
+		for _extsrc_pkg in ${EXTSRCS}; do
+			if [ -f $setdir/shl.${shlib}.ext.${_extsrc_pkg} ]; then
+				echo $setdir/shl.${shlib}.ext.${_extsrc_pkg}
+			fi
+		done
 	fi
 	if [ "$module" != "no" ]; then
 		if [ -f $setdir/module.mi ]; then

Index: src/etc/Makefile
diff -u src/etc/Makefile:1.373 src/etc/Makefile:1.374
--- src/etc/Makefile:1.373	Tue Sep 29 23:56:27 2009
+++ src/etc/Makefile	Mon Nov 30 16:13:22 2009
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile,v 1.373 2009/09/29 23:56:27 tsarna Exp $
+#	$NetBSD: Makefile,v 1.374 2009/11/30 16:13:22 uebayasi Exp $
 #	from: @(#)Makefile	8.7 (Berkeley) 5/25/95
 
 # Environment variables without default values:
@@ -165,6 +165,9 @@
 	${MAKEDIRTARGET} ${NETBSDSRCDIR}/x11 distribution
 .  endif
 . endif
+. if ${MKEXTSRC} != "no"
+	${MAKEDIRTARGET} ${NETBSDSRCDIR}/extsrc distribution
+. endif
 	${MAKEDIRTARGET} ${NETBSDSRCDIR}/distrib/sets makesetfiles
 .endif	# !DISTRIBUTION_DONE
 

Index: src/etc/mtree/Makefile
diff -u src/etc/mtree/Makefile:1.10 src/etc/mtree/Makefile:1.11
--- src/etc/mtree/Makefile:1.10	Thu Nov 19 19:57:40 2009
+++ src/etc/mtree/Makefile	Mon Nov 30 16:13:22 2009
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile,v 1.10 2009/11/19 19:57:40 drochner Exp $
+#	$NetBSD: Makefile,v 1.11 2009/11/30 16:13:22 uebayasi Exp $
 
 .include <bsd.own.mk>
 
@@ -8,12 +8,14 @@
 . else
 NETBSD_DIST_X11_FILE=	${.CURDIR}/NetBSD.dist.XFree86
 . endif
-.else
-NETBSD_DIST_X11_FILE=
 .endif
 
-NetBSD.dist:	NetBSD.dist.base ${NETBSD_DIST_X11_FILE}
-	${TOOL_CAT} ${.CURDIR}/NetBSD.dist.base ${NETBSD_DIST_X11_FILE} > \
+.if ${MKEXTSRC} != "no"
+NETBSD_DIST_EXTSRC_FILE=	${.CURDIR}/NetBSD.dist.extsrc
+.endif
+
+NetBSD.dist:	NetBSD.dist.base ${NETBSD_DIST_X11_FILE} ${NETBSD_DIST_EXTSRC_FILE}
+	${TOOL_CAT} ${.CURDIR}/NetBSD.dist.base ${NETBSD_DIST_X11_FILE} ${NETBSD_DIST_EXTSRC_FILE} > \
 	    ${.TARGET}
 
 CONFIGFILES=	NetBSD.dist special

Index: src/share/mk/bsd.README
diff -u src/share/mk/bsd.README:1.259 src/share/mk/bsd.README:1.260
--- src/share/mk/bsd.README:1.259	Sun Nov 15 14:59:47 2009
+++ src/share/mk/bsd.README	Mon Nov 30 16:13:23 2009
@@ -1,4 +1,4 @@
-#	$NetBSD: bsd.README,v 1.259 2009/11/15 14:59:47 pgoyette Exp $
+#	$NetBSD: bsd.README,v 1.260 2009/11/30 16:13:23 uebayasi Exp $
 #	@(#)bsd.README	8.2 (Berkeley) 4/2/94
 
 This is the README file for the make "include" files for the NetBSD
@@ -163,6 +163,11 @@
 		install the shared linker into /libexec.
 		Default: yes
 
+MKEXTSRC        If not "no", 'make build' also descends into either src/extsrc
+		to cross-build programs and libraries externally added by
+		users, and automatically enables creation of those sets.
+		Default: no
+
 MKGCC		If "no", don't build gcc(1) or any of the GCC-related
 		libraries (libgcc, libobjc, libstdc++).
 		Default: yes

Index: src/share/mk/bsd.own.mk
diff -u src/share/mk/bsd.own.mk:1.597 src/share/mk/bsd.own.mk:1.598
--- src/share/mk/bsd.own.mk:1.597	Sat Nov 28 16:48:25 2009
+++ src/share/mk/bsd.own.mk	Mon Nov 30 16:13:23 2009
@@ -1,4 +1,4 @@
-#	$NetBSD: bsd.own.mk,v 1.597 2009/11/28 16:48:25 mbalmer Exp $
+#	$NetBSD: bsd.own.mk,v 1.598 2009/11/30 16:13:23 uebayasi Exp $
 
 .if !defined(_BSD_OWN_MK_)
 _BSD_OWN_MK_=1
@@ -518,7 +518,8 @@
 # On the MIPS, all libs are compiled with ABIcalls (and are thus PIC),
 # not just shared libraries, so don't build the _pic version.
 #
-.if ${MACHINE_ARCH} == "mipsel" || ${MACHINE_ARCH} == "mipseb"
+.if ${MACHINE_ARCH} == "mipsel" || ${MACHINE_ARCH} == "mipseb" || \
+    ${MACHINE_ARCH} == "mips64el" || ${MACHINE_ARCH} == "mips64eb"
 MKPICLIB:=	no
 .endif
 
@@ -690,6 +691,7 @@
 #
 .for var in \
 	MKCRYPTO_IDEA MKCRYPTO_MDC2 MKCRYPTO_RC5 MKDEBUG MKDEBUGLIB \
+	MKEXTSRC \
 	MKLVM \
 	MKMANDOC MKMANZ MKOBJDIRS \
 	MKPCC MKPCCCMDS \
@@ -932,6 +934,25 @@
 
 
 #
+# Where extsrc sources are and where it is installed to.
+#
+.if !defined(EXTSRCSRCDIR)
+.if exists(${NETBSDSRCDIR}/../extsrc)
+EXTSRCSRCDIR!=		cd ${NETBSDSRCDIR}/../extsrc && pwd
+.else
+EXTSRCSRCDIR=		/usr/extsrc
+.endif
+.endif # !defined(EXTSRCSRCDIR)
+
+EXTSRCROOTDIR?=		/usr/ext
+EXTSRCBINDIR?=		${EXTSRCROOTDIR}/bin
+EXTSRCETCDIR?=		/etc/ext
+EXTSRCINCDIR?=		${EXTSRCROOTDIR}/include
+EXTSRCLIBDIR?=		${EXTSRCROOTDIR}/lib/ext
+EXTSRCMANDIR?=		${EXTSRCROOTDIR}/man
+EXTSRCUSRLIBDIR?=	${EXTSRCROOTDIR}/lib
+
+#
 # MAKEDIRTARGET dir target [extra make(1) params]
 #	run "cd $${dir} && ${MAKE} [params] $${target}", with a pretty message
 #

Index: src/share/mk/bsd.sys.mk
diff -u src/share/mk/bsd.sys.mk:1.185 src/share/mk/bsd.sys.mk:1.186
--- src/share/mk/bsd.sys.mk:1.185	Thu Nov 12 14:30:34 2009
+++ src/share/mk/bsd.sys.mk	Mon Nov 30 16:13:23 2009
@@ -1,4 +1,4 @@
-#	$NetBSD: bsd.sys.mk,v 1.185 2009/11/12 14:30:34 tron Exp $
+#	$NetBSD: bsd.sys.mk,v 1.186 2009/11/30 16:13:23 uebayasi Exp $
 #
 # Build definitions used for NetBSD source tree builds.
 
@@ -53,7 +53,8 @@
 .if (${MACHINE_ARCH} == "alpha") || \
     (${MACHINE_ARCH} == "hppa") || \
     (${MACHINE_ARCH} == "ia64") || \
-    (${MACHINE_ARCH} == "mipsel") || (${MACHINE_ARCH} == "mipseb")
+    (${MACHINE_ARCH} == "mipsel") || (${MACHINE_ARCH} == "mipseb") || \
+    (${MACHINE_ARCH} == "mips64el") || (${MACHINE_ARCH} == "mips64eb")
 HAS_SSP=	no
 .else
 HAS_SSP=	yes

Reply via email to