xref: /illumos-gate/usr/src/cmd/Makefile (revision 43d18f1c320355e93c47399bea0b2e022fe06364)
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	availdevs	\
53	lp		\
54	perl		\
55	man		\
56	Adm		\
57	abi		\
58	adbgen		\
59	acct		\
60	acctadm		\
61	arch		\
62	asa		\
63	aset		\
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	diskmgtd	\
130	dispadmin	\
131	dladm		\
132	dmesg		\
133	dodatadm	\
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	iconv		\
191	id		\
192	infocmp		\
193	init		\
194	initpkg		\
195	install.d	\
196	intrd		\
197	intrstat	\
198	ipcrm		\
199	ipcs		\
200	ipf		\
201	isainfo		\
202	isalist		\
203	java		\
204	join		\
205	kbd		\
206	keyserv		\
207	killall		\
208	krb5		\
209	ksh		\
210	kstat		\
211	last		\
212	lastcomm	\
213	ldap		\
214	ldapcachemgr	\
215	line		\
216	link		\
217	listen		\
218	llc2		\
219	loadkeys	\
220	locale		\
221	localedef	\
222	lockstat	\
223	locator		\
224	lofiadm		\
225	logadm		\
226	logger		\
227	login		\
228	logins		\
229	logname		\
230	look		\
231	ls		\
232	lvm		\
233	mach		\
234	machid		\
235	mail		\
236	mailx		\
237	makekey		\
238	mdb		\
239	mesg		\
240	mkdir		\
241	mkfifo		\
242	mkfile		\
243	mkmsgs		\
244	mknod		\
245	mkpwdict	\
246	mktemp		\
247	modload		\
248	more		\
249	more_xpg4	\
250	msgfmt		\
251	msgid		\
252	mt		\
253	mv		\
254	mvdir		\
255	netadm		\
256	netfiles	\
257	newform		\
258	newgrp		\
259	news		\
260	newtask		\
261	nice		\
262	nispasswd	\
263	nl		\
264	nlsadmin	\
265	nohup		\
266	nsadmin		\
267	nscd		\
268	oamuser		\
269	oawk		\
270	od		\
271	openssl		\
272	pack		\
273	pagesize	\
274	passmgmt	\
275	passwd		\
276	paste		\
277	patch		\
278	pathchk		\
279	pax		\
280	pbind		\
281	pcidr		\
282	pcitool		\
283	pcmciad		\
284	pfexec		\
285	pgrep		\
286	picl		\
287	plimit		\
288	pools		\
289	power		\
290	ppgsz		\
291	pg		\
292	plockstat	\
293	pr		\
294	prctl		\
295	print		\
296	printf		\
297	priocntl	\
298	profiles	\
299	projadd		\
300	projects	\
301	prstat		\
302	prtconf		\
303	prtdiag		\
304	prtvtoc		\
305	ps		\
306	psradm		\
307	psrinfo		\
308	psrset		\
309	pt_chmod	\
310	ptools		\
311	pwck		\
312	pwconv		\
313	pwd		\
314	raidctl		\
315	ramdiskadm	\
316	rcap		\
317	rcm_daemon	\
318	rctladm		\
319	refer		\
320	regcmp		\
321	renice		\
322	rexd		\
323	rm		\
324	rmdir		\
325	rmformat	\
326	rmt		\
327	roles		\
328	rpcbind		\
329	rpcgen		\
330	rpcinfo		\
331	rpcsvc		\
332	rpld		\
333	runat		\
334	sa		\
335	saf		\
336	savecore	\
337	script		\
338	sdiff		\
339	sed		\
340	sed_xpg4	\
341	sendmail	\
342	setfacl		\
343	setmnt		\
344	setpgrp		\
345	setuname	\
346	sgs		\
347	sh		\
348	sleep		\
349	smartcard	\
350	smbios		\
351	smserverd	\
352	soelim		\
353	sort		\
354	spell		\
355	spline		\
356	split		\
357	srchtxt		\
358	ssh		\
359	stat		\
360	streams		\
361	strings		\
362	su		\
363	sulogin		\
364	sum		\
365	sunpc		\
366	svc		\
367	swap		\
368	sync		\
369	sysdef		\
370	syseventadm	\
371	syslogd		\
372	tabs		\
373	tail		\
374	tar		\
375	tbl		\
376	tcopy		\
377	tcpd		\
378	tee		\
379	terminfo	\
380	th_tools	\
381	tic		\
382	time		\
383	tip		\
384	tnf		\
385	touch		\
386	tplot		\
387	tput		\
388	tr		\
389	tr_xpg4		\
390	trapstat	\
391	troff		\
392	true		\
393	truss		\
394	tty		\
395	ttymon		\
396	uadmin		\
397	ul		\
398	uname		\
399	uniq		\
400	units		\
401	unlink		\
402	unpack		\
403	users		\
404	utmp_update	\
405	utmpd		\
406	valtools	\
407	vgrind		\
408	vi		\
409	volmgt		\
410	w		\
411	wall		\
412	wbem		\
413	wc		\
414	which		\
415	who		\
416	whodo		\
417	wracct		\
418	write		\
419	xntpd		\
420	xargs		\
421	xstr		\
422	yes		\
423	ypcmd		\
424	yppasswd	\
425	zdb		\
426	zdump		\
427	zfs		\
428	zic		\
429	zlogin		\
430	zoneadm		\
431	zoneadmd	\
432	zonecfg		\
433	zonename	\
434	zpool		\
435	ztest
436
437i386_SUBDIRS=		\
438	addbadsec	\
439	biosdev		\
440	diskscan	\
441	OWconfig	\
442	rtc
443
444sparc_SUBDIRS=		\
445	cvcd		\
446	dcs		\
447	fruadm		\
448	mtst		\
449	prtfru		\
450	scadm		\
451	sckmd		\
452	sf880drd	\
453	stmsboot	\
454	wrsmconf	\
455	wrsmstat
456
457#
458# Commands that are messaged.  Note that 'lp' and 'man' come first
459# (see previous comment about 'lp' and 'man').
460#
461MSGSUBDIRS=		\
462	lp		\
463	man		\
464	abi		\
465	acctadm		\
466	allocate	\
467	asa		\
468	audio		\
469	audit		\
470	auditd		\
471	auths		\
472	autopush	\
473	awk		\
474	awk_xpg4	\
475	backup		\
476	banner		\
477	bart		\
478	basename	\
479	bnu		\
480	bsmconv		\
481	bsmrecord	\
482	bsmunconv	\
483	busstat		\
484	cal		\
485	cat		\
486	cdrw		\
487	cfgadm		\
488	checkeq		\
489	checknr		\
490	chgrp		\
491	chmod		\
492	chown		\
493	cksum		\
494	cmd-crypto	\
495	cmd-inet	\
496	cmp		\
497	col		\
498	comm		\
499	compress	\
500	consadm		\
501	coreadm		\
502	cpio		\
503	cpc		\
504	cron		\
505	csh		\
506	csplit		\
507	ctrun		\
508	ctstat		\
509	ctwatch		\
510	cut		\
511	datadm		\
512	date		\
513	dc		\
514	dcs		\
515	dd		\
516	deroff		\
517	devfsadm	\
518	diff		\
519	diffmk		\
520	dladm		\
521	du		\
522	dumpcs		\
523	ed		\
524	env		\
525	eqn		\
526	expand		\
527	expr		\
528	fgrep		\
529	file		\
530	filesync	\
531	find		\
532	fm		\
533	fold		\
534	fs.d		\
535	geniconvtbl	\
536	genmsg		\
537	getconf		\
538	getent		\
539	gettext		\
540	gettxt		\
541	grep		\
542	grep_xpg4	\
543	grpck		\
544	gss		\
545	halt		\
546	head		\
547	hostname	\
548	iconv		\
549	id		\
550	isaexec		\
551	join		\
552	krb5		\
553	ksh		\
554	kstat		\
555	last		\
556	ldap		\
557	ldapcachemgr	\
558	llc2		\
559	locale		\
560	localedef	\
561	lofiadm		\
562	logadm		\
563	logger		\
564	logins		\
565	logname		\
566	ls		\
567	lvm		\
568	mailx		\
569	mesg		\
570	mkdir		\
571	mkpwdict	\
572	mktemp		\
573	more		\
574	more_xpg4	\
575	msgfmt		\
576	mv		\
577	newgrp		\
578	newtask		\
579	nice		\
580	nispasswd	\
581	nohup		\
582	oawk		\
583	od		\
584	pack		\
585	passwd		\
586	passmgmt	\
587	paste		\
588	patch		\
589	pathchk		\
590	pax		\
591	pfexec		\
592	pg		\
593	pgrep		\
594	picl            \
595	pools		\
596	power		\
597	pr		\
598	praudit		\
599	print		\
600	printf		\
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	sed		\
625	sed_xpg4	\
626	sgs		\
627	sh		\
628	sleep		\
629	sort		\
630	split		\
631	ssh		\
632	strings		\
633	su		\
634	sum		\
635	svc		\
636	swap		\
637	syseventadm	\
638	syseventd	\
639	tabs		\
640	tail		\
641	tar		\
642	tbl		\
643	tee		\
644	time		\
645	tnf		\
646	touch		\
647	tput		\
648	tr		\
649	tr_xpg4		\
650	troff		\
651	tty		\
652	ttymon		\
653	ul		\
654	uname		\
655	uniq		\
656	units		\
657	unlink		\
658	unpack		\
659	valtools	\
660	vgrind		\
661	vi		\
662	volmgt		\
663	w		\
664	wbem		\
665	wc		\
666	who		\
667	whodo		\
668	wracct		\
669	write		\
670	xargs		\
671	yppasswd	\
672	zdump		\
673	zfs		\
674	zic		\
675	zlogin		\
676	zoneadm		\
677	zoneadmd	\
678	zonecfg		\
679	zonename	\
680	zpool
681
682sparc_MSGSUBDIRS=	\
683	fruadm		\
684	prtfru		\
685	stmsboot	\
686	wrsmconf	\
687	wrsmstat
688
689#
690# commands that use dcgettext for localized time, LC_TIME
691#
692DCSUBDIRS=		\
693	cal		\
694	cfgadm		\
695	diff		\
696	ls		\
697	pax		\
698	pr		\
699	tar		\
700	w		\
701	who		\
702	whodo		\
703	write
704
705#
706# commands that belong only to the basic security module
707#
708BSMSUBDIRS=		\
709	allocate	\
710	amt		\
711	audit		\
712	audit_warn	\
713	auditconfig	\
714	auditd		\
715	auditreduce	\
716	auditstat	\
717	dminfo		\
718	praudit		\
719	bsmconv		\
720	bsmrecord	\
721	bsmunconv
722
723#
724# commands not owned by the systems group
725#
726BWOSDIRS=
727
728#
729# Commands providing manifests must offer a check target.  A recursive check
730# target across all commands directories is not currently provided.
731#
732MANIFEST_TOPDIRS=			\
733	auditd				\
734	bnu				\
735	consadm				\
736	coreadm				\
737	cron				\
738	cvcd				\
739	dispadmin			\
740	dumpadm				\
741	eeprom				\
742	fm				\
743	intrd				\
744	ipf				\
745	keyserv				\
746	ldapcachemgr			\
747	nscd				\
748	power				\
749	rexd				\
750	rpcbind				\
751	rpcsvc				\
752	saf				\
753	sf880drd			\
754	smserverd			\
755	syseventd			\
756	syslogd				\
757	utmpd				\
758	ypcmd				\
759	zoneadmd
760
761MANIFEST_SUBDIRS=			\
762	cmd-crypto/scripts		\
763	cmd-inet/usr.lib/in.chargend	\
764	cmd-inet/usr.lib/in.daytimed	\
765	cmd-inet/usr.lib/in.dhcpd	\
766	cmd-inet/usr.lib/in.discardd	\
767	cmd-inet/usr.lib/in.echod	\
768	cmd-inet/usr.lib/in.timed	\
769	cmd-inet/usr.lib/inetd		\
770	cmd-inet/usr.lib/slpd		\
771	cmd-inet/usr.sbin		\
772	cmd-inet/usr.sbin/in.ftpd	\
773	cmd-inet/usr.sbin/in.talkd	\
774	dcs/sparc/sun4u			\
775	fs.d/autofs			\
776	fs.d/cachefs			\
777	fs.d/nfs/svc			\
778	gss/gssd			\
779	krb5/kadmin/server		\
780	krb5/krb5kdc			\
781	krb5/kwarn			\
782	krb5/slave			\
783	lp/cmd/lpsched			\
784	lvm/rpc.metad			\
785	lvm/rpc.metamedd		\
786	lvm/rpc.metamhd			\
787	lvm/md_monitord			\
788	lvm/metassist/sysfiles		\
789	lvm/util			\
790	picl/picld			\
791	print/gateway			\
792	print/lp			\
793	rcap/rcapd			\
794	rpcsvc/rpc.bootparamd		\
795	sendmail/lib			\
796	smartcard/daemon		\
797	ssh/etc				\
798	svc/milestone			\
799	ypcmd/yppasswd			\
800	ypcmd/ypupdated			\
801	xntpd/xntpd
802
803all :=		TARGET = all
804install :=	TARGET = install
805clean :=	TARGET = clean
806clobber :=	TARGET = clobber
807lint :=		TARGET = lint
808check :=	TARGET = check
809_msg :=		TARGET = _msg
810_dc :=		TARGET = _dc
811
812.KEEP_STATE:
813
814SUBDIRS = $(COMMON_SUBDIRS) $($(MACH)_SUBDIRS)
815
816.PARALLEL:	$(BWOSDIRS) $(SUBDIRS) $(MSGSUBDIRS) $(BSMSUBDIRS) \
817		$(MANIFEST_SUBDIRS)
818
819all install clean clobber lint: $(FIRST_SUBDIRS) .WAIT $(SUBDIRS) $(BSMSUBDIRS)
820
821check: svccfg_check .WAIT $(MANIFEST_TOPDIRS) $(MANIFEST_SUBDIRS)
822
823svccfg_check:
824	@$(ECHO) "building requirements for svccfg check ..."; \
825	(cd $(SRC)/cmd/svc/svccfg && pwd && $(MAKE) $(MFLAGS) native)
826
827#
828# The .WAIT directive works around an apparent bug in parallel make.
829# Evidently make was getting the target _msg vs. _dc confused under
830# some level of parallelization, causing some of the _dc objects
831# not to be built.
832#
833_msg: $(MSGSUBDIRS) $($(MACH)_MSGSUBDIRS) .WAIT _dc
834
835_dc: $(DCSUBDIRS)
836
837$(FIRST_SUBDIRS) $(BWOSDIRS) $(SUBDIRS) $(BSMSUBDIRS) $(MANIFEST_SUBDIRS): FRC
838	@if [ -f $@/Makefile  ]; then \
839		cd $@; pwd; $(MAKE) $(TARGET); \
840	else \
841		true; \
842	fi
843
844FRC:
845