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