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