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