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