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