freebsd-skq/usr.sbin/Makefile
Dimitry Andric 54ff5d7323 Add a SUBDIR_PARALLEL option to bsd.subdir.mk, to allow make to process
all the SUBDIR entries in parallel, instead of serially.  Apply this
option to a selected number of Makefiles, which can greatly speed up the
build on multi-core machines, when using make -j.

This can be extended to more Makefiles later on, whenever they are
verified to work correctly with parallel building.

I tested this on a 24-core machine, with make -j48 buildworld (N = 6):

                before    stddev       after    stddev
                =======   ======       =======  ======
real time        1741.1     16.5         959.8     2.7
user time       12468.7     16.4       14393.0    16.8
sys  time        1825.0     54.8        2110.6    22.8

(user+sys)/real     8.2                   17.1

E.g. the build was approximately 45% faster in real time.  On machines
with less cores, or with lower -j settings, the speedup will not be as
impressive.  But at least you can now almost max out a machine with
buildworld!

Submitted by:	jilles
MFC after:	2 weeks
2014-03-26 22:30:38 +00:00

326 lines
4.2 KiB
Makefile

# From: @(#)Makefile 5.20 (Berkeley) 6/12/93
# $FreeBSD$
.include <bsd.own.mk>
SUBDIR= adduser \
arp \
bootparamd \
bsdconfig \
bsdinstall \
cdcontrol \
chkgrp \
chown \
chroot \
ckdist \
clear_locks \
crashinfo \
cron \
ctladm \
ctld \
daemon \
dconschat \
devinfo \
digictl \
diskinfo \
dumpcis \
etcupdate \
extattr \
extattrctl \
fifolog \
fwcontrol \
getfmac \
getpmac \
gstat \
i2c \
ifmcstat \
inetd \
iostat \
iscsid \
kldxref \
mailwrapper \
makefs \
memcontrol \
mergemaster \
mfiutil \
mixer \
mlxcontrol \
mountd \
mptutil \
mtest \
${_mtree} \
newsyslog \
nfscbd \
nfsd \
nfsdumpstate \
nfsrevoke \
nfsuserd \
nmtree \
nologin \
${_pc_sysinstall} \
pciconf \
periodic \
powerd \
procctl \
pstat \
pw \
pwd_mkdb \
quot \
rarpd \
rmt \
rpcbind \
rpc.lockd \
rpc.statd \
rpc.umntall \
rtprio \
service \
services_mkdb \
setfib \
setfmac \
setpmac \
smbmsg \
snapinfo \
spray \
syslogd \
sysrc \
tcpdchk \
tcpdmatch \
tcpdrop \
tcpdump \
timed \
traceroute \
trpt \
tzsetup \
ugidfw \
vipw \
wake \
watch \
watchdogd \
zic
# NB: keep these sorted by MK_* knobs
.if ${MK_ACCT} != "no"
SUBDIR+= accton
SUBDIR+= sa
.endif
.if ${MK_AMD} != "no"
SUBDIR+= amd
.endif
.if ${MK_AUDIT} != "no"
SUBDIR+= audit
SUBDIR+= auditd
.if ${MK_OPENSSL} != "no"
SUBDIR+= auditdistd
.endif
SUBDIR+= auditreduce
SUBDIR+= praudit
.endif
.if ${MK_AUTHPF} != "no"
SUBDIR+= authpf
.endif
.if ${MK_BLUETOOTH} != "no"
SUBDIR+= bluetooth
.endif
.if ${MK_BSNMP} != "no"
SUBDIR+= bsnmpd
.endif
.if ${MK_CTM} != "no"
SUBDIR+= ctm
.endif
.if ${MK_FLOPPY} != "no"
SUBDIR+= fdcontrol
SUBDIR+= fdformat
SUBDIR+= fdread
SUBDIR+= fdwrite
.endif
.if ${MK_FMTREE} != "no"
SUBDIR+= mtree
.endif
.if ${MK_FREEBSD_UPDATE} != "no"
SUBDIR+= freebsd-update
.endif
.if ${MK_GSSAPI} != "no"
SUBDIR+= gssd
.endif
.if ${MK_GPIO} != "no"
SUBDIR+= gpioctl
.endif
.if ${MK_INET6} != "no"
SUBDIR+= faithd
SUBDIR+= ip6addrctl
SUBDIR+= mld6query
SUBDIR+= ndp
SUBDIR+= rip6query
SUBDIR+= route6d
SUBDIR+= rrenumd
SUBDIR+= rtadvctl
SUBDIR+= rtadvd
SUBDIR+= rtsold
SUBDIR+= traceroute6
.endif
.if ${MK_IPFW} != "no"
SUBDIR+= ipfwpcap
.endif
.if ${MK_JAIL} != "no"
SUBDIR+= jail
SUBDIR+= jexec
SUBDIR+= jls
.endif
# XXX MK_SYSCONS
.if ${MK_LEGACY_CONSOLE} != "no"
SUBDIR+= kbdcontrol
SUBDIR+= kbdmap
SUBDIR+= moused
SUBDIR+= vidcontrol
.endif
.if ${MK_LIBTHR} != "no" || ${MK_LIBPTHREAD} != "no"
.if ${MK_PPP} != "no"
SUBDIR+= pppctl
.endif
.if ${MK_NS_CACHING} != "no"
SUBDIR+= nscd
.endif
.endif
.if ${MK_LPR} != "no"
SUBDIR+= lpr
.endif
.if ${MK_MAN_UTILS} != "no"
SUBDIR+= manctl
.endif
.if ${MK_NAND} != "no"
SUBDIR+= nandsim
SUBDIR+= nandtool
.endif
.if ${MK_NETGRAPH} != "no"
SUBDIR+= flowctl
SUBDIR+= lmcconfig
SUBDIR+= ngctl
SUBDIR+= nghook
.endif
.if ${MK_NIS} != "no"
SUBDIR+= rpc.yppasswdd
SUBDIR+= rpc.ypupdated
SUBDIR+= rpc.ypxfrd
SUBDIR+= ypbind
SUBDIR+= yp_mkdb
SUBDIR+= yppoll
SUBDIR+= yppush
SUBDIR+= ypserv
SUBDIR+= ypset
.endif
.if ${MK_NTP} != "no"
SUBDIR+= ntp
.endif
.if ${MK_OPENSSL} != "no"
SUBDIR+= keyserv
.endif
.if ${MK_PC_SYSINSTALL} != "no"
_pc_sysinstall= pc-sysinstall
.endif
.if ${MK_PF} != "no"
SUBDIR+= ftp-proxy
.endif
.if ${MK_PKGBOOTSTRAP} != "no"
SUBDIR+= pkg
.endif
# XXX MK_TOOLCHAIN?
.if ${MK_PMC} != "no"
SUBDIR+= pmcannotate
SUBDIR+= pmccontrol
SUBDIR+= pmcstat
.endif
.if ${MK_PORTSNAP} != "no"
SUBDIR+= portsnap
.endif
.if ${MK_PPP} != "no"
SUBDIR+= ppp
.endif
.if ${MK_QUOTAS} != "no"
SUBDIR+= edquota
SUBDIR+= quotaon
SUBDIR+= repquota
.endif
.if ${MK_RCMDS} != "no"
SUBDIR+= rwhod
.endif
.if ${MK_SENDMAIL} != "no"
SUBDIR+= editmap
SUBDIR+= mailstats
SUBDIR+= makemap
SUBDIR+= praliases
SUBDIR+= sendmail
.endif
.if ${MK_TESTS} != "no"
SUBDIR+= tests
.endif
.if ${MK_TOOLCHAIN} != "no"
SUBDIR+= config
SUBDIR+= crunch
.endif
.if ${MK_UNBOUND} != "no"
SUBDIR+= unbound
.endif
.if ${MK_USB} != "no"
SUBDIR+= uathload
SUBDIR+= uhsoctl
SUBDIR+= usbconfig
SUBDIR+= usbdump
.endif
.if ${MK_UTMPX} != "no"
SUBDIR+= ac
SUBDIR+= lastlogin
SUBDIR+= utx
.endif
.if ${MK_WIRELESS} != "no"
SUBDIR+= ancontrol
SUBDIR+= wlandebug
SUBDIR+= wpa
.endif
.include <bsd.arch.inc.mk>
SUBDIR:= ${SUBDIR:O}
SUBDIR_PARALLEL=
.include <bsd.subdir.mk>