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