xref: /titanic_51/usr/src/cmd/Makefile (revision cfcf4e132fde12134a9659489c61370f35a6ad08)
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# Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved.
24# Copyright (c) 2017, Joyent, Inc.
25# Copyright (c) 2012 by Delphix. All rights reserved.
26# Copyright (c) 2013 DEY Storage Systems, Inc. All rights reserved.
27# Copyright 2014 Garrett D'Amore <garrett@damore.org>
28# Copyright 2016 Toomas Soome <tsoome@me.com>
29# Copyright 2016 Nexenta Systems, Inc.
30#
31
32include ../Makefile.master
33
34#
35#	Note that the commands 'lp', and 'perl' are first in
36#	the list, violating alphabetical order.  This is because they are very
37#	long-running and should be given the most wall-clock time for a
38#	parallel build.
39#
40#	Commands in the FIRST_SUBDIRS list are built before starting the build
41#	of other commands.  Currently this includes only 'isaexec' and
42#	'platexec'.  This is necessary because $(ROOT)/usr/lib/isaexec or
43#	$(ROOT)/usr/lib/platexec must exist when some other commands are built
44#	because their 'make install' creates a hard link to one of them.
45#
46#	Commands are listed one per line so that TeamWare can auto-merge most
47#	changes.
48#
49
50FIRST_SUBDIRS=		\
51	isaexec		\
52	platexec
53
54COMMON_SUBDIRS=		\
55	allocate	\
56	availdevs	\
57	lp		\
58	perl		\
59	Adm		\
60	abi		\
61	adbgen		\
62	acct		\
63	acctadm		\
64	arcwatch	\
65	arch		\
66	arcflush	\
67	asa		\
68	ast		\
69	audio		\
70	auths		\
71	autopush	\
72	avs		\
73	awk		\
74	awk_xpg4	\
75	backup		\
76	banner		\
77	bart		\
78	basename	\
79	bc		\
80	bdiff		\
81	beadm		\
82	bnu		\
83	boot		\
84	busstat		\
85	cal		\
86	calendar	\
87	captoinfo	\
88	cat		\
89	cdrw		\
90	cfgadm		\
91	checkeq		\
92	checknr		\
93	chgrp		\
94	chmod		\
95	chown		\
96	chroot		\
97	clear		\
98	clinfo		\
99	cmd-crypto	\
100	cmd-inet	\
101	col		\
102	compress	\
103	consadm		\
104	coreadm		\
105	cpio		\
106	cpc		\
107	cron		\
108	crypt		\
109	csh		\
110	csplit		\
111	ctfconvert	\
112	ctfdiff		\
113	ctfdump		\
114	ctfmerge	\
115	ctrun		\
116	ctstat		\
117	ctwatch		\
118	datadm		\
119	date		\
120	dc		\
121	dd		\
122	deroff		\
123	devfsadm	\
124	syseventd	\
125	devctl		\
126	devinfo		\
127	devmgmt		\
128	devprop		\
129	dfs.cmds	\
130	diff		\
131	diff3		\
132	diffmk		\
133	dircmp		\
134	dirname		\
135	dis		\
136	diskmgtd	\
137	dispadmin	\
138	dladm		\
139	dlstat		\
140	dlutil		\
141	dmesg		\
142	dodatadm	\
143	dtrace		\
144	du		\
145	dumpadm		\
146	dumpcs		\
147	echo		\
148	ed		\
149	eeprom		\
150	egrep		\
151	eject		\
152	emul64ioctl	\
153	enhance		\
154	env		\
155	eqn		\
156	expand		\
157	expr		\
158	exstr		\
159	factor		\
160	false		\
161	fcinfo		\
162	fcoesvc		\
163	fdetach		\
164	fdformat	\
165	fdisk		\
166	ficl		\
167	filesync	\
168	fgrep		\
169	file		\
170	find		\
171	flowadm		\
172	flowstat	\
173	fm		\
174	fmt		\
175	fmthard		\
176	fmtmsg		\
177	fold		\
178	format		\
179	fs.d		\
180	fstyp		\
181	fuser		\
182	fwflash		\
183	gcore		\
184	gencat		\
185	geniconvtbl	\
186	genmsg		\
187	getconf		\
188	getdevpolicy	\
189	getent		\
190	getfacl		\
191	getmajor	\
192	getopt		\
193	gettext		\
194	gettxt		\
195	grep		\
196	grep_xpg4	\
197	groups		\
198	growfs		\
199	grpck		\
200	gss		\
201	hal		\
202	halt		\
203	head		\
204	hostid		\
205	hostname	\
206	hotplug		\
207	hotplugd	\
208	ibd_upgrade	\
209	id		\
210	idmap		\
211	infocmp		\
212	init		\
213	initpkg		\
214	install.d	\
215	intrd		\
216	intrstat	\
217	ipcrm		\
218	ipcs		\
219	ipdadm		\
220	ipf		\
221	isainfo		\
222	isalist		\
223	itutools	\
224	iscsiadm	\
225	iscsid		\
226	iscsitsvc	\
227	isns		\
228	itadm		\
229	kbd		\
230	keyserv		\
231	killall		\
232	krb5		\
233	ksh		\
234	kvmstat		\
235	last		\
236	lastcomm	\
237	latencytop	\
238	ldap		\
239	ldapcachemgr	\
240	lgrpinfo	\
241	line		\
242	link		\
243	dlmgmtd		\
244	listen		\
245	loadkeys	\
246	locale		\
247	localedef	\
248	lockstat	\
249	locator		\
250	lofiadm		\
251	logadm		\
252	logger		\
253	login		\
254	logins		\
255	look		\
256	ls		\
257	luxadm		\
258	mach		\
259	mail		\
260	mailwrapper	\
261	mailx		\
262	make		\
263	makekey		\
264	man		\
265	mandoc		\
266	mdb		\
267	mesg		\
268	mkdir		\
269	mkfifo		\
270	mkfile		\
271	mkmsgs		\
272	mknod		\
273	mkpwdict	\
274	mktemp		\
275	modload		\
276	more		\
277	mpathadm	\
278	msgfmt		\
279	msgid		\
280	mt		\
281	mv		\
282	mvdir		\
283	ndmpadm		\
284	ndmpd		\
285	ndmpstat	\
286	netadm		\
287	netfiles	\
288	newform		\
289	newgrp		\
290	news		\
291	newtask		\
292	nice		\
293	nl		\
294	nlsadmin	\
295	nohup		\
296	nsadmin		\
297	nscd		\
298	oamuser		\
299	oawk		\
300	od		\
301	pack		\
302	pagesize	\
303	passmgmt	\
304	passwd		\
305	pathchk		\
306	pbind		\
307	pcidr		\
308	pcitool		\
309	pfexec		\
310	pfexecd		\
311	pginfo		\
312	pgstat		\
313	pgrep		\
314	picl		\
315	plimit		\
316	policykit	\
317	pools		\
318	power		\
319	powertop	\
320	ppgsz		\
321	pg		\
322	plockstat	\
323	pr		\
324	prctl		\
325	print		\
326	printf		\
327	priocntl	\
328	profiles	\
329	projadd		\
330	projects	\
331	prstat		\
332	prtconf		\
333	prtdiag		\
334	prtvtoc		\
335	ps		\
336	psradm		\
337	psrinfo		\
338	psrset		\
339	ptools		\
340	pwck		\
341	pwconv		\
342	pwd		\
343	pyzfs		\
344	raidctl		\
345	ramdiskadm	\
346	rcap		\
347	rcm_daemon	\
348	rctladm		\
349	refer		\
350	regcmp		\
351	renice		\
352	rexd		\
353	rm		\
354	rmdir		\
355	rmformat	\
356	rmmount		\
357	rmt		\
358	rmvolmgr	\
359	roles		\
360	rpcbind		\
361	rpcgen		\
362	rpcinfo		\
363	rpcsvc		\
364	runat		\
365	sa		\
366	saf		\
367	sasinfo		\
368	savecore	\
369	sbdadm		\
370	script		\
371	scsi		\
372	sdiff		\
373	sdpadm		\
374	sed		\
375	sendmail	\
376	setfacl		\
377	setmnt		\
378	setpgrp		\
379	setuname	\
380	sgs		\
381	sh		\
382	shcomp		\
383	smbios		\
384	smbsrv		\
385	smserverd	\
386	soelim		\
387	sort		\
388	spell		\
389	split		\
390	sqlite		\
391	srchtxt		\
392	srptadm		\
393	srptsvc		\
394	stat		\
395	stmfadm		\
396	stmfproxy	\
397	stmfsvc		\
398	stmsboot	\
399	streams		\
400	strings		\
401	su		\
402	sulogin		\
403	sunpc		\
404	svc		\
405	svr4pkg		\
406	swap		\
407	sync		\
408	sysdef		\
409	syseventadm	\
410	syslogd		\
411	tabs		\
412	tail		\
413	tar		\
414	tbl		\
415	tcopy		\
416	tcpd		\
417	terminfo	\
418	th_tools	\
419	tic		\
420	time		\
421	tip		\
422	tnf		\
423	touch		\
424	tput		\
425	tr		\
426	trapstat	\
427	troff		\
428	true		\
429	truss		\
430	tsol		\
431	tty		\
432	ttymon		\
433	tzreload	\
434	uadmin		\
435	ul		\
436	uname		\
437	units		\
438	unlink		\
439	unpack		\
440	userattr	\
441	users		\
442	utmp_update	\
443	utmpd		\
444	uuidgen		\
445	valtools	\
446	vgrind		\
447	vi		\
448	volcheck	\
449	volrmmount	\
450	vrrpadm		\
451	vscan		\
452	vt		\
453	w		\
454	wall		\
455	which		\
456	who		\
457	whodo		\
458	wracct		\
459	write		\
460	xargs		\
461	xstr		\
462	yes		\
463	ypcmd		\
464	yppasswd	\
465	zdb		\
466	zdump		\
467	zevadm		\
468	zfs		\
469	zhack		\
470	zic		\
471	zinject		\
472	zlogin		\
473	zoneadm		\
474	zoneadmd	\
475	zonecfg		\
476	zonename	\
477	zpool		\
478	zlook		\
479	zonestat	\
480	zstreamdump	\
481	ztest
482
483i386_SUBDIRS=		\
484	acpi		\
485	acpihpd		\
486	addbadsec	\
487	biosdev		\
488	diskscan	\
489	nvmeadm		\
490	rtc		\
491	ucodeadm
492
493sparc_SUBDIRS=		\
494	cvcd		\
495	dcs		\
496	device_remap	\
497	drd		\
498	fruadm		\
499	ldmad		\
500	oplhpd		\
501	prtdscp		\
502	prtfru		\
503	scadm		\
504	sckmd		\
505	sf880drd	\
506	virtinfo	\
507	vntsd
508
509#
510# Commands that are messaged.  Note that 'lp' comes first
511# (see previous comment about 'lp'.)
512#
513MSGSUBDIRS=		\
514	lp		\
515	abi		\
516	acctadm		\
517	allocate	\
518	arcflush	\
519	asa		\
520	audio		\
521	audit		\
522	auditconfig	\
523	auditd		\
524	auditrecord	\
525	auditset	\
526	auths		\
527	autopush	\
528	avs		\
529	awk		\
530	awk_xpg4	\
531	backup		\
532	banner		\
533	bart		\
534	basename	\
535	beadm		\
536	bnu		\
537	busstat		\
538	cal		\
539	cat		\
540	cdrw		\
541	cfgadm		\
542	checkeq		\
543	checknr		\
544	chgrp		\
545	chmod		\
546	chown		\
547	cmd-crypto	\
548	cmd-inet	\
549	col		\
550	compress	\
551	consadm		\
552	coreadm		\
553	cpio		\
554	cpc		\
555	cron		\
556	csh		\
557	csplit		\
558	ctrun		\
559	ctstat		\
560	ctwatch		\
561	datadm		\
562	date		\
563	dc		\
564	dcs		\
565	dd		\
566	deroff		\
567	devfsadm	\
568	dfs.cmds	\
569	diff		\
570	diffmk		\
571	dladm		\
572	dlstat		\
573	du		\
574	dumpcs		\
575	ed		\
576	eject		\
577	env		\
578	eqn		\
579	expand		\
580	expr		\
581	fcinfo		\
582	fgrep		\
583	file		\
584	filesync	\
585	find		\
586	flowadm		\
587	flowstat	\
588	fm		\
589	fold		\
590	fs.d		\
591	fwflash		\
592	geniconvtbl	\
593	genmsg		\
594	getconf		\
595	getent		\
596	gettext		\
597	gettxt		\
598	grep		\
599	grep_xpg4	\
600	grpck		\
601	gss		\
602	halt		\
603	head		\
604	hostname	\
605	hotplug		\
606	id		\
607	idmap		\
608	isaexec		\
609	iscsiadm	\
610	iscsid		\
611	isns		\
612	itadm		\
613	kbd		\
614	krb5		\
615	ksh		\
616	last		\
617	ldap		\
618	ldapcachemgr	\
619	lgrpinfo	\
620	locale		\
621	lofiadm		\
622	logadm		\
623	logger		\
624	logins		\
625	ls		\
626	luxadm		\
627	mailx		\
628	make		\
629	man		\
630	mesg		\
631	mkdir		\
632	mkpwdict	\
633	mktemp		\
634	more		\
635	mpathadm	\
636	msgfmt		\
637	mv		\
638	ndmpadm		\
639	ndmpstat	\
640	newgrp		\
641	newtask		\
642	nice		\
643	nohup		\
644	oawk		\
645	pack		\
646	passwd		\
647	passmgmt	\
648	pathchk		\
649	pfexec		\
650	pg		\
651	pgrep		\
652	picl            \
653	pools		\
654	power		\
655	pr		\
656	praudit		\
657	print		\
658	profiles	\
659	projadd		\
660	projects	\
661	prstat		\
662	prtdiag		\
663	ps		\
664	psrinfo		\
665	ptools		\
666	pwconv		\
667	pwd		\
668	pyzfs		\
669	raidctl		\
670	ramdiskadm	\
671	rcap		\
672	rcm_daemon	\
673	refer		\
674	regcmp		\
675	renice		\
676	roles		\
677	rm		\
678	rmdir		\
679	rmformat	\
680	rmmount		\
681	rmvolmgr	\
682	sasinfo		\
683	sbdadm		\
684	scadm		\
685	script		\
686	scsi		\
687	sdiff		\
688	sdpadm		\
689	sgs		\
690	sh		\
691	shcomp		\
692	smbsrv		\
693	sort		\
694	split		\
695	srptadm		\
696	stat		\
697	stmfadm		\
698	stmsboot	\
699	strings		\
700	su		\
701	svc		\
702	svr4pkg		\
703	swap		\
704	syseventadm	\
705	syseventd	\
706	tabs		\
707	tar		\
708	tbl		\
709	time		\
710	tnf		\
711	touch		\
712	tput		\
713	troff		\
714	tsol		\
715	tty		\
716	ttymon		\
717	tzreload	\
718	ul		\
719	uname		\
720	units		\
721	unlink		\
722	unpack		\
723	userattr	\
724	valtools	\
725	vgrind		\
726	vi		\
727	volcheck	\
728	volrmmount	\
729	vrrpadm		\
730	vscan		\
731	w		\
732	who		\
733	whodo		\
734	wracct		\
735	write		\
736	xargs		\
737	yppasswd	\
738	zdump		\
739	zevadm		\
740	zfs		\
741	zic		\
742	zlogin		\
743	zoneadm		\
744	zoneadmd	\
745	zonecfg		\
746	zonename	\
747	zpool		\
748	zonestat
749
750sparc_MSGSUBDIRS=	\
751	fruadm		\
752	prtdscp		\
753	prtfru		\
754	virtinfo	\
755	vntsd
756
757i386_MSGSUBDIRS=	\
758	ucodeadm
759
760#
761# commands that use dcgettext for localized time, LC_TIME
762#
763DCSUBDIRS=		\
764	cal		\
765	cfgadm		\
766	diff		\
767	ls		\
768	pr		\
769	ps		\
770	tar		\
771	w		\
772	who		\
773	whodo		\
774	write
775
776#
777# commands that belong only to audit.
778#
779AUDITSUBDIRS=		\
780	amt		\
781	audit		\
782	audit_warn	\
783	auditconfig	\
784	auditd		\
785	auditrecord	\
786	auditreduce	\
787	auditset	\
788	auditstat	\
789	praudit
790
791#
792# commands not owned by the systems group
793#
794BWOSDIRS=
795
796
797all :=		TARGET = all
798install :=	TARGET = install
799clean :=	TARGET = clean
800clobber :=	TARGET = clobber
801lint :=		TARGET = lint
802_msg :=		TARGET = _msg
803_dc :=		TARGET = _dc
804
805.KEEP_STATE:
806
807SUBDIRS = $(COMMON_SUBDIRS) $($(MACH)_SUBDIRS)
808
809.PARALLEL:	$(BWOSDIRS) $(SUBDIRS) $(MSGSUBDIRS) $(AUDITSUBDIRS)
810
811all install clean clobber lint: $(FIRST_SUBDIRS) .WAIT $(SUBDIRS) \
812	$(AUDITSUBDIRS)
813
814#
815# Manifests cannot be checked in parallel, because we are using
816# the global repository that is in $(SRC)/cmd/svc/seed/global.db.
817# For this reason, to avoid .PARALLEL and .NO_PARALLEL conflicts,
818# we spawn off a sub-make to perform the non-parallel 'make check'
819#
820check:
821	$(MAKE) -f Makefile.check check
822
823#
824# The .WAIT directive works around an apparent bug in parallel make.
825# Evidently make was getting the target _msg vs. _dc confused under
826# some level of parallelization, causing some of the _dc objects
827# not to be built.
828#
829_msg: $(MSGSUBDIRS) $($(MACH)_MSGSUBDIRS) .WAIT _dc
830
831_dc: $(DCSUBDIRS)
832
833#
834# Dependencies
835#
836fs.d: fstyp
837ksh:	shcomp isaexec
838mdb:	terminfo
839print:	lp
840fmt:	mailx
841
842$(FIRST_SUBDIRS) $(BWOSDIRS) $(SUBDIRS) $(AUDITSUBDIRS): FRC
843	@if [ -f $@/Makefile  ]; then \
844		cd $@; pwd; $(MAKE) $(TARGET); \
845	else \
846		true; \
847	fi
848
849FRC:
850