Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src Implement build_install in src/lib/Makefile, which traverses...



details:   https://anonhg.NetBSD.org/src/rev/941cf6457633
branches:  trunk
changeset: 781079:941cf6457633
user:      joerg <joerg%NetBSD.org@localhost>
date:      Fri Aug 17 16:22:27 2012 +0000

description:
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.

diffstat:

 Makefile                 |  108 ++++------------------------------------------
 compat/Makefile          |    4 +-
 compat/compatsubdir.mk   |    4 +-
 compat/dirshack/Makefile |    4 +-
 lib/Makefile             |   45 ++++++++++++++++--
 sys/Makefile             |    6 +-
 6 files changed, 62 insertions(+), 109 deletions(-)

diffs (295 lines):

diff -r b15f1da65294 -r 941cf6457633 Makefile
--- a/Makefile  Fri Aug 17 16:21:19 2012 +0000
+++ b/Makefile  Fri Aug 17 16:22:27 2012 +0000
@@ -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 @@
 .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 @@
        @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-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
diff -r b15f1da65294 -r 941cf6457633 compat/Makefile
--- a/compat/Makefile   Fri Aug 17 16:21:19 2012 +0000
+++ b/compat/Makefile   Fri Aug 17 16:22:27 2012 +0000
@@ -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 @@
 .endif
 .endif
 
+TARGETS+=      build_install
+
 .include <bsd.subdir.mk>
diff -r b15f1da65294 -r 941cf6457633 compat/compatsubdir.mk
--- a/compat/compatsubdir.mk    Fri Aug 17 16:21:19 2012 +0000
+++ b/compat/compatsubdir.mk    Fri Aug 17 16:22:27 2012 +0000
@@ -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)
 
diff -r b15f1da65294 -r 941cf6457633 compat/dirshack/Makefile
--- a/compat/dirshack/Makefile  Fri Aug 17 16:21:19 2012 +0000
+++ b/compat/dirshack/Makefile  Fri Aug 17 16:22:27 2012 +0000
@@ -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)
 
diff -r b15f1da65294 -r 941cf6457633 lib/Makefile
--- a/lib/Makefile      Fri Aug 17 16:21:19 2012 +0000
+++ b/lib/Makefile      Fri Aug 17 16:22:27 2012 +0000
@@ -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+=       .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>
diff -r b15f1da65294 -r 941cf6457633 sys/Makefile
--- a/sys/Makefile      Fri Aug 17 16:21:19 2012 +0000
+++ b/sys/Makefile      Fri Aug 17 16:22:27 2012 +0000
@@ -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 @@
 
 # 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



Home | Main Index | Thread Index | Old Index