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