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