xref: /illumos-gate/usr/src/cmd/Makefile (revision 7010c12ad3ac2cada55cf126121a8c46957d3632)
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#
24# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
25# Use is subject to license terms.
26#
27# ident	"%Z%%M%	%I%	%E% SMI"
28
29include ../Makefile.master
30
31#
32#	Note that the commands 'agents', 'lp', 'perl', and 'man' are first in
33#	the list, violating alphabetical order.  This is because they are very
34#	long-running and should be given the most wall-clock time for a
35#	parallel build.
36#
37#	Commands in the FIRST_SUBDIRS list are built before starting the build
38#	of other commands.  Currently this includes only 'isaexec' and
39#	'platexec'.  This is necessary because $(ROOT)/usr/lib/isaexec or
40#	$(ROOT)/usr/lib/platexec must exist when some other commands are built
41#	because their 'make install' creates a hard link to one of them.
42#
43#	Commands are listed one per line so that TeamWare can auto-merge most
44#	changes.
45#
46
47FIRST_SUBDIRS=		\
48	isaexec		\
49	platexec
50
51COMMON_SUBDIRS=		\
52	agents		\
53	availdevs	\
54	lp		\
55	perl		\
56	man		\
57	Adm		\
58	abi		\
59	adbgen		\
60	acct		\
61	acctadm		\
62	arch		\
63	asa		\
64	audio		\
65	auths		\
66	autopush	\
67	awk		\
68	awk_xpg4	\
69	backup		\
70	banner		\
71	bart		\
72	basename	\
73	bc		\
74	bdiff		\
75	bfs		\
76	bnu		\
77	boot		\
78	busstat		\
79	cal		\
80	calendar	\
81	captoinfo	\
82	cat		\
83	cdrw		\
84	cfgadm		\
85	checkeq		\
86	checknr		\
87	chgrp		\
88	chmod		\
89	chown		\
90	chroot		\
91	cksum		\
92	clear		\
93	clinfo		\
94	cmd-crypto	\
95	cmd-inet	\
96	cmp		\
97	col		\
98	comm		\
99	compress	\
100	consadm		\
101	coreadm		\
102	cpio		\
103	cpc		\
104	cron		\
105	crypt		\
106	csh		\
107	csplit		\
108	ctrun		\
109	ctstat		\
110	ctwatch		\
111	cut		\
112	datadm		\
113	date		\
114	dc		\
115	dd		\
116	deroff		\
117	des		\
118	devfsadm	\
119	syseventd	\
120	devctl		\
121	devinfo		\
122	devmgmt		\
123	dfs.cmds	\
124	diff		\
125	diff3		\
126	diffmk		\
127	dircmp		\
128	dirname		\
129	dis		\
130	diskmgtd	\
131	dispadmin	\
132	dladm		\
133	dmesg		\
134	dtrace		\
135	du		\
136	dumpadm		\
137	dumpcs		\
138	echo		\
139	ed		\
140	eeprom		\
141	egrep		\
142	emul64ioctl	\
143	enhance		\
144	env		\
145	eqn		\
146	expand		\
147	expr		\
148	exstr		\
149	factor		\
150	false		\
151	fdetach		\
152	fdformat	\
153	fdisk		\
154	filesync	\
155	fgrep		\
156	file		\
157	find		\
158	fm		\
159	fmli		\
160	fmt		\
161	fmthard		\
162	fmtmsg		\
163	fold		\
164	format		\
165	fs.d		\
166	fstyp		\
167	fuser		\
168	gcore		\
169	gencat		\
170	geniconvtbl	\
171	genmsg		\
172	getconf		\
173	getdevpolicy	\
174	getent		\
175	getfacl		\
176	getmajor	\
177	getopt		\
178	gettext		\
179	gettxt		\
180	graph		\
181	grep		\
182	grep_xpg4	\
183	groups		\
184	grpck		\
185	gss		\
186	halt		\
187	head		\
188	hostid		\
189	hostname	\
190	id		\
191	infocmp		\
192	init		\
193	initpkg		\
194	install.d	\
195	intrd		\
196	intrstat	\
197	ipcrm		\
198	ipcs		\
199	ipf		\
200	isainfo		\
201	isalist		\
202	iscsi		\
203	java		\
204	join		\
205	kbd		\
206	keyserv		\
207	killall		\
208	krb5		\
209	kstat		\
210	last		\
211	lastcomm	\
212	ldap		\
213	ldapcachemgr	\
214	line		\
215	link		\
216	listen		\
217	loadkeys	\
218	locale		\
219	lockstat	\
220	locator		\
221	lofiadm		\
222	logadm		\
223	logger		\
224	login		\
225	logins		\
226	logname		\
227	look		\
228	ls		\
229	lvm		\
230	mach		\
231	machid		\
232	mail		\
233	mailx		\
234	makekey		\
235	mdb		\
236	mesg		\
237	mkdir		\
238	mkfifo		\
239	mkfile		\
240	mkmsgs		\
241	mknod		\
242	mkpwdict	\
243	mktemp		\
244	modload		\
245	more		\
246	msgfmt		\
247	msgid		\
248	mt		\
249	mv		\
250	mvdir		\
251	netadm		\
252	netfiles	\
253	newform		\
254	newgrp		\
255	news		\
256	newtask		\
257	nice		\
258	nispasswd	\
259	nl		\
260	nlsadmin	\
261	nohup		\
262	nsadmin		\
263	nscd		\
264	oamuser		\
265	oawk		\
266	openssl		\
267	pack		\
268	pagesize	\
269	passmgmt	\
270	passwd		\
271	paste		\
272	pathchk		\
273	pbind		\
274	pcidr		\
275	pcmciad		\
276	pfexec		\
277	pgrep		\
278	picl		\
279	plimit		\
280	pools		\
281	power		\
282	ppgsz		\
283	pg		\
284	plockstat	\
285	pr		\
286	prctl		\
287	print		\
288	priocntl	\
289	profiles	\
290	projadd		\
291	projects	\
292	prstat		\
293	prtconf		\
294	prtdiag		\
295	prtvtoc		\
296	ps		\
297	psradm		\
298	psrinfo		\
299	psrset		\
300	ptools		\
301	pwck		\
302	pwconv		\
303	pwd		\
304	raidctl		\
305	ramdiskadm	\
306	rcap		\
307	rcm_daemon	\
308	rctladm		\
309	refer		\
310	regcmp		\
311	renice		\
312	rexd		\
313	rm		\
314	rmdir		\
315	rmformat	\
316	rmt		\
317	roles		\
318	rpcbind		\
319	rpcgen		\
320	rpcinfo		\
321	rpcsvc		\
322	rpld		\
323	runat		\
324	sa		\
325	saf		\
326	savecore	\
327	script		\
328	sdiff		\
329	sendmail	\
330	setfacl		\
331	setmnt		\
332	setpgrp		\
333	setuname	\
334	sgs		\
335	sh		\
336	sleep		\
337	smbios		\
338	smserverd	\
339	soelim		\
340	sort		\
341	spell		\
342	spline		\
343	split		\
344	srchtxt		\
345	ssh		\
346	stat		\
347	streams		\
348	strings		\
349	su		\
350	sulogin		\
351	sum		\
352	sunpc		\
353	svc		\
354	swap		\
355	sync		\
356	sysdef		\
357	syseventadm	\
358	syslogd		\
359	tabs		\
360	tar		\
361	tbl		\
362	tcopy		\
363	tcpd		\
364	tee		\
365	terminfo	\
366	th_tools	\
367	tic		\
368	time		\
369	tip		\
370	tnf		\
371	touch		\
372	tplot		\
373	tput		\
374	trapstat	\
375	troff		\
376	true		\
377	truss		\
378	tty		\
379	ttymon		\
380	uadmin		\
381	ul		\
382	uname		\
383	uniq		\
384	units		\
385	unlink		\
386	unpack		\
387	users		\
388	utmp_update	\
389	utmpd		\
390	valtools	\
391	vgrind		\
392	vi		\
393	volmgt		\
394	w		\
395	wall		\
396	wbem		\
397	wc		\
398	which		\
399	who		\
400	whodo		\
401	wracct		\
402	write		\
403	xntpd		\
404	xargs		\
405	xstr		\
406	yes		\
407	ypcmd		\
408	yppasswd	\
409	zdb		\
410	zdump		\
411	zfs		\
412	zic		\
413	zinject		\
414	zlogin		\
415	zoneadm		\
416	zoneadmd	\
417	zonecfg		\
418	zonename	\
419	zpool		\
420	ztest
421
422$(CLOSED_BUILD)COMMON_SUBDIRS += \
423	$(CLOSED)/cmd/dodatadm	\
424	$(CLOSED)/cmd/iconv	\
425	$(CLOSED)/cmd/ksh	\
426	$(CLOSED)/cmd/llc2	\
427	$(CLOSED)/cmd/localedef	\
428	$(CLOSED)/cmd/more_xpg4	\
429	$(CLOSED)/cmd/mtst	\
430	$(CLOSED)/cmd/od	\
431	$(CLOSED)/cmd/patch	\
432	$(CLOSED)/cmd/pax	\
433	$(CLOSED)/cmd/pcitool	\
434	$(CLOSED)/cmd/printf	\
435	$(CLOSED)/cmd/sed	\
436	$(CLOSED)/cmd/sed_xpg4	\
437	$(CLOSED)/cmd/smartcard	\
438	$(CLOSED)/cmd/tail	\
439	$(CLOSED)/cmd/tr	\
440	$(CLOSED)/cmd/tr_xpg4
441
442i386_SUBDIRS=		\
443	addbadsec	\
444	biosdev		\
445	diskscan	\
446	OWconfig	\
447	rtc
448
449sparc_SUBDIRS=		\
450	cvcd		\
451	dcs		\
452	drd		\
453	fruadm		\
454	oplhpd		\
455	prtdscp		\
456	prtfru		\
457	scadm		\
458	sckmd		\
459	sf880drd	\
460	stmsboot	\
461	vntsd		\
462	wrsmconf	\
463	wrsmstat
464
465#
466# Commands that are messaged.  Note that 'lp' and 'man' come first
467# (see previous comment about 'lp' and 'man').
468#
469MSGSUBDIRS=		\
470	lp		\
471	man		\
472	abi		\
473	acctadm		\
474	allocate	\
475	asa		\
476	audio		\
477	audit		\
478	auditd		\
479	auths		\
480	autopush	\
481	awk		\
482	awk_xpg4	\
483	backup		\
484	banner		\
485	bart		\
486	basename	\
487	bnu		\
488	bsmconv		\
489	bsmrecord	\
490	bsmunconv	\
491	busstat		\
492	cal		\
493	cat		\
494	cdrw		\
495	cfgadm		\
496	checkeq		\
497	checknr		\
498	chgrp		\
499	chmod		\
500	chown		\
501	cksum		\
502	cmd-crypto	\
503	cmd-inet	\
504	cmp		\
505	col		\
506	comm		\
507	compress	\
508	consadm		\
509	coreadm		\
510	cpio		\
511	cpc		\
512	cron		\
513	csh		\
514	csplit		\
515	ctrun		\
516	ctstat		\
517	ctwatch		\
518	cut		\
519	datadm		\
520	date		\
521	dc		\
522	dcs		\
523	dd		\
524	deroff		\
525	devfsadm	\
526	diff		\
527	diffmk		\
528	dladm		\
529	du		\
530	dumpcs		\
531	ed		\
532	env		\
533	eqn		\
534	expand		\
535	expr		\
536	fgrep		\
537	file		\
538	filesync	\
539	find		\
540	fm		\
541	fold		\
542	fs.d		\
543	geniconvtbl	\
544	genmsg		\
545	getconf		\
546	getent		\
547	gettext		\
548	gettxt		\
549	grep		\
550	grep_xpg4	\
551	grpck		\
552	gss		\
553	halt		\
554	head		\
555	hostname	\
556	id		\
557	isaexec		\
558	iscsi		\
559	join		\
560	krb5		\
561	kstat		\
562	last		\
563	ldap		\
564	ldapcachemgr	\
565	locale		\
566	lofiadm		\
567	logadm		\
568	logger		\
569	logins		\
570	logname		\
571	ls		\
572	lvm		\
573	mailx		\
574	mesg		\
575	mkdir		\
576	mkpwdict	\
577	mktemp		\
578	more		\
579	msgfmt		\
580	mv		\
581	newgrp		\
582	newtask		\
583	nice		\
584	nispasswd	\
585	nohup		\
586	oawk		\
587	pack		\
588	passwd		\
589	passmgmt	\
590	paste		\
591	pathchk		\
592	pfexec		\
593	pg		\
594	pgrep		\
595	picl            \
596	pools		\
597	power		\
598	pr		\
599	praudit		\
600	print		\
601	profiles	\
602	projadd		\
603	projects	\
604	prstat		\
605	prtdiag		\
606	ps		\
607	psrinfo		\
608	pwconv		\
609	pwd		\
610	raidctl		\
611	ramdiskadm	\
612	rcap		\
613	rcm_daemon	\
614	refer		\
615	regcmp		\
616	renice		\
617	roles		\
618	rm		\
619	rmdir		\
620	rmformat	\
621	scadm		\
622	script		\
623	sdiff		\
624	sgs		\
625	sh		\
626	sleep		\
627	sort		\
628	split		\
629	ssh		\
630	stat		\
631	strings		\
632	su		\
633	sum		\
634	svc		\
635	swap		\
636	syseventadm	\
637	syseventd	\
638	tabs		\
639	tar		\
640	tbl		\
641	tee		\
642	time		\
643	tnf		\
644	touch		\
645	tput		\
646	troff		\
647	tty		\
648	ttymon		\
649	ul		\
650	uname		\
651	uniq		\
652	units		\
653	unlink		\
654	unpack		\
655	valtools	\
656	vgrind		\
657	vi		\
658	volmgt		\
659	w		\
660	wbem		\
661	wc		\
662	who		\
663	whodo		\
664	wracct		\
665	write		\
666	xargs		\
667	yppasswd	\
668	zdump		\
669	zfs		\
670	zic		\
671	zlogin		\
672	zoneadm		\
673	zoneadmd	\
674	zonecfg		\
675	zonename	\
676	zpool
677
678$(CLOSED_BUILD)MSGSUBDIRS += \
679	$(CLOSED)/cmd/iconv	\
680	$(CLOSED)/cmd/ksh	\
681	$(CLOSED)/cmd/llc2	\
682	$(CLOSED)/cmd/localedef	\
683	$(CLOSED)/cmd/more_xpg4	\
684	$(CLOSED)/cmd/od	\
685	$(CLOSED)/cmd/patch	\
686	$(CLOSED)/cmd/pax	\
687	$(CLOSED)/cmd/printf	\
688	$(CLOSED)/cmd/sed	\
689	$(CLOSED)/cmd/sed_xpg4	\
690	$(CLOSED)/cmd/tail	\
691	$(CLOSED)/cmd/tr	\
692	$(CLOSED)/cmd/tr_xpg4
693
694sparc_MSGSUBDIRS=	\
695	fruadm		\
696	prtdscp		\
697	prtfru		\
698	stmsboot	\
699	vntsd		\
700	wrsmconf	\
701	wrsmstat
702
703#
704# commands that use dcgettext for localized time, LC_TIME
705#
706DCSUBDIRS=		\
707	cal		\
708	cfgadm		\
709	diff		\
710	ls		\
711	pr		\
712	tar		\
713	w		\
714	who		\
715	whodo		\
716	write
717
718$(CLOSED_BUILD)DCSUBDIRS += \
719	$(CLOSED)/cmd/pax
720
721#
722# commands that belong only to the basic security module
723#
724BSMSUBDIRS=		\
725	allocate	\
726	amt		\
727	audit		\
728	audit_warn	\
729	auditconfig	\
730	auditd		\
731	auditreduce	\
732	auditstat	\
733	praudit		\
734	bsmconv		\
735	bsmrecord	\
736	bsmunconv
737
738#
739# commands not owned by the systems group
740#
741BWOSDIRS=
742
743#
744# Commands providing manifests must offer a check target.  A recursive check
745# target across all commands directories is not currently provided.
746#
747MANIFEST_TOPDIRS=			\
748	auditd				\
749	bnu				\
750	consadm				\
751	coreadm				\
752	cron				\
753	cvcd				\
754	dispadmin			\
755	drd				\
756	dumpadm				\
757	eeprom				\
758	fm				\
759	intrd				\
760	ipf				\
761	keyserv				\
762	ldapcachemgr			\
763	nscd				\
764	oplhpd				\
765	power				\
766	rexd				\
767	rpcbind				\
768	rpcsvc				\
769	saf				\
770	sf880drd			\
771	smserverd			\
772	syseventd			\
773	syslogd				\
774	utmpd				\
775	vntsd				\
776	ypcmd				\
777	zoneadmd
778
779MANIFEST_SUBDIRS=			\
780	boot/scripts			\
781	cmd-crypto/scripts		\
782	cmd-inet/usr.lib/in.chargend	\
783	cmd-inet/usr.lib/in.daytimed	\
784	cmd-inet/usr.lib/in.dhcpd	\
785	cmd-inet/usr.lib/in.discardd	\
786	cmd-inet/usr.lib/in.echod	\
787	cmd-inet/usr.lib/in.timed	\
788	cmd-inet/usr.lib/inetd		\
789	cmd-inet/usr.lib/slpd		\
790	cmd-inet/usr.sbin		\
791	cmd-inet/usr.sbin/in.ftpd	\
792	cmd-inet/usr.sbin/in.talkd	\
793	dcs/sparc/sun4u			\
794	fs.d/autofs			\
795	fs.d/cachefs			\
796	fs.d/nfs/svc			\
797	gss/gssd			\
798	krb5/kadmin/server		\
799	krb5/krb5kdc			\
800	krb5/kwarn			\
801	krb5/slave			\
802	lp/cmd/lpsched			\
803	lvm/rpc.metad			\
804	lvm/rpc.metamedd		\
805	lvm/rpc.metamhd			\
806	lvm/md_monitord			\
807	lvm/metassist/sysfiles		\
808	lvm/util			\
809	picl/picld			\
810	print/gateway			\
811	print/lp			\
812	rcap/rcapd			\
813	rpcsvc/rpc.bootparamd		\
814	sendmail/lib			\
815	smartcard/daemon		\
816	ssh/etc				\
817	svc/milestone			\
818	ypcmd/yppasswd			\
819	ypcmd/ypupdated			\
820	xntpd/xntpd
821
822all :=		TARGET = all
823install :=	TARGET = install
824clean :=	TARGET = clean
825clobber :=	TARGET = clobber
826lint :=		TARGET = lint
827check :=	TARGET = check
828_msg :=		TARGET = _msg
829_dc :=		TARGET = _dc
830
831.KEEP_STATE:
832
833SUBDIRS = $(COMMON_SUBDIRS) $($(MACH)_SUBDIRS)
834
835.PARALLEL:	$(BWOSDIRS) $(SUBDIRS) $(MSGSUBDIRS) $(BSMSUBDIRS) \
836		$(MANIFEST_SUBDIRS)
837
838all install clean clobber lint: $(FIRST_SUBDIRS) .WAIT $(SUBDIRS) $(BSMSUBDIRS)
839
840check: svccfg_check .WAIT $(MANIFEST_TOPDIRS) $(MANIFEST_SUBDIRS)
841
842svccfg_check:
843	@$(ECHO) "building requirements for svccfg check ..."; \
844	(cd $(SRC)/cmd/svc/svccfg && pwd && $(MAKE) $(MFLAGS) native)
845
846#
847# The .WAIT directive works around an apparent bug in parallel make.
848# Evidently make was getting the target _msg vs. _dc confused under
849# some level of parallelization, causing some of the _dc objects
850# not to be built.
851#
852_msg: $(MSGSUBDIRS) $($(MACH)_MSGSUBDIRS) .WAIT _dc
853
854_dc: $(DCSUBDIRS)
855
856#
857# Dependencies
858#
859fs.d: fstyp
860
861$(FIRST_SUBDIRS) $(BWOSDIRS) $(SUBDIRS) $(BSMSUBDIRS) $(MANIFEST_SUBDIRS): FRC
862	@if [ -f $@/Makefile  ]; then \
863		cd $@; pwd; $(MAKE) $(TARGET); \
864	else \
865		true; \
866	fi
867
868FRC:
869