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