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 2011 Nexenta Systems, Inc. All rights reserved. 23 # Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved. 24 # Copyright (c) 2012 by Delphix. All rights reserved. 25 # Copyright (c) 2012, Joyent, Inc. All rights reserved. 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 SUBDIRS += \ 60 libc .WAIT \ 61 ../cmd/sgs/libelf .WAIT \ 62 c_synonyms \ 63 libmd \ 64 libmd5 \ 65 librsm \ 66 libmp .WAIT \ 67 libnsl \ 68 libsecdb .WAIT \ 69 librpcsvc \ 70 libsocket .WAIT \ 71 libsctp \ 72 libsip \ 73 libcommputil \ 74 libresolv \ 75 libresolv2 .WAIT \ 76 libw .WAIT \ 77 libintl .WAIT \ 78 ../cmd/sgs/librtld_db \ 79 libaio \ 80 libast \ 81 libdll \ 82 libcmd \ 83 libshell \ 84 libsum \ 85 librt \ 86 libadm \ 87 libctf \ 88 libdtrace \ 89 libdtrace_jni \ 90 libcurses \ 91 libtermcap \ 92 libgen \ 93 libgss \ 94 libpam \ 95 libuuid \ 96 libthread \ 97 libpthread .WAIT \ 98 libslp \ 99 libbsdmalloc \ 100 libdoor \ 101 libdevinfo \ 102 libdladm \ 103 libdlpi \ 104 libeti \ 105 libcrypt \ 106 libdns_sd \ 107 libefi \ 108 libfstyp \ 109 libwanboot \ 110 libwanbootutil \ 111 libcryptoutil \ 112 libinetutil \ 113 libipadm \ 114 libipmp \ 115 libiscsit \ 116 libkmf \ 117 libkstat \ 118 libkvm \ 119 liblm \ 120 libmalloc \ 121 libmapmalloc \ 122 libmtmalloc \ 123 libnls \ 124 libnwam \ 125 libsmbios \ 126 libtecla \ 127 libumem \ 128 libnvpair .WAIT \ 129 libexacct \ 130 libsasl \ 131 libldap5 \ 132 libsldap .WAIT \ 133 libbsm \ 134 libsys \ 135 libsysevent \ 136 libnisdb \ 137 libpool \ 138 libpp \ 139 libproc \ 140 libproject \ 141 libsendfile \ 142 nametoaddr \ 143 ncad_addr \ 144 hbaapi \ 145 smhba \ 146 sun_fc \ 147 sun_sas \ 148 gss_mechs/mech_krb5 .WAIT \ 149 libkrb5 .WAIT \ 150 krb5 .WAIT \ 151 libsmbfs \ 152 libfcoe \ 153 libsrpt \ 154 libstmf \ 155 libstmfproxy \ 156 libnsctl \ 157 libunistat \ 158 libdscfg \ 159 librdc \ 160 libinstzones \ 161 libpkg \ 162 libpcidb 163 164 SUBDIRS += \ 165 passwdutil \ 166 pam_modules \ 167 crypt_modules \ 168 libadt_jni \ 169 abi \ 170 auditd_plugins \ 171 libvolmgt \ 172 libdevice \ 173 libdevid \ 174 libdhcpsvc \ 175 libc_db \ 176 libndmp \ 177 libsec \ 178 libtnfprobe \ 179 libtnf \ 180 libtnfctl \ 181 libdhcpagent \ 182 libdhcpdu \ 183 libdhcputil \ 184 libxnet \ 185 libipsecutil 186 $(CLOSED_BUILD)SUBDIRS += \ 187 $(CLOSED)/lib/libike 188 SUBDIRS += \ 189 nsswitch \ 190 print \ 191 libuutil \ 192 libscf \ 193 libinetsvc \ 194 librestart \ 195 libsched \ 196 libelfsign \ 197 pkcs11 .WAIT \ 198 libpctx .WAIT \ 199 libcpc \ 200 watchmalloc \ 201 extendedFILE \ 202 madv \ 203 mpss \ 204 libdisasm \ 205 libwrap \ 206 libxcurses \ 207 libxcurses2 \ 208 libbrand .WAIT \ 209 libzonecfg \ 210 libzoneinfo \ 211 libzonestat \ 212 libtsnet \ 213 libtsol \ 214 gss_mechs/mech_spnego \ 215 gss_mechs/mech_dummy \ 216 gss_mechs/mech_dh \ 217 rpcsec_gss \ 218 libraidcfg .WAIT \ 219 librcm .WAIT \ 220 libcfgadm .WAIT \ 221 libpicl .WAIT \ 222 libpicltree .WAIT \ 223 raidcfg_plugins \ 224 cfgadm_plugins \ 225 libmail \ 226 lvm \ 227 libsmedia \ 228 libipp \ 229 libdiskmgt \ 230 liblgrp \ 231 libfsmgt \ 232 fm \ 233 libavl \ 234 libcmdutils \ 235 libcontract \ 236 ../cmd/sendmail/libmilter \ 237 sasl_plugins \ 238 udapl \ 239 libzpool \ 240 libzfs_core \ 241 libzfs \ 242 libbe \ 243 pylibbe \ 244 libzfs_jni \ 245 pyzfs \ 246 pysolaris \ 247 libmapid \ 248 brand \ 249 policykit \ 250 hal \ 251 libshare \ 252 libsqlite \ 253 libidmap \ 254 libadutils \ 255 libipmi \ 256 libexacct/demo \ 257 libvrrpadm \ 258 libvscan \ 259 libgrubmgmt \ 260 smbsrv \ 261 libilb \ 262 scsi \ 263 libima \ 264 libsun_ima \ 265 mpapi \ 266 librstp \ 267 libreparse \ 268 libhotplug \ 269 libfruutils .WAIT \ 270 libfru \ 271 $($(MACH)_SUBDIRS) 272 273 i386_SUBDIRS= \ 274 libntfs \ 275 libparted \ 276 libfdisk \ 277 libsaveargs 278 279 sparc_SUBDIRS= .WAIT \ 280 efcode \ 281 libds \ 282 libdscp \ 283 libprtdiag .WAIT \ 284 libprtdiag_psr \ 285 libpri \ 286 librsc \ 287 storage \ 288 libpcp \ 289 libtsalarm \ 290 libv12n 291 292 FM_sparc_DEPLIBS= libpri 293 294 fm: \ 295 libexacct \ 296 libipmi \ 297 libzfs \ 298 scsi \ 299 $(FM_$(MACH)_DEPLIBS) 300 301 # 302 # Create a special version of $(SUBDIRS) with no .WAIT's, for use with the 303 # clean and clobber targets (for more information, see those targets, below). 304 # 305 NOWAIT_SUBDIRS= $(SUBDIRS:.WAIT=) 306 307 DCSUBDIRS = \ 308 lvm 309 310 MSGSUBDIRS= \ 311 abi \ 312 auditd_plugins \ 313 brand \ 314 cfgadm_plugins \ 315 gss_mechs/mech_dh \ 316 gss_mechs/mech_krb5 \ 317 krb5 \ 318 libast \ 319 libbsm \ 320 libc \ 321 libcfgadm \ 322 libcmd \ 323 libcontract \ 324 libcurses \ 325 libdhcpsvc \ 326 libdhcputil \ 327 libipsecutil \ 328 libdiskmgt \ 329 libdladm \ 330 libdll \ 331 libgrubmgmt \ 332 libgss \ 333 libidmap \ 334 libipmp \ 335 libilb \ 336 libinetutil \ 337 libinstzones \ 338 libipadm \ 339 libnsl \ 340 libnwam \ 341 libpam \ 342 libpicl \ 343 libpool \ 344 libpkg \ 345 libpp \ 346 libscf \ 347 libsasl \ 348 libldap5 \ 349 libsecdb \ 350 libshare \ 351 libshell \ 352 libsldap \ 353 libslp \ 354 libsmbfs \ 355 libsmedia \ 356 libsum \ 357 libtsol \ 358 libuutil \ 359 libvrrpadm \ 360 libvscan \ 361 libwanboot \ 362 libwanbootutil \ 363 libzfs \ 364 libzonecfg \ 365 lvm \ 366 madv \ 367 mpss \ 368 pam_modules \ 369 pyzfs \ 370 pysolaris \ 371 rpcsec_gss \ 372 libreparse 373 MSGSUBDIRS += \ 374 $($(MACH)_MSGSUBDIRS) 375 376 sparc_MSGSUBDIRS= \ 377 libprtdiag \ 378 libprtdiag_psr 379 380 i386_MSGSUBDIRS= libfdisk 381 382 HDRSUBDIRS= \ 383 auditd_plugins \ 384 libast \ 385 libbrand \ 386 libbsm \ 387 libc \ 388 libcmd \ 389 libcmdutils \ 390 libcommputil \ 391 libcontract \ 392 libcpc \ 393 libctf \ 394 libcurses \ 395 libtermcap \ 396 libcryptoutil \ 397 libdevice \ 398 libdevid \ 399 libdevinfo \ 400 libdiskmgt \ 401 libdladm \ 402 libdll \ 403 libdlpi \ 404 libdhcpagent \ 405 libdhcpsvc \ 406 libdhcputil \ 407 libdisasm \ 408 libdns_sd \ 409 libdscfg \ 410 libdtrace \ 411 libdtrace_jni \ 412 libelfsign \ 413 libeti \ 414 libfru \ 415 libfstyp \ 416 libgen \ 417 libipadm \ 418 libipsecutil \ 419 libinetsvc \ 420 libinetutil \ 421 libinstzones \ 422 libipmi \ 423 libipmp \ 424 libipp \ 425 libiscsit \ 426 libkstat \ 427 libkvm \ 428 libmail \ 429 libmd \ 430 libmtmalloc \ 431 libndmp \ 432 libnvpair \ 433 libnsctl \ 434 libnsl \ 435 libnwam \ 436 libpam \ 437 libpcidb \ 438 libpctx \ 439 libpicl \ 440 libpicltree \ 441 libpool \ 442 libpp \ 443 libproc \ 444 libraidcfg \ 445 librcm \ 446 librdc \ 447 libscf \ 448 libsip \ 449 libsmbios \ 450 librestart \ 451 librpcsvc \ 452 librsm \ 453 librstp \ 454 libsasl \ 455 libsec \ 456 libshell \ 457 libslp \ 458 libsmedia \ 459 libsocket \ 460 libsqlite \ 461 libfcoe \ 462 libsrpt \ 463 libstmf \ 464 libstmfproxy \ 465 libsum \ 466 libsysevent \ 467 libtecla \ 468 libtnf \ 469 libtnfctl \ 470 libtnfprobe \ 471 libtsnet \ 472 libtsol \ 473 libvrrpadm \ 474 libvolmgt \ 475 libumem \ 476 libunistat \ 477 libuutil \ 478 libwanboot \ 479 libwanbootutil \ 480 libwrap \ 481 libxcurses2 \ 482 libzfs \ 483 libzfs_core \ 484 libzfs_jni \ 485 libzoneinfo \ 486 libzonestat \ 487 hal \ 488 policykit \ 489 lvm \ 490 pkcs11 \ 491 passwdutil \ 492 ../cmd/sendmail/libmilter \ 493 fm \ 494 udapl \ 495 libmapid \ 496 libkrb5 \ 497 libsmbfs \ 498 libshare \ 499 libidmap \ 500 libvscan \ 501 libgrubmgmt \ 502 smbsrv \ 503 libilb \ 504 scsi \ 505 hbaapi \ 506 smhba \ 507 libima \ 508 libsun_ima \ 509 mpapi \ 510 libreparse \ 511 $($(MACH)_HDRSUBDIRS) 512 513 $(CLOSED_BUILD)HDRSUBDIRS += \ 514 $(CLOSED)/lib/libike 515 516 i386_HDRSUBDIRS= \ 517 libparted \ 518 libfdisk \ 519 libsaveargs 520 521 sparc_HDRSUBDIRS= \ 522 libds \ 523 libdscp \ 524 libpri \ 525 libv12n \ 526 storage 527 528 all := TARGET= all 529 check := TARGET= check 530 clean := TARGET= clean 531 clobber := TARGET= clobber 532 install := TARGET= install 533 install_h := TARGET= install_h 534 lint := TARGET= lint 535 _dc := TARGET= _dc 536 _msg := TARGET= _msg 537 538 .KEEP_STATE: 539 540 # 541 # For the all and install targets, we clearly must respect library 542 # dependencies so that the libraries link correctly. However, for 543 # the remaining targets (check, clean, clobber, install_h, lint, _dc 544 # and _msg), libraries do not have any dependencies on one another 545 # and thus respecting dependencies just slows down the build. 546 # As such, for these rules, we use pattern replacement to explicitly 547 # avoid triggering the dependency information. Note that for clean, 548 # clobber and lint, we must use $(NOWAIT_SUBDIRS) rather than 549 # $(SUBDIRS), to prevent `.WAIT' from expanding to `.WAIT-nodepend'. 550 # 551 552 all: $(SUBDIRS) 553 554 install: $(SUBDIRS) .WAIT install_extra 555 556 # extra libraries kept in other source areas 557 install_extra: 558 @cd ../cmd/sgs; pwd; $(MAKE) install_lib 559 @pwd 560 561 clean clobber lint: $(NOWAIT_SUBDIRS:%=%-nodepend) 562 563 install_h check: $(HDRSUBDIRS:%=%-nodepend) 564 565 _msg: $(MSGSUBDIRS:%=%-nodepend) .WAIT _dc 566 567 _dc: $(DCSUBDIRS:%=%-nodepend) 568 569 # 570 # Library interdependencies are called out explicitly here 571 # 572 auditd_plugins: libbsm libnsl libsecdb 573 gss_mechs/mech_krb5: libgss libnsl libsocket libresolv pkcs11 574 libadt_jni: libbsm 575 libast: libsocket 576 libadutils: libldap5 libresolv libsocket libnsl 577 nsswitch: libadutils libidmap 578 libbe: libzfs 579 libbsm: libtsol 580 libcmd: libsum libast libsocket libnsl 581 libcmdutils: libavl 582 libcontract: libnvpair 583 libdevid: libdevinfo 584 libdevinfo: libnvpair libsec 585 libdhcpagent: libsocket libdhcputil libuuid libdlpi libcontract 586 libdhcpsvc: libinetutil 587 libdhcputil: libnsl libgen libinetutil libdlpi 588 libdladm: libdevinfo libinetutil libsocket libscf librcm libnvpair \ 589 libexacct libnsl libkstat libcurses 590 libdll: libast 591 libdlpi: libinetutil libdladm 592 libds: libsysevent 593 libdscfg: libnsctl libunistat libsocket libnsl 594 libdtrace: libproc libgen libctf 595 libdtrace_jni: libuutil libdtrace 596 libefi: libuuid 597 libfstyp: libnvpair 598 libelfsign: libcryptoutil libkmf 599 libidmap: libadutils libldap5 libavl libsldap libuutil 600 libipadm: libnsl libinetutil libsocket libdlpi libnvpair libdhcpagent \ 601 libdladm libsecdb 602 libiscsit: libc libnvpair libstmf libuuid libnsl 603 libkmf: libcryptoutil pkcs11 604 libnsl: libmd5 605 libmapid: libresolv 606 librdc: libsocket libnsl libnsctl libunistat libdscfg 607 libuuid: libdlpi 608 $(CLOSED_BUILD)libike: libipsecutil libxnet libcryptoutil 609 libinetutil: libsocket 610 libipsecutil: libtecla libsocket 611 libinstzones: libzonecfg libcontract 612 libpkg: libwanboot libscf libadm 613 libnwam: libscf 614 libsecdb: libnsl 615 libsasl: libgss libsocket pkcs11 libmd 616 sasl_plugins: pkcs11 libgss libsocket libsasl 617 libsctp: libsocket 618 libshell: libast libcmd libdll libsocket libsecdb 619 libsip: libmd5 620 libsmbfs: libcmdutils libsocket libnsl libkrb5 621 libsocket: libnsl 622 libstmfproxy: libstmf libsocket libnsl libpthread 623 libsum: libast 624 libsysevent: libsecdb 625 libldap5: libsasl libsocket libnsl libmd 626 libsldap: libldap5 libtsol libnsl libc libscf libresolv 627 libpool: libnvpair libexacct 628 libpp: libast 629 libzonecfg: libc libsocket libnsl libuuid libnvpair libsysevent libsec \ 630 libbrand libpool libscf 631 libproc: ../cmd/sgs/librtld_db ../cmd/sgs/libelf libctf libsaveargs 632 libproject: libpool libproc libsecdb 633 libtermcap: libcurses 634 libtsnet: libnsl libtsol libsecdb 635 libwrap: libnsl libsocket 636 libwanboot: libnvpair libresolv libnsl libsocket libdevinfo libinetutil \ 637 libdhcputil 638 libwanbootutil: libnsl 639 pam_modules: libproject passwdutil smbsrv 640 libscf: libuutil libmd libgen libsmbios libnsl 641 libinetsvc: libscf 642 librestart: libuutil libscf 643 libsaveargs: libdisasm 644 ../cmd/sgs/libdl: ../cmd/sgs/libconv 645 ../cmd/sgs/libelf: ../cmd/sgs/libconv 646 pkcs11: libcryptoutil 647 print: libldap5 648 udapl/udapl_tavor: udapl/libdat 649 libzfs: libdevid libgen libnvpair libuutil \ 650 libadm libavl libefi libidmap libmd libzfs_core 651 libzfs_core: libnvpair 652 libzfs_jni: libdiskmgt libnvpair libzfs 653 libzpool: libavl libumem libnvpair libcmdutils 654 libsec: libavl libidmap 655 brand: libc libsocket 656 libshare: libscf libzfs libuuid libfsmgt libsecdb libumem libsmbfs 657 libexacct/demo: libexacct libproject libsocket libnsl 658 libtsalarm: libpcp 659 smbsrv: libsocket libnsl libmd libxnet libpthread librt \ 660 libshare libidmap pkcs11 libsqlite libcryptoutil \ 661 libreparse libcmdutils 662 libv12n: libds libuuid 663 libvrrpadm: libsocket libdladm libscf 664 libvscan: libscf 665 libfru: libfruutils 666 scsi: libnvpair libfru 667 mpapi: libpthread libdevinfo libsysevent libnvpair 668 sun_fc: libdevinfo libsysevent libnvpair 669 libsun_ima: libdevinfo libsysevent libnsl 670 sun_sas: libdevinfo libsysevent libnvpair libkstat libdevid 671 libgrubmgmt: libdevinfo libzfs libfstyp 672 pylibbe: libbe libzfs 673 pyzfs: libnvpair libzfs 674 pysolaris: libsec libidmap 675 libreparse: libnvpair 676 libhotplug: libnvpair 677 cfgadm_plugins: libhotplug 678 libilb: libsocket 679 $(INTEL_BUILD)libdiskmgt:libfdisk 680 681 # 682 # The reason this rule checks for the existence of the 683 # Makefile is that some of the directories do not exist 684 # in certain situations (e.g., exportable source builds, 685 # OpenSolaris). 686 # 687 $(SUBDIRS): FRC 688 @if [ -f $@/Makefile ]; then \ 689 cd $@; pwd; $(MAKE) $(TARGET); \ 690 else \ 691 true; \ 692 fi 693 694 $(SUBDIRS:%=%-nodepend): 695 @if [ -f $(@:%-nodepend=%)/Makefile ]; then \ 696 cd $(@:%-nodepend=%); pwd; $(MAKE) $(TARGET); \ 697 else \ 698 true; \ 699 fi 700 701 FRC: