1# 2# CDDL HEADER START 3# 4# The contents of this file are subject to the terms of the 5# Common Development and Distribution License (the "License"). 6# You may not use this file except in compliance with the License. 7# 8# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9# or http://www.opensolaris.org/os/licensing. 10# See the License for the specific language governing permissions 11# and limitations under the License. 12# 13# When distributing Covered Code, include this CDDL HEADER in each 14# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15# If applicable, add the following below this CDDL HEADER, with the 16# fields enclosed by brackets "[]" replaced with your own identifying 17# information: Portions Copyright [yyyy] [name of copyright owner] 18# 19# CDDL HEADER END 20# 21# 22# Copyright 2006 Sun Microsystems, Inc. All rights reserved. 23# Use is subject to license terms. 24# 25# ident "%Z%%M% %I% %E% SMI" 26# 27 28include ../Makefile.master 29 30# Note that libcurses installs commands along with its library. 31# This is a minor bug which probably should be fixed. 32# Note also that a few extra libraries are kept in cmd source. 33# 34# Certain libraries are linked with, hence depend on, other libraries. 35# 36# Although we have historically used .WAIT to express dependencies, it 37# reduces the amount of parallelism and thus lengthens the time it 38# takes to build the libraries. Thus, we now require that any new 39# libraries explicitly call out their dependencies. Eventually, all 40# the library dependencies will be called out explicitly. See 41# "Library interdependencies" near the end of this file. 42# 43# Aside from explicit dependencies (and legacy .WAITs), all libraries 44# are built in parallel. 45# 46.PARALLEL: 47 48# 49# The $(CLOSED_BUILD) additions to SUBDIRS & MSGSUBDIRS are unfortunate, 50# but required due to the "dependencies" of using .WAIT to barrier the 51# parallel dmake builds. once 4631488 has been fixed, they can be 52# consolidated into one $(CLOSED_BUILD)SUBDIRS += (all closed libs) as 53# shown in HDRSUBDIRS 54# 55SUBDIRS= \ 56 common .WAIT \ 57 ../cmd/sgs/libconv \ 58 ../cmd/sgs/libdl .WAIT 59 60$(CLOSED_BUILD)SUBDIRS += \ 61 $(CLOSED)/lib/libc_i18n 62 63SUBDIRS += \ 64 libc .WAIT \ 65 ../cmd/sgs/libelf .WAIT \ 66 libmd \ 67 libmd5 \ 68 librsm \ 69 libmp .WAIT \ 70 libcmd \ 71 libnsl \ 72 libsecdb .WAIT \ 73 librpcsvc \ 74 libsocket .WAIT \ 75 libsctp \ 76 libresolv \ 77 libresolv2 .WAIT \ 78 libw .WAIT \ 79 libintl .WAIT \ 80 ../cmd/sgs/librtld_db \ 81 libaio \ 82 librt \ 83 libadm \ 84 libctf \ 85 libdtrace \ 86 libdtrace_jni \ 87 libcurses \ 88 libgen \ 89 libgss \ 90 libpam \ 91 libuuid \ 92 libthread \ 93 libpthread .WAIT \ 94 libslp \ 95 libbsdmalloc \ 96 libdoor \ 97 libdevinfo \ 98 libdladm \ 99 libdlpi \ 100 libeti \ 101 libcrypt \ 102 libefi \ 103 libfstyp \ 104 libwanboot \ 105 libwanbootutil \ 106 libcryptoutil \ 107 libinetcfg \ 108 libinetutil \ 109 libipmp \ 110 libkstat \ 111 libkvm \ 112 liblaadm \ 113 liblm \ 114 libmacadm \ 115 libmalloc \ 116 libmapmalloc \ 117 libmtmalloc \ 118 libnls \ 119 libsmbios \ 120 libtecla \ 121 libumem \ 122 libnvpair .WAIT \ 123 libexacct \ 124 libplot \ 125 libldap4 \ 126 libsasl \ 127 libldap5 \ 128 libsldap .WAIT \ 129 libbsm \ 130 libsys \ 131 libsysevent \ 132 libnisdb \ 133 libpool \ 134 libproc \ 135 libproject \ 136 libsendfile \ 137 nametoaddr \ 138 ncad_addr \ 139 gss_mechs/mech_krb5 .WAIT \ 140 libkrb5 .WAIT \ 141 krb5 .WAIT 142$(CLOSED_BUILD)SUBDIRS += \ 143 $(CLOSED)/lib/smartcard 144SUBDIRS += \ 145 passwdutil \ 146 pam_modules \ 147 crypt_modules \ 148 libadt_jni \ 149 abi \ 150 auditd_plugins \ 151 libvolmgt \ 152 libdevice \ 153 libdevid \ 154 libdhcpsvc \ 155 libc_db \ 156 libsec \ 157 libtnfprobe \ 158 libtnf \ 159 libtnfctl \ 160 libdhcpagent \ 161 libdhcpdu \ 162 libdhcputil \ 163 libipsecutil 164$(CLOSED_BUILD)SUBDIRS += \ 165 $(CLOSED)/lib/libike 166SUBDIRS += \ 167 nsswitch \ 168 print \ 169 libuutil \ 170 libscf \ 171 libinetsvc \ 172 librestart \ 173 libsched 174$(CLOSED_BUILD)SUBDIRS += \ 175 $(CLOSED)/lib/libelfsign 176SUBDIRS += \ 177 pkcs11 .WAIT \ 178 libpctx .WAIT \ 179 libcpc \ 180 watchmalloc \ 181 extendedFILE \ 182 madv \ 183 mpss \ 184 libdisasm \ 185 libwrap \ 186 libxcurses \ 187 libxcurses2 \ 188 libxnet \ 189 libbrand .WAIT \ 190 libzonecfg \ 191 libzoneinfo \ 192 libtsnet \ 193 libtsol \ 194 gss_mechs/mech_spnego \ 195 gss_mechs/mech_dummy \ 196 gss_mechs/mech_dh \ 197 rpcsec_gss \ 198 librcm .WAIT \ 199 libcfgadm .WAIT \ 200 libpicl .WAIT \ 201 libpicltree .WAIT \ 202 cfgadm_plugins \ 203 libmail \ 204 lvm \ 205 libsmedia \ 206 libipp \ 207 openssl \ 208 libdiskmgt \ 209 liblgrp \ 210 libfsmgt \ 211 fm \ 212 libavl \ 213 libcmdutils \ 214 libcontract \ 215 ../cmd/sendmail/libmilter \ 216 sasl_plugins \ 217 udapl \ 218 libzpool \ 219 libzfs \ 220 libzfs_jni \ 221 libmapid \ 222 brand \ 223 $($(MACH)_SUBDIRS) 224 225sparc_SUBDIRS= .WAIT \ 226 efcode \ 227 libc_psr .WAIT \ 228 libdscp \ 229 libprtdiag .WAIT \ 230 libprtdiag_psr \ 231 librsc \ 232 libfruutils .WAIT \ 233 libfru \ 234 libwrsmconf \ 235 storage \ 236 wrsm \ 237 libpcp 238 239fm: libexacct 240 241# 242# Create a special version of $(SUBDIRS) with no .WAIT's, for use with the 243# clean and clobber targets (for more information, see those targets, below). 244# 245NOWAIT_SUBDIRS= $(SUBDIRS:.WAIT=) 246 247DCSUBDIRS = \ 248 lvm 249 250MSGSUBDIRS= \ 251 abi \ 252 auditd_plugins \ 253 brand \ 254 cfgadm_plugins \ 255 gss_mechs/mech_dh \ 256 gss_mechs/mech_krb5 \ 257 krb5 \ 258 libbsm \ 259 libc \ 260 libcfgadm \ 261 libcontract \ 262 libcurses \ 263 libdhcpsvc \ 264 libdhcputil \ 265 libgss \ 266 libinetcfg \ 267 libipmp \ 268 libnsl \ 269 libpam \ 270 libpicl \ 271 libpool \ 272 libscf \ 273 libsasl \ 274 libldap5 \ 275 libsecdb \ 276 libsldap \ 277 libslp \ 278 libsmedia \ 279 libtsol \ 280 libuutil \ 281 libwanboot \ 282 libwanbootutil \ 283 libzonecfg \ 284 lvm \ 285 madv \ 286 mpss \ 287 pam_modules \ 288 rpcsec_gss 289$(CLOSED_BUILD)MSGSUBDIRS += \ 290 $(CLOSED)/lib/smartcard 291MSGSUBDIRS += \ 292 $($(MACH)_MSGSUBDIRS) 293 294sparc_MSGSUBDIRS= \ 295 libprtdiag \ 296 libprtdiag_psr 297 298HDRSUBDIRS= \ 299 auditd_plugins \ 300 libbrand \ 301 libbsm \ 302 libc \ 303 libcmdutils \ 304 libcontract \ 305 libcpc \ 306 libctf \ 307 libcurses \ 308 libcryptoutil \ 309 libdevice \ 310 libdevid \ 311 libdevinfo \ 312 libdiskmgt \ 313 libdladm \ 314 libdlpi \ 315 libdhcpagent \ 316 libdhcpsvc \ 317 libdhcputil \ 318 libdisasm \ 319 libdtrace \ 320 libdtrace_jni \ 321 libeti \ 322 libfstyp \ 323 libgen \ 324 libwanboot \ 325 libwanbootutil \ 326 libipsecutil \ 327 libinetcfg \ 328 libinetsvc \ 329 libinetutil \ 330 libipmp \ 331 libipp \ 332 libkstat \ 333 libkvm \ 334 liblaadm \ 335 libmacadm \ 336 libmail \ 337 libmd \ 338 libmtmalloc \ 339 libnvpair \ 340 libnsl \ 341 libpam \ 342 libpctx \ 343 libpicl \ 344 libpicltree \ 345 libplot \ 346 libpool \ 347 libproc \ 348 librcm \ 349 libscf \ 350 libsmbios \ 351 librestart \ 352 librpcsvc \ 353 librsm \ 354 libsasl \ 355 libsec \ 356 libslp \ 357 libsmedia \ 358 libsysevent \ 359 libtecla \ 360 libtnf \ 361 libtnfctl \ 362 libtnfprobe \ 363 libtsnet \ 364 libtsol \ 365 libvolmgt \ 366 libumem \ 367 libuutil \ 368 libwrap \ 369 libxcurses2 \ 370 libzfs \ 371 libzfs_jni \ 372 libzoneinfo \ 373 lvm \ 374 openssl \ 375 pkcs11 \ 376 passwdutil \ 377 ../cmd/sendmail/libmilter \ 378 fm \ 379 udapl \ 380 libmapid \ 381 libkrb5 \ 382 $($(MACH)_HDRSUBDIRS) 383 384$(CLOSED_BUILD)HDRSUBDIRS += \ 385 $(CLOSED)/lib/libc_i18n \ 386 $(CLOSED)/lib/libike \ 387 $(CLOSED)/lib/smartcard 388 389sparc_HDRSUBDIRS= \ 390 libdscp \ 391 libwrsmconf 392 393all := TARGET= all 394check := TARGET= check 395clean := TARGET= clean 396clobber := TARGET= clobber 397install := TARGET= install 398install_h := TARGET= install_h 399lint := TARGET= lint 400_dc := TARGET= _dc 401_msg := TARGET= _msg 402 403.KEEP_STATE: 404 405# 406# For the all and install targets, we clearly must respect library 407# dependencies so that the libraries link correctly. However, for 408# the remaining targets (check, clean, clobber, install_h, lint, _dc 409# and _msg), libraries do not have any dependencies on one another 410# and thus respecting dependencies just slows down the build. 411# As such, for these rules, we use pattern replacement to explicitly 412# avoid triggering the dependency information. Note that for clean, 413# clobber and lint, we must use $(NOWAIT_SUBDIRS) rather than 414# $(SUBDIRS), to prevent `.WAIT' from expanding to `.WAIT-nodepend'. 415# 416 417all: $(SUBDIRS) 418 419install: $(SUBDIRS) .WAIT install_extra 420 421# extra libraries kept in other source areas 422install_extra: 423 @cd ../cmd/sgs; pwd; $(MAKE) install_lib 424 @pwd 425 426clean clobber lint: $(NOWAIT_SUBDIRS:%=%-nodepend) 427 428install_h check: $(HDRSUBDIRS:%=%-nodepend) 429 430_msg: $(MSGSUBDIRS:%=%-nodepend) .WAIT _dc 431 432_dc: $(DCSUBDIRS:%=%-nodepend) 433 434# dependencies for pam_modules (see below) 435$(CLOSED_BUILD)SMARTCARD= $(CLOSED)/lib/smartcard 436 437# 438# Library interdependencies are called out explicitly here 439# 440auditd_plugins: libbsm libnsl libsecdb 441gss_mechs/mech_krb5: libgss libnsl libsocket libresolv pkcs11 442libadt_jni: libbsm 443$(CLOSED_BUILD)libc: $(CLOSED)/lib/libc_i18n 444libbsm: libtsol 445libcmdutils: libavl 446libcontract: libnvpair 447libdevid: libdevinfo 448libdevinfo: libnvpair libsec 449libdhcpagent: libdhcputil libnsl libsocket 450libdhcpsvc: libinetutil 451libdhcputil: libinetutil 452libdladm: libdlpi libdevinfo 453libdtrace: libproc libgen libctf 454libdtrace_jni: libuutil libdtrace 455libefi: libuuid 456libfstyp: libnvpair 457$(CLOSED_BUILD)$(CLOSED)/lib/libelfsign: \ 458 $(CLOSED)/lib/libike libcryptoutil pkcs11 459libinetcfg: libnsl libsocket libdevinfo 460libnsl: libmd5 libscf 461libmapid: libresolv libcmd 462libmacadm: libdevinfo 463libuuid: libsocket 464libinetutil: libsocket 465libsecdb: libcmd libnsl 466libsasl: libgss libsocket pkcs11 libmd 467sasl_plugins: pkcs11 libgss libsocket libsasl 468libsctp: libsocket 469libsocket: libnsl 470libldap5: libsasl libsocket libnsl libmd 471libsldap: libldap5 libtsol 472libpool: libnvpair libexacct 473libzonecfg: libc libsocket libnsl libuuid libnvpair libsysevent libsec \ 474 libbrand 475libproc: ../cmd/sgs/librtld_db libzonecfg ../cmd/sgs/libelf libctf \ 476 libbrand 477libproject: libpool libproc libsecdb 478libtsnet: libnsl libtsol libsecdb 479libwrap: libnsl libsocket 480libwanboot: libnvpair libresolv libnsl libsocket libdevinfo libinetutil \ 481 libdhcputil openssl 482libwanbootutil: libnsl 483pam_modules: libproject passwdutil $(SMARTCARD) 484libscf: libuutil libmd 485libinetsvc: libscf 486librestart: libuutil libscf 487../cmd/sgs/libdl: ../cmd/sgs/libconv 488../cmd/sgs/libelf: ../cmd/sgs/libconv 489pkcs11: libcryptoutil 490print: libldap5 491udapl/udapl_tavor: udapl/libdat 492libzfs: libdevinfo libdevid libgen libnvpair libuutil 493libzfs_jni: libdiskmgt libnvpair libzfs 494libzpool: libavl libumem libnvpair 495libsec: libavl 496brand: libc libsocket 497 498# 499# The reason this rule checks for the existence of the 500# Makefile is that some of the directories do not exist 501# in certain situations (e.g., exportable source builds, 502# OpenSolaris). 503# 504$(SUBDIRS): FRC 505 @if [ -f $@/Makefile ]; then \ 506 cd $@; pwd; $(MAKE) $(TARGET); \ 507 else \ 508 true; \ 509 fi 510 511$(SUBDIRS:%=%-nodepend): 512 @if [ -f $(@:%-nodepend=%)/Makefile ]; then \ 513 cd $(@:%-nodepend=%); pwd; $(MAKE) $(TARGET); \ 514 else \ 515 true; \ 516 fi 517 518FRC: 519