Module Name:    src
Committed By:   joerg
Date:           Fri Aug 17 16:22:28 UTC 2012

Modified Files:
        src: Makefile
        src/compat: Makefile compatsubdir.mk
        src/compat/dirshack: Makefile
        src/lib: Makefile
        src/sys: Makefile

Log Message:
Implement build_install in src/lib/Makefile, which traverses the
subdirectories and invokes dependall/install. Do this in groups
delimited by .WAIT to ensure that depending libraries can use the
installed versions and don't need to know the locations in the source
tree.

Use this new target in src/Makefile to replace most of the adhoc library
logic with two special cases, src/lib and src/compat. Adjust
sys/Makefile to include the module directory when building them. Add
some necessary .WAITs in src/lib/Makefile to reflect the dependencies
from src/Makefile and also add the rump libraries here.


To generate a diff of this commit:
cvs rdiff -u -r1.298 -r1.299 src/Makefile
cvs rdiff -u -r1.5 -r1.6 src/compat/Makefile
cvs rdiff -u -r1.7 -r1.8 src/compat/compatsubdir.mk
cvs rdiff -u -r1.2 -r1.3 src/compat/dirshack/Makefile
cvs rdiff -u -r1.187 -r1.188 src/lib/Makefile
cvs rdiff -u -r1.77 -r1.78 src/sys/Makefile

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

Modified files:

Index: src/Makefile
diff -u src/Makefile:1.298 src/Makefile:1.299
--- src/Makefile:1.298	Wed Aug 15 12:50:12 2012
+++ src/Makefile	Fri Aug 17 16:22:27 2012
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile,v 1.298 2012/08/15 12:50:12 apb Exp $
+#	$NetBSD: Makefile,v 1.299 2012/08/17 16:22:27 joerg Exp $
 
 #
 # This is the top-level makefile for building NetBSD. For an outline of
@@ -92,27 +92,9 @@
 #   includes:        installs include files.
 #   do-tools-compat: builds the "libnbcompat" library; needed for some
 #                    random host tool programs in the source tree.
-#   do-lib-csu:      builds and installs prerequisites from lib/csu.
-#   do-libgcc:       builds and installs prerequisites from
-#                    gnu/lib/crtstuff${LIBGCC_EXT} (if necessary) and
-#                    gnu/lib/libgcc${LIBGCC_EXT}.
-#   do-libpcc:       builds and install prerequisites from
-#                    external/bsd/pcc/crtstuff (if necessary) and
-#                    external/bsd/pcc/libpcc.
-#   do-lib-libc:     builds and installs prerequisites from lib/libc.
-#   do-lib:          builds and installs prerequisites from lib.
-#   do-sys-rump-dev-lib: builds and installs prerequisites from sys/rump/dev/lib
-#   do-sys-rump-fs-lib:  builds and installs prerequisites from sys/rump/fs/lib
-#   do-sys-rump-kern-lib:  builds and installs prereq. from sys/rump/kern/lib
-#   do-sys-rump-net-lib: builds and installs prerequisites from sys/rump/net/lib
-#   do-sys-modules:  builds and installs kernel modules (used by rump binaries)
-#   do-ld.so:        builds and installs prerequisites from libexec/ld.*_so.
-#   do-compat-lib-csu: builds and installs prerequisites from compat/lib/csu
+#   do-lib:          builds and installs prerequisites from lib
 #                    if ${MKCOMPAT} != "no".
-#   do-compat-libgcc: builds and installs prerequisites from
-#                    compat/gnu/lib/crtstuff${LIBGCC_EXT} (if necessary) and
-#                    compat/gnu/lib/libgcc${LIBGCC_EXT} if ${MKCOMPAT} != "no".
-#   do-compat-lib-libc: builds and installs prerequisites from compat/lib/libc
+#   do-compat-lib:   builds and installs prerequisites from compat/lib
 #                    if ${MKCOMPAT} != "no".
 #   do-build:        builds and installs the entire system.
 #   do-x11:          builds and installs X11 if ${MKX11} != "no"; either
@@ -250,29 +232,8 @@ BUILDTARGETS+=	do-distrib-dirs
 .if !defined(NOINCLUDES)
 BUILDTARGETS+=	includes
 .endif
-BUILDTARGETS+=	do-tools-compat
-BUILDTARGETS+=	do-lib-csu
-.if ${MKGCC} != "no"
-BUILDTARGETS+=	do-libgcc
-.endif
-.if ${MKPCC} != "no"
-BUILDTARGET+=	do-libpcc
-.endif
-BUILDTARGETS+=	do-lib-libc
 BUILDTARGETS+=	do-lib
-.if ${MKKMOD} != "no"
-BUILDTARGETS+=	do-sys-modules
-.endif
-.if ${MKRUMP} != "no"
-BUILDTARGETS+=	do-sys-rump-dev-lib do-sys-rump-fs-lib
-BUILDTARGETS+=	do-sys-rump-kern-lib do-sys-rump-net-lib
-.endif
-.if ${MKCOMPAT} != "no"
-BUILDTARGETS+=	do-compat-lib-csu
-BUILDTARGETS+=	do-compat-libgcc
-BUILDTARGETS+=	do-compat-lib-libc
-.endif
-BUILDTARGETS+=	do-ld.so
+BUILDTARGETS+=	do-compat-lib
 BUILDTARGETS+=	do-build
 .if ${MKX11} != "no"
 BUILDTARGETS+=	do-x11
@@ -471,32 +432,18 @@ do-${targ}: .PHONY ${targ}
 	@true
 .endfor
 
-.if defined(HAVE_GCC)
-.if ${USE_COMPILERCRTSTUFF} == "yes"
-BUILD_CC_LIB= ${BUILD_CC_LIB_BASEDIR}/crtstuff${LIBGCC_EXT}
-.endif
-BUILD_CC_LIB+= ${BUILD_CC_LIB_BASEDIR}/libgcc${LIBGCC_EXT}
-.elif defined(HAVE_PCC)
-BUILD_CC_LIB+= external/bsd/pcc/crtstuff
-BUILD_CC_LIB+= external/bsd/pcc/libpcc
-.endif
-
-.for dir in tools tools/compat lib/csu ${BUILD_CC_LIB} lib/libc lib sys/rump/dev/lib sys/rump/fs/lib sys/rump/kern/lib sys/rump/net/lib sys/modules
+.for dir in tools tools/compat
 do-${dir:S/\//-/g}: .PHONY .MAKE
 .for targ in dependall install
 	${MAKEDIRTARGET} ${dir} ${targ}
 .endfor
 .endfor
 
-.if ${MKCOMPAT} != "no"
-COMPAT_SUBDIR_LIST=lib/csu ${BUILD_CC_LIB} lib/libc
-.for dir in ${COMPAT_SUBDIR_LIST}
-do-compat-${dir:S/\//-/g}: .PHONY .MAKE
-.for targ in dependall install
-	${MAKEDIRTARGET} compat ${targ} BOOTSTRAP_SUBDIRS="../../../${dir}"
-.endfor
-.endfor
-.endif
+do-lib: .PHONY .MAKE
+	${MAKEDIRTARGET} lib build_install
+
+do-compat-lib: .PHONY .MAKE
+	${MAKEDIRTARGET} compat build_install BOOTSTRAP_SUBDIRS="../../../lib"
 
 do-top-obj: .PHONY .MAKE
 	${MAKEDIRTARGET} . obj NOSUBDIR=
@@ -504,41 +451,6 @@ do-top-obj: .PHONY .MAKE
 do-tools-obj: .PHONY .MAKE
 	${MAKEDIRTARGET} tools obj
 
-do-libgcc: .PHONY .MAKE
-.if defined(HAVE_GCC)
-.if ${MKGCC} != "no"
-.if ${USE_COMPILERCRTSTUFF} == "yes"
-	${MAKEDIRTARGET} . do-${BUILD_CC_LIB_BASETARGET}-crtstuff${LIBGCC_EXT}
-.endif
-	${MAKEDIRTARGET} . do-${BUILD_CC_LIB_BASETARGET}-libgcc${LIBGCC_EXT}
-.endif
-.endif
-
-do-compat-libgcc: .PHONY .MAKE
-.if defined(HAVE_GCC)
-.if ${MKGCC} != "no"
-.if ${USE_COMPILERCRTSTUFF} == "yes"
-	${MAKEDIRTARGET} . do-compat-${BUILD_CC_LIB_BASETARGET}-crtstuff${LIBGCC_EXT}
-.endif
-	${MAKEDIRTARGET} . do-compat-${BUILD_CC_LIB_BASETARGET}-libgcc${LIBGCC_EXT}
-.endif
-.endif
-
-do-libpcc: .PHONY .MAKE
-.if defined(HAVE_PCC)
-.if ${MKPCC} != "no"
-.if ${USE_COMPILERCRTSTUFF} == "yes"
-	${MAKEDIRTARGET} . do-pcc-lib-crtstuff
-.endif
-	${MAKEDIRTARGET} . do-pcc-lib-libpcc
-.endif
-.endif
-
-do-ld.so: .PHONY .MAKE
-.for targ in dependall install
-	${MAKEDIRTARGET} libexec/ld.elf_so ${targ}
-.endfor
-
 do-build: .PHONY .MAKE
 .for targ in dependall install
 	${MAKEDIRTARGET} . ${targ} BUILD_tools=no BUILD_lib=no

Index: src/compat/Makefile
diff -u src/compat/Makefile:1.5 src/compat/Makefile:1.6
--- src/compat/Makefile:1.5	Sun Dec 13 09:27:13 2009
+++ src/compat/Makefile	Fri Aug 17 16:22:27 2012
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile,v 1.5 2009/12/13 09:27:13 mrg Exp $
+#	$NetBSD: Makefile,v 1.6 2012/08/17 16:22:27 joerg Exp $
 
 # Build multi-abi libaries
 
@@ -14,4 +14,6 @@ SUBDIR=	dirshack .WAIT ${ARCHDIR_SUBDIR}
 .endif
 .endif
 
+TARGETS+=	build_install
+
 .include <bsd.subdir.mk>

Index: src/compat/compatsubdir.mk
diff -u src/compat/compatsubdir.mk:1.7 src/compat/compatsubdir.mk:1.8
--- src/compat/compatsubdir.mk:1.7	Mon Jan 31 10:58:14 2011
+++ src/compat/compatsubdir.mk	Fri Aug 17 16:22:27 2012
@@ -1,9 +1,11 @@
-#	$NetBSD: compatsubdir.mk,v 1.7 2011/01/31 10:58:14 matt Exp $
+#	$NetBSD: compatsubdir.mk,v 1.8 2012/08/17 16:22:27 joerg Exp $
 
 # Build netbsd libraries.
 
 .include <bsd.own.mk>
 
+TARGETS+=	build_install
+
 .if ${MKCOMPAT} != "no"
 .if !make(includes)
 

Index: src/compat/dirshack/Makefile
diff -u src/compat/dirshack/Makefile:1.2 src/compat/dirshack/Makefile:1.3
--- src/compat/dirshack/Makefile:1.2	Sun Apr 17 01:29:06 2011
+++ src/compat/dirshack/Makefile	Fri Aug 17 16:22:27 2012
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile,v 1.2 2011/04/17 01:29:06 mrg Exp $
+#	$NetBSD: Makefile,v 1.3 2012/08/17 16:22:27 joerg Exp $
 
 # hacky method to get compat multilib base objdirs created before
 # make tries to go create the subdirs used for builds.
@@ -15,6 +15,8 @@
 
 .include <bsd.own.mk>
 
+TARGETS+=	build_install
+
 .if ${MKCOMPAT} != "no"
 .if make(obj)
 

Index: src/lib/Makefile
diff -u src/lib/Makefile:1.187 src/lib/Makefile:1.188
--- src/lib/Makefile:1.187	Wed Aug  8 14:01:16 2012
+++ src/lib/Makefile	Fri Aug 17 16:22:27 2012
@@ -1,21 +1,21 @@
-#	$NetBSD: Makefile,v 1.187 2012/08/08 14:01:16 christos Exp $
+#	$NetBSD: Makefile,v 1.188 2012/08/17 16:22:27 joerg Exp $
 #	from: @(#)Makefile	5.25.1.1 (Berkeley) 5/7/91
 
 .include <bsd.own.mk>
 
-SUBDIR=		csu
+SUBDIR=		csu .WAIT
 
 .if (${MKGCC} != "no")
 . if ${HAVE_GCC} == 4
 .  if (${USE_COMPILERCRTSTUFF} == "yes")
-SUBDIR+=	../gnu/lib/crtstuff4
+SUBDIR+=	../gnu/lib/crtstuff4 .WAIT
 .  endif
-SUBDIR+=	../gnu/lib/libgcc4
+SUBDIR+=	../gnu/lib/libgcc4 .WAIT
 . else
 .  if (${USE_COMPILERCRTSTUFF} == "yes")
-SUBDIR+=	../external/gpl3/gcc/lib/crtstuff
+SUBDIR+=	../external/gpl3/gcc/lib/crtstuff .WAIT
 .  endif
-SUBDIR+=	../external/gpl3/gcc/lib/libgcc
+SUBDIR+=	../external/gpl3/gcc/lib/libgcc .WAIT
 . endif
 .endif
 
@@ -202,9 +202,42 @@ SUBDIR+=	libukfs		# depends on librumpvf
 SUBDIR+=	.WAIT
 
 SUBDIR+=	libp2k		# depends on libukfs, librumpvfs, libpuffs
+
+.if !defined(BSD_MK_COMPAT_FILE)
+SUBDIR+=	../sys/rump/dev/lib
+SUBDIR+=	../sys/rump/fs/lib
+SUBDIR+=	../sys/rump/kern/lib
+SUBDIR+=	../sys/rump/net/lib
+.endif
 .endif
 
 # Lua bindings come last, they might depend on anything
 SUBDIR+=	lua
 
+#
+# build_install logic for src/Makefile.
+# Compute a list of subdirectories delimited by .WAIT.
+# Run "make dependall && make install" for all subdirectories in a group
+# concurrently, but wait after each group.
+#
+SUBDIR_GROUPS=	1
+CUR_GROUP:=	1
+.for dir in ${SUBDIR}
+.  if ${dir} == ".WAIT"
+CUR_GROUP:=	${CUR_GROUP}1
+SUBDIR_GROUPS:=	${SUBDIR_GROUPS} ${CUR_GROUP}
+.  else
+SUBDIR_GROUP.${CUR_GROUP}+=	${dir}
+.endif
+
+.endfor
+
+build_install:
+.for group in ${SUBDIR_GROUPS}
+.  if !empty(SUBDIR_GROUP.${group})
+	${MAKEDIRTARGET} . ${SUBDIR_GROUP.${group}:C/^/dependall-/}
+	${MAKEDIRTARGET} . ${SUBDIR_GROUP.${group}:C/^/install-/}
+.  endif
+.endfor
+
 .include <bsd.subdir.mk>

Index: src/sys/Makefile
diff -u src/sys/Makefile:1.77 src/sys/Makefile:1.78
--- src/sys/Makefile:1.77	Wed Jun 15 09:45:59 2011
+++ src/sys/Makefile	Fri Aug 17 16:22:27 2012
@@ -1,4 +1,6 @@
-#	$NetBSD: Makefile,v 1.77 2011/06/15 09:45:59 mrg Exp $
+#	$NetBSD: Makefile,v 1.78 2012/08/17 16:22:27 joerg Exp $
+
+.include <bsd.own.mk>
 
 SUBDIR=	altq arch compat dev fs miscfs \
 	net net80211 netatalk netbt netipsec netinet netinet6 \
@@ -7,7 +9,7 @@ SUBDIR=	altq arch compat dev fs miscfs \
 
 # interrupt implementation depends on the kernel within the port
 #.if (${MACHINE} != "evbppc")
-.if make(obj) || make(cleandir)
+.if make(obj) || make(cleandir) || ${MKKMOD} != "no"
 SUBDIR+=modules
 .endif
 #.endif

Reply via email to