xref: /titanic_52/usr/src/cmd/Makefile (revision 4a5d661a82b942b6538acd26209d959ce98b593a)
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	ssh		\
395	stat		\
396	stmfadm		\
397	stmfproxy	\
398	stmfsvc		\
399	stmsboot	\
400	streams		\
401	strings		\
402	su		\
403	sulogin		\
404	sunpc		\
405	svc		\
406	svr4pkg		\
407	swap		\
408	sync		\
409	sysdef		\
410	syseventadm	\
411	syslogd		\
412	tabs		\
413	tail		\
414	tar		\
415	tbl		\
416	tcopy		\
417	tcpd		\
418	terminfo	\
419	th_tools	\
420	tic		\
421	time		\
422	tip		\
423	tnf		\
424	touch		\
425	tput		\
426	tr		\
427	trapstat	\
428	troff		\
429	true		\
430	truss		\
431	tsol		\
432	tty		\
433	ttymon		\
434	tzreload	\
435	uadmin		\
436	ul		\
437	uname		\
438	units		\
439	unlink		\
440	unpack		\
441	userattr	\
442	users		\
443	utmp_update	\
444	utmpd		\
445	uuidgen		\
446	valtools	\
447	vgrind		\
448	vi		\
449	volcheck	\
450	volrmmount	\
451	vrrpadm		\
452	vscan		\
453	vt		\
454	w		\
455	wall		\
456	which		\
457	who		\
458	whodo		\
459	wracct		\
460	write		\
461	xargs		\
462	xstr		\
463	yes		\
464	ypcmd		\
465	yppasswd	\
466	zdb		\
467	zdump		\
468	zevadm		\
469	zfs		\
470	zhack		\
471	zic		\
472	zinject		\
473	zlogin		\
474	zoneadm		\
475	zoneadmd	\
476	zonecfg		\
477	zonename	\
478	zpool		\
479	zlook		\
480	zonestat	\
481	zstreamdump	\
482	ztest
483
484i386_SUBDIRS=		\
485	acpi		\
486	acpihpd		\
487	addbadsec	\
488	biosdev		\
489	diskscan	\
490	nvmeadm		\
491	rtc		\
492	ucodeadm
493
494sparc_SUBDIRS=		\
495	cvcd		\
496	dcs		\
497	device_remap	\
498	drd		\
499	fruadm		\
500	ldmad		\
501	oplhpd		\
502	prtdscp		\
503	prtfru		\
504	scadm		\
505	sckmd		\
506	sf880drd	\
507	virtinfo	\
508	vntsd
509
510#
511# Commands that are messaged.  Note that 'lp' comes first
512# (see previous comment about 'lp'.)
513#
514MSGSUBDIRS=		\
515	lp		\
516	abi		\
517	acctadm		\
518	allocate	\
519	arcflush	\
520	asa		\
521	audio		\
522	audit		\
523	auditconfig	\
524	auditd		\
525	auditrecord	\
526	auditset	\
527	auths		\
528	autopush	\
529	avs		\
530	awk		\
531	awk_xpg4	\
532	backup		\
533	banner		\
534	bart		\
535	basename	\
536	beadm		\
537	bnu		\
538	busstat		\
539	cal		\
540	cat		\
541	cdrw		\
542	cfgadm		\
543	checkeq		\
544	checknr		\
545	chgrp		\
546	chmod		\
547	chown		\
548	cmd-crypto	\
549	cmd-inet	\
550	col		\
551	compress	\
552	consadm		\
553	coreadm		\
554	cpio		\
555	cpc		\
556	cron		\
557	csh		\
558	csplit		\
559	ctrun		\
560	ctstat		\
561	ctwatch		\
562	datadm		\
563	date		\
564	dc		\
565	dcs		\
566	dd		\
567	deroff		\
568	devfsadm	\
569	dfs.cmds	\
570	diff		\
571	diffmk		\
572	dladm		\
573	dlstat		\
574	du		\
575	dumpcs		\
576	ed		\
577	eject		\
578	env		\
579	eqn		\
580	expand		\
581	expr		\
582	fcinfo		\
583	fgrep		\
584	file		\
585	filesync	\
586	find		\
587	flowadm		\
588	flowstat	\
589	fm		\
590	fold		\
591	fs.d		\
592	fwflash		\
593	geniconvtbl	\
594	genmsg		\
595	getconf		\
596	getent		\
597	gettext		\
598	gettxt		\
599	grep		\
600	grep_xpg4	\
601	grpck		\
602	gss		\
603	halt		\
604	head		\
605	hostname	\
606	hotplug		\
607	id		\
608	idmap		\
609	isaexec		\
610	iscsiadm	\
611	iscsid		\
612	isns		\
613	itadm		\
614	kbd		\
615	krb5		\
616	ksh		\
617	last		\
618	ldap		\
619	ldapcachemgr	\
620	lgrpinfo	\
621	locale		\
622	lofiadm		\
623	logadm		\
624	logger		\
625	logins		\
626	ls		\
627	luxadm		\
628	mailx		\
629	make		\
630	man		\
631	mesg		\
632	mkdir		\
633	mkpwdict	\
634	mktemp		\
635	more		\
636	mpathadm	\
637	msgfmt		\
638	mv		\
639	ndmpadm		\
640	ndmpstat	\
641	newgrp		\
642	newtask		\
643	nice		\
644	nohup		\
645	oawk		\
646	pack		\
647	passwd		\
648	passmgmt	\
649	pathchk		\
650	pfexec		\
651	pg		\
652	pgrep		\
653	picl            \
654	pools		\
655	power		\
656	pr		\
657	praudit		\
658	print		\
659	profiles	\
660	projadd		\
661	projects	\
662	prstat		\
663	prtdiag		\
664	ps		\
665	psrinfo		\
666	ptools		\
667	pwconv		\
668	pwd		\
669	pyzfs		\
670	raidctl		\
671	ramdiskadm	\
672	rcap		\
673	rcm_daemon	\
674	refer		\
675	regcmp		\
676	renice		\
677	roles		\
678	rm		\
679	rmdir		\
680	rmformat	\
681	rmmount		\
682	rmvolmgr	\
683	sasinfo		\
684	sbdadm		\
685	scadm		\
686	script		\
687	scsi		\
688	sdiff		\
689	sdpadm		\
690	sgs		\
691	sh		\
692	shcomp		\
693	smbsrv		\
694	sort		\
695	split		\
696	srptadm		\
697	stat		\
698	stmfadm		\
699	stmsboot	\
700	strings		\
701	su		\
702	svc		\
703	svr4pkg		\
704	swap		\
705	syseventadm	\
706	syseventd	\
707	tabs		\
708	tar		\
709	tbl		\
710	time		\
711	tnf		\
712	touch		\
713	tput		\
714	troff		\
715	tsol		\
716	tty		\
717	ttymon		\
718	tzreload	\
719	ul		\
720	uname		\
721	units		\
722	unlink		\
723	unpack		\
724	userattr	\
725	valtools	\
726	vgrind		\
727	vi		\
728	volcheck	\
729	volrmmount	\
730	vrrpadm		\
731	vscan		\
732	w		\
733	who		\
734	whodo		\
735	wracct		\
736	write		\
737	xargs		\
738	yppasswd	\
739	zdump		\
740	zevadm		\
741	zfs		\
742	zic		\
743	zlogin		\
744	zoneadm		\
745	zoneadmd	\
746	zonecfg		\
747	zonename	\
748	zpool		\
749	zonestat
750
751sparc_MSGSUBDIRS=	\
752	fruadm		\
753	prtdscp		\
754	prtfru		\
755	virtinfo	\
756	vntsd
757
758i386_MSGSUBDIRS=	\
759	ucodeadm
760
761#
762# commands that use dcgettext for localized time, LC_TIME
763#
764DCSUBDIRS=		\
765	cal		\
766	cfgadm		\
767	diff		\
768	ls		\
769	pr		\
770	ps		\
771	tar		\
772	w		\
773	who		\
774	whodo		\
775	write
776
777#
778# commands that belong only to audit.
779#
780AUDITSUBDIRS=		\
781	amt		\
782	audit		\
783	audit_warn	\
784	auditconfig	\
785	auditd		\
786	auditrecord	\
787	auditreduce	\
788	auditset	\
789	auditstat	\
790	praudit
791
792#
793# commands not owned by the systems group
794#
795BWOSDIRS=
796
797
798all :=		TARGET = all
799install :=	TARGET = install
800clean :=	TARGET = clean
801clobber :=	TARGET = clobber
802lint :=		TARGET = lint
803_msg :=		TARGET = _msg
804_dc :=		TARGET = _dc
805
806.KEEP_STATE:
807
808SUBDIRS = $(COMMON_SUBDIRS) $($(MACH)_SUBDIRS)
809
810.PARALLEL:	$(BWOSDIRS) $(SUBDIRS) $(MSGSUBDIRS) $(AUDITSUBDIRS)
811
812all install clean clobber lint: $(FIRST_SUBDIRS) .WAIT $(SUBDIRS) \
813	$(AUDITSUBDIRS)
814
815#
816# Manifests cannot be checked in parallel, because we are using
817# the global repository that is in $(SRC)/cmd/svc/seed/global.db.
818# For this reason, to avoid .PARALLEL and .NO_PARALLEL conflicts,
819# we spawn off a sub-make to perform the non-parallel 'make check'
820#
821check:
822	$(MAKE) -f Makefile.check check
823
824#
825# The .WAIT directive works around an apparent bug in parallel make.
826# Evidently make was getting the target _msg vs. _dc confused under
827# some level of parallelization, causing some of the _dc objects
828# not to be built.
829#
830_msg: $(MSGSUBDIRS) $($(MACH)_MSGSUBDIRS) .WAIT _dc
831
832_dc: $(DCSUBDIRS)
833
834#
835# Dependencies
836#
837fs.d: fstyp
838ksh:	shcomp isaexec
839mdb:	terminfo
840print:	lp
841fmt:	mailx
842
843$(FIRST_SUBDIRS) $(BWOSDIRS) $(SUBDIRS) $(AUDITSUBDIRS): FRC
844	@if [ -f $@/Makefile  ]; then \
845		cd $@; pwd; $(MAKE) $(TARGET); \
846	else \
847		true; \
848	fi
849
850FRC:
851