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