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