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