Home | History | Annotate | Download | only in lib
      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 2009 Sun Microsystems, Inc.  All rights reserved.
     23 # Use is subject to license terms.
     24 #
     25 
     26 include ../Makefile.master
     27 
     28 #	Note that libcurses installs commands along with its library.
     29 #	This is a minor bug which probably should be fixed.
     30 #	Note also that a few extra libraries are kept in cmd source.
     31 #
     32 # Certain libraries are linked with, hence depend on, other libraries.
     33 #
     34 # Although we have historically used .WAIT to express dependencies, it
     35 # reduces the amount of parallelism and thus lengthens the time it
     36 # takes to build the libraries.  Thus, we now require that any new
     37 # libraries explicitly call out their dependencies.  Eventually, all
     38 # the library dependencies will be called out explicitly.  See
     39 # "Library interdependencies" near the end of this file.
     40 #
     41 # Aside from explicit dependencies (and legacy .WAITs), all libraries
     42 # are built in parallel.
     43 #
     44 .PARALLEL:
     45 
     46 #
     47 # The $(CLOSED_BUILD) additions to SUBDIRS & MSGSUBDIRS are unfortunate,
     48 # but required due to the "dependencies" of using .WAIT to barrier the
     49 # parallel dmake builds.  once 4631488 has been fixed, they can be
     50 # consolidated into one $(CLOSED_BUILD)SUBDIRS += (all closed libs) as
     51 # shown in HDRSUBDIRS
     52 #
     53 SUBDIRS= \
     54 	common			.WAIT	\
     55 	../cmd/sgs/libconv		\
     56 	../cmd/sgs/libdl	.WAIT
     57 
     58 $(CLOSED_BUILD)SUBDIRS += \
     59 	$(CLOSED)/lib/libc_i18n
     60 
     61 SUBDIRS += \
     62 	libc			.WAIT	\
     63 	../cmd/sgs/libelf	.WAIT	\
     64 	c_synonyms			\
     65 	libmd				\
     66 	libmd5				\
     67 	librsm				\
     68 	libmp			.WAIT	\
     69 	libnsl			\
     70 	libsecdb		.WAIT	\
     71 	librpcsvc			\
     72 	libsocket		.WAIT	\
     73 	libsctp			\
     74 	libsip			\
     75 	libcommputil		\
     76 	libresolv			\
     77 	libresolv2		.WAIT	\
     78 	libw			.WAIT	\
     79 	libintl			.WAIT	\
     80 	../cmd/sgs/librtld_db	\
     81 	libaio			\
     82 	libast			\
     83 	libdll			\
     84 	libcmd			\
     85 	libshell		\
     86 	libsum			\
     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 	libiscsit	\
    117 	libiscsitgt	\
    118 	libkmf		\
    119 	libkstat	\
    120 	libkvm		\
    121 	liblm		\
    122 	libmalloc	\
    123 	libmapmalloc	\
    124 	libmtmalloc	\
    125 	libnls		\
    126 	libnwam		\
    127 	libsmbios	\
    128 	libtecla	\
    129 	libumem		\
    130 	libnvpair	.WAIT	\
    131 	libexacct	\
    132 	libplot		\
    133 	libldap4	\
    134 	libsasl		\
    135 	libldap5	\
    136 	libsldap	.WAIT	\
    137 	libbsm		\
    138 	libsys		\
    139 	libsysevent	\
    140 	libnisdb	\
    141 	libpool		\
    142 	libpp		\
    143 	libproc		\
    144 	libproject	\
    145 	libsendfile	\
    146 	nametoaddr	\
    147 	ncad_addr	\
    148 	hbaapi		\
    149 	smhba		\
    150 	sun_fc		\
    151 	sun_sas		\
    152 	gss_mechs/mech_krb5	.WAIT	\
    153 	libkrb5	.WAIT	\
    154 	krb5	.WAIT	\
    155 	libsmbfs	\
    156 	libfcoe		\
    157 	libstmf		\
    158 	libstmfproxy	\
    159 	libnsctl	\
    160 	libunistat	\
    161 	libdscfg	\
    162 	librdc		\
    163 	libinstzones	\
    164 	libpkg
    165 
    166 SUBDIRS += \
    167 	passwdutil	\
    168 	pam_modules	\
    169 	crypt_modules	\
    170 	libadt_jni	\
    171 	abi		\
    172 	auditd_plugins	\
    173 	libvolmgt	\
    174 	libdevice	\
    175 	libdevid	\
    176 	libdhcpsvc	\
    177 	libc_db		\
    178 	libndmp		\
    179 	libsec		\
    180 	libtnfprobe	\
    181 	libtnf		\
    182 	libtnfctl	\
    183 	libdhcpagent	\
    184 	libdhcpdu	\
    185 	libdhcputil	\
    186 	libxnet		\
    187 	libipsecutil
    188 $(CLOSED_BUILD)SUBDIRS += \
    189 	$(CLOSED)/lib/libike
    190 SUBDIRS += \
    191 	nsswitch	\
    192 	print		\
    193 	libuutil	\
    194 	libscf		\
    195 	libinetsvc	\
    196 	librestart	\
    197 	libsched	\
    198 	libelfsign	\
    199 	pkcs11		.WAIT	\
    200 	libpctx		.WAIT	\
    201 	libcpc		\
    202 	watchmalloc	\
    203 	extendedFILE	\
    204 	madv		\
    205 	mpss		\
    206 	libdisasm	\
    207 	libwrap		\
    208 	libxcurses	\
    209 	libxcurses2	\
    210 	libbrand	.WAIT   \
    211 	libzonecfg	\
    212 	libzoneinfo	\
    213 	libtsnet	\
    214 	libtsol		\
    215 	gss_mechs/mech_spnego	\
    216 	gss_mechs/mech_dummy	\
    217 	gss_mechs/mech_dh	\
    218 	rpcsec_gss	\
    219 	libraidcfg	.WAIT	\
    220 	librcm		.WAIT	\
    221 	libcfgadm	.WAIT	\
    222 	libpicl		.WAIT	\
    223 	libpicltree	.WAIT \
    224 	raidcfg_plugins	\
    225 	cfgadm_plugins	\
    226 	libmail		\
    227 	lvm		\
    228 	libsmedia	\
    229 	libipp		\
    230 	libdiskmgt	\
    231 	liblgrp		\
    232 	libfsmgt	\
    233 	fm		\
    234 	libavl		\
    235 	libcmdutils	\
    236 	libcontract	\
    237 	../cmd/sendmail/libmilter	\
    238 	sasl_plugins	\
    239 	udapl		\
    240 	libzpool	\
    241 	libzfs		\
    242 	libzfs_jni	\
    243 	pyzfs		\
    244 	libmapid	\
    245 	brand		\
    246 	policykit	\
    247 	hal		\
    248 	libshare	\
    249 	libsqlite	\
    250 	libidmap	\
    251 	libadutils	\
    252 	libipmi		\
    253 	libexacct/demo	\
    254 	libvrrpadm	\
    255 	libvscan	\
    256 	libgrubmgmt	\
    257 	smbsrv		\
    258 	libilb		\
    259 	scsi		\
    260 	mms		\
    261 	libima		\
    262 	libsun_ima	\
    263 	mpapi		\
    264 	librstp		\
    265 	libreparse	\
    266 	libhotplug	\
    267 	libfruutils	.WAIT	\
    268 	libfru		\
    269 	$($(MACH)_SUBDIRS)
    270 
    271 i386_SUBDIRS=		\
    272 	libntfs		\
    273 	libparted	\
    274 	libfdisk
    275 
    276 sparc_SUBDIRS= .WAIT	\
    277 	efcode		\
    278 	libc_psr	.WAIT	\
    279 	libds		\
    280 	libdscp		\
    281 	libprtdiag	.WAIT	\
    282 	libprtdiag_psr	\
    283 	libpri		\
    284 	librsc		\
    285 	storage		\
    286 	libpcp		\
    287 	libtsalarm
    288 
    289 FM_sparc_DEPLIBS= libpri
    290 
    291 fm:			\
    292 	libexacct	\
    293 	libipmi		\
    294 	libzfs		\
    295 	scsi		\
    296 	$(FM_$(MACH)_DEPLIBS)
    297 
    298 #
    299 # Create a special version of $(SUBDIRS) with no .WAIT's, for use with the
    300 # clean and clobber targets (for more information, see those targets, below).
    301 #
    302 NOWAIT_SUBDIRS= $(SUBDIRS:.WAIT=)
    303 
    304 DCSUBDIRS =		\
    305 	lvm
    306 
    307 MSGSUBDIRS=		\
    308 	abi		\
    309 	auditd_plugins	\
    310 	brand		\
    311 	cfgadm_plugins	\
    312 	gss_mechs/mech_dh	\
    313 	gss_mechs/mech_krb5	\
    314 	krb5		\
    315 	libast		\
    316 	libbsm		\
    317 	libc		\
    318 	libcfgadm	\
    319 	libcmd		\
    320 	libcontract	\
    321 	libcurses	\
    322 	libdhcpsvc 	\
    323 	libdhcputil	\
    324 	libipsecutil	\
    325 	libdiskmgt	\
    326 	libdladm	\
    327 	libdll		\
    328 	libgrubmgmt	\
    329 	libgss		\
    330 	libidmap	\
    331 	libinetcfg	\
    332 	libipmp		\
    333 	libilb		\
    334 	libinetutil	\
    335 	libinstzones	\
    336 	libnsl		\
    337 	libpam		\
    338 	libpicl		\
    339 	libpool		\
    340 	libpkg		\
    341 	libpp		\
    342 	libscf		\
    343 	libsasl		\
    344 	libldap5	\
    345 	libsecdb	\
    346 	libshare	\
    347 	libshell	\
    348 	libsldap	\
    349 	libslp		\
    350 	libsmbfs	\
    351 	libsmedia	\
    352 	libsum		\
    353 	libtsol		\
    354 	libuutil	\
    355 	libvrrpadm	\
    356 	libvscan	\
    357 	libwanboot	\
    358 	libwanbootutil	\
    359 	libzfs		\
    360 	libzonecfg	\
    361 	lvm		\
    362 	madv		\
    363 	mms		\
    364 	mpss		\
    365 	pam_modules	\
    366 	pyzfs		\
    367 	rpcsec_gss	\
    368 	libreparse
    369 MSGSUBDIRS += \
    370 	$($(MACH)_MSGSUBDIRS)
    371 
    372 sparc_MSGSUBDIRS=	\
    373 	libprtdiag	\
    374 	libprtdiag_psr
    375 
    376 i386_MSGSUBDIRS= libfdisk
    377 
    378 HDRSUBDIRS=		\
    379 	auditd_plugins	\
    380 	libast		\
    381 	libbrand	\
    382 	libbsm		\
    383 	libc		\
    384 	libcmd		\
    385 	libcmdutils	\
    386 	libcontract	\
    387 	libcpc		\
    388 	libctf		\
    389 	libcurses	\
    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 	libwanboot	\
    412 	libwanbootutil	\
    413 	libipsecutil	\
    414 	libinetcfg	\
    415 	libinetsvc	\
    416 	libinetutil	\
    417 	libinstzones	\
    418 	libipmi		\
    419 	libipmp		\
    420 	libipp		\
    421 	libiscsit	\
    422 	libiscsitgt	\
    423 	libkstat	\
    424 	libkvm		\
    425 	libmail		\
    426 	libmd		\
    427 	libmtmalloc	\
    428 	libndmp		\
    429 	libnvpair	\
    430 	libnsctl	\
    431 	libnsl		\
    432 	libnwam		\
    433 	libpam		\
    434 	libpctx		\
    435 	libpicl		\
    436 	libpicltree	\
    437 	libplot		\
    438 	libpool		\
    439 	libpp		\
    440 	libproc		\
    441 	libraidcfg	\
    442 	librcm		\
    443 	librdc		\
    444 	libscf		\
    445 	libsip		\
    446 	libcommputil	\
    447 	libsmbios	\
    448 	librestart	\
    449 	librpcsvc	\
    450 	librsm		\
    451 	librstp		\
    452 	libsasl		\
    453 	libsec		\
    454 	libshell	\
    455 	libslp		\
    456 	libsmedia	\
    457 	libsqlite	\
    458 	libfcoe		\
    459 	libstmf		\
    460 	libstmfproxy	\
    461 	libsum		\
    462 	libsysevent	\
    463 	libtecla	\
    464 	libtnf		\
    465 	libtnfctl	\
    466 	libtnfprobe	\
    467 	libtsnet	\
    468 	libtsol		\
    469 	libvrrpadm	\
    470 	libvolmgt	\
    471 	libumem		\
    472 	libunistat	\
    473 	libuutil	\
    474 	libwrap		\
    475 	libxcurses2	\
    476 	libzfs		\
    477 	libzfs_jni	\
    478 	libzoneinfo	\
    479 	hal		\
    480 	policykit	\
    481 	lvm		\
    482 	pkcs11		\
    483 	passwdutil	\
    484 	../cmd/sendmail/libmilter	\
    485 	fm		\
    486 	udapl		\
    487 	libmapid	\
    488 	libkrb5		\
    489 	libsmbfs	\
    490 	libshare	\
    491 	libidmap	\
    492 	libvscan	\
    493 	libgrubmgmt	\
    494 	smbsrv		\
    495 	libilb		\
    496 	scsi		\
    497 	hbaapi		\
    498 	smhba		\
    499 	libima		\
    500 	libsun_ima	\
    501 	mpapi		\
    502 	mms		\
    503 	libreparse	\
    504 	$($(MACH)_HDRSUBDIRS)
    505 
    506 $(CLOSED_BUILD)HDRSUBDIRS += \
    507 	$(CLOSED)/lib/libc_i18n	\
    508 	$(CLOSED)/lib/libike
    509 
    510 i386_HDRSUBDIRS=	\
    511 	libparted	\
    512 	libfdisk
    513 
    514 sparc_HDRSUBDIRS=	\
    515 	libds		\
    516 	libdscp		\
    517 	libpri		\
    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 libadt_jni:	libbsm
    567 $(CLOSED_BUILD)libc:		$(CLOSED)/lib/libc_i18n
    568 libast: 	libsocket
    569 libadutils: 	libldap5 libresolv libsocket libnsl
    570 nsswitch:	libadutils libidmap
    571 libbsm:		libtsol
    572 libcmd: 	libsum libast libsocket libnsl
    573 libcmdutils:	libavl
    574 libcontract:	libnvpair
    575 libdevid:	libdevinfo
    576 libdevinfo:	libnvpair libsec
    577 libdhcpagent:	libsocket libdhcputil libuuid libdlpi libcontract
    578 libdhcpsvc:	libinetutil
    579 libdhcputil:	libnsl libgen libinetutil libdlpi
    580 libdladm:	libdevinfo libinetutil libsocket libscf librcm libnvpair \
    581 		libexacct libnsl libkstat libcurses
    582 libdll: 	libast
    583 libdlpi:	libinetutil libdladm
    584 libdscfg:	libnsctl libunistat libsocket libnsl
    585 libdtrace:	libproc libgen libctf
    586 libdtrace_jni:	libuutil libdtrace
    587 libefi:		libuuid
    588 libfstyp:	libnvpair
    589 libelfsign:	libcryptoutil libkmf
    590 libidmap:	libadutils libldap5 libavl libsldap
    591 libinetcfg:	libnsl libsocket libdlpi
    592 libiscsit:	libc libnvpair libstmf libuuid libnsl
    593 libkmf:		libcryptoutil pkcs11
    594 libnsl:		libmd5 libscf
    595 libmapid:	libresolv
    596 libnwam:	libdoor
    597 librdc:		libsocket libnsl libnsctl libunistat libdscfg
    598 libuuid:	libdlpi
    599 $(CLOSED_BUILD)libike:	libipsecutil libxnet libcryptoutil
    600 libinetutil:	libsocket
    601 libipsecutil:	libtecla libsocket
    602 libinstzones:	libzonecfg libcontract
    603 libpkg:		libwanboot libscf libadm
    604 libsecdb:	libnsl
    605 libsasl:	libgss libsocket pkcs11 libmd
    606 sasl_plugins:	pkcs11 libgss libsocket libsasl
    607 libsctp:	libsocket
    608 libshell:	libast libcmd libdll libsocket libsecdb
    609 libsip:		libmd5
    610 libsmbfs:	libsocket libnsl libkrb5
    611 libsocket:	libnsl
    612 libstmfproxy: 	libstmf libsocket libnsl libpthread
    613 libsum: 	libast
    614 libldap5:	libsasl libsocket libnsl libmd
    615 libsldap:	libldap5 libtsol libnsl libc libscf libresolv
    616 libpool:	libnvpair libexacct
    617 libpp:		libast
    618 libzonecfg:	libc libsocket libnsl libuuid libnvpair libsysevent libsec \
    619 		libbrand libpool libscf
    620 libproc:	../cmd/sgs/librtld_db ../cmd/sgs/libelf libctf
    621 libproject:	libpool libproc libsecdb
    622 libtsnet:	libnsl libtsol libsecdb
    623 libwrap:	libnsl libsocket
    624 libwanboot:	libnvpair libresolv libnsl libsocket libdevinfo libinetutil \
    625 		libdhcputil
    626 libwanbootutil:	libnsl
    627 pam_modules:	libproject passwdutil smbsrv
    628 libscf:		libuutil libmd libgen libsmbios
    629 libinetsvc:	libscf
    630 librestart:	libuutil libscf
    631 ../cmd/sgs/libdl:	../cmd/sgs/libconv
    632 ../cmd/sgs/libelf:	../cmd/sgs/libconv
    633 pkcs11:		libcryptoutil
    634 print:		libldap5
    635 udapl/udapl_tavor:	udapl/libdat
    636 libzfs:		libdevid libgen libnvpair libuutil libiscsitgt \
    637 		libadm libavl libefi libidmap
    638 libzfs_jni:	libdiskmgt libnvpair libzfs
    639 libzpool:	libavl libumem libnvpair
    640 libsec:		libavl libidmap
    641 brand:		libc libsocket
    642 libshare:	libscf libzfs libuuid libfsmgt libsecdb libumem libsmbfs
    643 libexacct/demo:	libexacct libproject libsocket libnsl
    644 libtsalarm:	libpcp
    645 smbsrv:		libsocket libnsl libmd libxnet libpthread librt \
    646 		libshare libidmap pkcs11 libsqlite
    647 libvrrpadm:	libsocket libdladm
    648 libvscan:	libscf
    649 scsi:		libnvpair
    650 mpapi:		libpthread libdevinfo libsysevent libnvpair
    651 libgrubmgmt:	libdevinfo libzfs libfstyp
    652 pyzfs:		libnvpair libsec libidmap libzfs
    653 libreparse:	libnvpair
    654 libhotplug:	libnvpair
    655 cfgadm_plugins:	libhotplug
    656 libilb:		libsocket
    657 $(INTEL_BUILD)libdiskmgt:libfdisk
    658 
    659 #
    660 # The reason this rule checks for the existence of the
    661 # Makefile is that some of the directories do not exist
    662 # in certain situations (e.g., exportable source builds,
    663 # OpenSolaris).
    664 #
    665 $(SUBDIRS): FRC
    666 	@if [ -f $@/Makefile  ]; then \
    667 		cd $@; pwd; $(MAKE) $(TARGET); \
    668 	else \
    669 		true; \
    670 	fi
    671 
    672 $(SUBDIRS:%=%-nodepend):
    673 	@if [ -f $(@:%-nodepend=%)/Makefile  ]; then \
    674 		cd $(@:%-nodepend=%); pwd; $(MAKE) $(TARGET); \
    675 	else \
    676 		true; \
    677 	fi
    678 
    679 FRC:
    680