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 # Copyright 2014 Garrett D'Amore <garrett@damore.org> 28 29 include ../Makefile.master 30 31 # Note that libcurses installs commands along with its library. 32 # This is a minor bug which probably should be fixed. 33 # Note also that a few extra libraries are kept in cmd source. 34 # 35 # Certain libraries are linked with, hence depend on, other libraries. 36 # 37 # Although we have historically used .WAIT to express dependencies, it 38 # reduces the amount of parallelism and thus lengthens the time it 39 # takes to build the libraries. Thus, we now require that any new 40 # libraries explicitly call out their dependencies. Eventually, all 41 # the library dependencies will be called out explicitly. See 42 # "Library interdependencies" near the end of this file. 43 # 44 # Aside from explicit dependencies (and legacy .WAITs), all libraries 45 # are built in parallel. 46 # 47 .PARALLEL: 48 49 SUBDIRS= \ 50 common .WAIT \ 51 ../cmd/sgs/libconv \ 52 ../cmd/sgs/libdl .WAIT 53 54 SUBDIRS += \ 55 libc .WAIT \ 56 ../cmd/sgs/libelf .WAIT \ 57 c_synonyms \ 58 libmd \ 59 libmd5 \ 60 librsm \ 61 libmp .WAIT \ 62 libnsl \ 63 libsecdb .WAIT \ 64 librpcsvc \ 65 libsocket .WAIT \ 66 libsctp \ 67 libsip \ 68 libcommputil \ 69 libresolv \ 70 libresolv2 .WAIT \ 71 libw .WAIT \ 72 libintl .WAIT \ 73 ../cmd/sgs/librtld_db \ 74 libaio \ 75 libast \ 76 libdll \ 77 libcmd \ 78 libshell \ 79 libsum \ 80 librt \ 81 libadm \ 82 libctf \ 83 libdtrace \ 84 libdtrace_jni \ 85 libcurses \ 86 libtermcap \ 87 libgen \ 88 libgss \ 89 libpam \ 90 libuuid \ 91 libthread \ 92 libpthread .WAIT \ 93 libslp \ 94 libbsdmalloc \ 95 libdoor \ 96 libdevinfo \ 97 libdladm \ 98 libdlpi \ 99 libeti \ 100 libcrypt \ 101 libdns_sd \ 102 libefi \ 103 libfstyp \ 104 libwanboot \ 105 libwanbootutil \ 106 libcryptoutil \ 107 libinetutil \ 108 libipadm \ 109 libipd \ 110 libipmp \ 111 libiscsit \ 112 libkmf \ 113 libkstat \ 114 libkvm \ 115 liblm \ 116 libmalloc \ 117 libmapmalloc \ 118 libmtmalloc \ 119 libnls \ 120 libnwam \ 121 libsmbios \ 122 libtecla \ 123 libumem \ 124 libnvpair .WAIT \ 125 libexacct \ 126 libsasl \ 127 libldap5 \ 128 libsldap .WAIT \ 129 libbsm \ 130 libsys \ 131 libsysevent \ 132 libnisdb \ 133 libpool \ 134 libpp \ 135 libproc \ 136 libproject \ 137 libsendfile \ 138 nametoaddr \ 139 ncad_addr \ 140 hbaapi \ 141 smhba \ 142 sun_fc \ 143 sun_sas \ 144 gss_mechs/mech_krb5 .WAIT \ 145 libkrb5 .WAIT \ 146 krb5 .WAIT \ 147 libsmbfs \ 148 libfcoe \ 149 libsrpt \ 150 libstmf \ 151 libstmfproxy \ 152 libnsctl \ 153 libunistat \ 154 libdscfg \ 155 librdc \ 156 libinstzones \ 157 libpkg \ 158 libpcidb \ 159 libm1 \ 160 libm \ 161 libmvec 162 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 libc_db \ 175 libndmp \ 176 libsec \ 177 libtnfprobe \ 178 libtnf \ 179 libtnfctl \ 180 libdhcpagent \ 181 libdhcputil \ 182 libxnet \ 183 libipsecutil \ 184 nsswitch \ 185 print \ 186 libuutil \ 187 libscf \ 188 libinetsvc \ 189 librestart \ 190 libsched \ 191 libelfsign \ 192 pkcs11 .WAIT \ 193 libpctx .WAIT \ 194 libcpc \ 195 getloginx \ 196 watchmalloc \ 197 extendedFILE \ 198 madv \ 199 mpss \ 200 libdisasm \ 201 libwrap \ 202 libxcurses \ 203 libxcurses2 \ 204 libbrand .WAIT \ 205 libzonecfg \ 206 libzoneinfo \ 207 libzonestat \ 208 libtsnet \ 209 libtsol \ 210 gss_mechs/mech_spnego \ 211 gss_mechs/mech_dummy \ 212 gss_mechs/mech_dh \ 213 rpcsec_gss \ 214 libraidcfg .WAIT \ 215 librcm .WAIT \ 216 libcfgadm .WAIT \ 217 libpicl .WAIT \ 218 libpicltree .WAIT \ 219 raidcfg_plugins \ 220 cfgadm_plugins \ 221 libmail \ 222 lvm \ 223 libsmedia \ 224 libipp \ 225 libdiskmgt \ 226 liblgrp \ 227 libfsmgt \ 228 fm \ 229 libavl \ 230 libcmdutils \ 231 libcontract \ 232 ../cmd/sendmail/libmilter \ 233 sasl_plugins \ 234 udapl \ 235 libzpool \ 236 libzfs_core \ 237 libzfs \ 238 libbe \ 239 pylibbe \ 240 libzfs_jni \ 241 pyzfs \ 242 pysolaris \ 243 libmapid \ 244 brand \ 245 policykit \ 246 hal \ 247 libshare \ 248 libsqlite \ 249 libidmap \ 250 libadutils \ 251 libipmi \ 252 libexacct/demo \ 253 libvrrpadm \ 254 libvscan \ 255 libgrubmgmt \ 256 libfakekernel \ 257 smbsrv \ 258 libilb \ 259 scsi \ 260 libima \ 261 libsun_ima \ 262 mpapi \ 263 librstp \ 264 libreparse \ 265 libhotplug \ 266 libfruutils .WAIT \ 267 libfru \ 268 $($(MACH)_SUBDIRS) 269 270 i386_SUBDIRS= \ 271 libfdisk \ 272 libsaveargs 273 274 sparc_SUBDIRS= .WAIT \ 275 efcode \ 276 libds \ 277 libdscp \ 278 libprtdiag .WAIT \ 279 libprtdiag_psr \ 280 libpri \ 281 librsc \ 282 storage \ 283 libpcp \ 284 libtsalarm \ 285 libv12n 286 287 FM_sparc_DEPLIBS= libpri 288 289 fm: \ 290 libexacct \ 291 libipmi \ 292 libzfs \ 293 scsi \ 294 $(FM_$(MACH)_DEPLIBS) 295 296 # 297 # Create a special version of $(SUBDIRS) with no .WAIT's, for use with the 298 # clean and clobber targets (for more information, see those targets, below). 299 # 300 NOWAIT_SUBDIRS= $(SUBDIRS:.WAIT=) 301 302 DCSUBDIRS = \ 303 lvm 304 305 MSGSUBDIRS= \ 306 abi \ 307 auditd_plugins \ 308 brand \ 309 cfgadm_plugins \ 310 gss_mechs/mech_dh \ 311 gss_mechs/mech_krb5 \ 312 krb5 \ 313 libast \ 314 libbsm \ 315 libc \ 316 libcfgadm \ 317 libcmd \ 318 libcontract \ 319 libcurses \ 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 libdhcputil \ 400 libdisasm \ 401 libdns_sd \ 402 libdscfg \ 403 libdtrace \ 404 libdtrace_jni \ 405 libelfsign \ 406 libeti \ 407 libfakekernel \ 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 libfdisk \ 510 libsaveargs 511 512 sparc_HDRSUBDIRS= \ 513 libds \ 514 libdscp \ 515 libpri \ 516 libv12n \ 517 storage 518 519 all := TARGET= all 520 check := TARGET= check 521 clean := TARGET= clean 522 clobber := TARGET= clobber 523 install := TARGET= install 524 install_h := TARGET= install_h 525 lint := TARGET= lint 526 _dc := TARGET= _dc 527 _msg := TARGET= _msg 528 529 .KEEP_STATE: 530 531 # 532 # For the all and install targets, we clearly must respect library 533 # dependencies so that the libraries link correctly. However, for 534 # the remaining targets (check, clean, clobber, install_h, lint, _dc 535 # and _msg), libraries do not have any dependencies on one another 536 # and thus respecting dependencies just slows down the build. 537 # As such, for these rules, we use pattern replacement to explicitly 538 # avoid triggering the dependency information. Note that for clean, 539 # clobber and lint, we must use $(NOWAIT_SUBDIRS) rather than 540 # $(SUBDIRS), to prevent `.WAIT' from expanding to `.WAIT-nodepend'. 541 # 542 543 all: $(SUBDIRS) 544 545 install: $(SUBDIRS) .WAIT install_extra 546 547 # extra libraries kept in other source areas 548 install_extra: 549 @cd ../cmd/sgs; pwd; $(MAKE) install_lib 550 @pwd 551 552 clean clobber lint: $(NOWAIT_SUBDIRS:%=%-nodepend) 553 554 install_h check: $(HDRSUBDIRS:%=%-nodepend) 555 556 _msg: $(MSGSUBDIRS:%=%-nodepend) .WAIT _dc 557 558 _dc: $(DCSUBDIRS:%=%-nodepend) 559 560 # 561 # Library interdependencies are called out explicitly here 562 # 563 auditd_plugins: libbsm libnsl libsecdb 564 gss_mechs/mech_krb5: libgss libnsl libsocket libresolv pkcs11 565 libadt_jni: libbsm 566 libast: libsocket libm 567 libadutils: libldap5 libresolv libsocket libnsl 568 nsswitch: libadutils libidmap 569 libbe: libzfs 570 libbsm: libtsol 571 libcmd: libsum libast libsocket libnsl 572 libcmdutils: libavl 573 libcontract: libnvpair 574 libdevid: libdevinfo 575 libdevinfo: libnvpair libsec 576 libdhcpagent: libsocket libdhcputil libuuid libdlpi libcontract 577 libdhcputil: libnsl libgen libinetutil libdlpi 578 libdladm: libdevinfo libinetutil libsocket libscf librcm libnvpair \ 579 libexacct libnsl libkstat libcurses 580 libdll: libast 581 libdlpi: libinetutil libdladm 582 libds: libsysevent 583 libdscfg: libnsctl libunistat libsocket libnsl 584 libdtrace: libproc libgen libctf 585 libdtrace_jni: libuutil libdtrace 586 libefi: libuuid 587 libfstyp: libnvpair 588 libelfsign: libcryptoutil libkmf 589 libidmap: libadutils libldap5 libavl libsldap libuutil 590 libipadm: libnsl libinetutil libsocket libdlpi libnvpair libdhcpagent \ 591 libdladm libsecdb 592 libiscsit: libc libnvpair libstmf libuuid libnsl 593 libkmf: libcryptoutil pkcs11 594 libm: libc 595 libm1: libc libm 596 libmvec: libc libm 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 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 libm 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 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 639 print: libldap5 640 udapl/udapl_tavor: udapl/libdat 641 libzfs: libdevid libgen libnvpair libuutil \ 642 libadm libavl libefi libidmap libmd libzfs_core libm 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 libfakekernel 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 libipmi: libm 672 libprtdiag: libm 673 libsqlite: libm 674 libstmf: libm 675 libvscan: libm 676 677 678 $(INTEL_BUILD)libdiskmgt:libfdisk 679 680 # 681 # The reason this rule checks for the existence of the 682 # Makefile is that some of the directories do not exist 683 # in certain situations (e.g., exportable source builds, 684 # OpenSolaris). 685 # 686 $(SUBDIRS): FRC 687 @if [ -f $@/Makefile ]; then \ 688 cd $@; pwd; $(MAKE) $(TARGET); \ 689 else \ 690 true; \ 691 fi 692 693 $(SUBDIRS:%=%-nodepend): 694 @if [ -f $(@:%-nodepend=%)/Makefile ]; then \ 695 cd $(@:%-nodepend=%); pwd; $(MAKE) $(TARGET); \ 696 else \ 697 true; \ 698 fi 699 700 FRC: