xref: /illumos-gate/usr/src/cmd/Makefile (revision 698f4ab6008be205f4362675967638572eef4f21)
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) 2019, Joyent, Inc.
25# Copyright (c) 2012, 2015 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 2018 Nexenta Systems, Inc.
30# Copyright 2018 Gary Mills
31# Copyright 2019 Peter Tribble
32#
33
34include ../Makefile.master
35
36#
37#	Note that the commands 'lp', and 'perl' are first in
38#	the list, violating alphabetical order.  This is because they are very
39#	long-running and should be given the most wall-clock time for a
40#	parallel build.
41#
42#	Commands in the FIRST_SUBDIRS list are built before starting the build
43#	of other commands.  Currently this includes only 'isaexec' and
44#	'platexec'.  This is necessary because $(ROOT)/usr/lib/isaexec or
45#	$(ROOT)/usr/lib/platexec must exist when some other commands are built
46#	because their 'make install' creates a hard link to one of them.
47#
48#	Commands are listed one per line so that TeamWare can auto-merge most
49#	changes.
50#
51
52FIRST_SUBDIRS=		\
53	isaexec		\
54	platexec
55
56COMMON_SUBDIRS=		\
57	allocate	\
58	availdevs	\
59	lp		\
60	perl		\
61	Adm		\
62	abi		\
63	adbgen		\
64	acct		\
65	acctadm		\
66	arch		\
67	asa		\
68	ast		\
69	audio		\
70	auths		\
71	autopush	\
72	awk		\
73	awk_xpg4	\
74	backup		\
75	banner		\
76	bart		\
77	basename	\
78	bc		\
79	bdiff		\
80	beadm		\
81	bnu		\
82	boot		\
83	busstat		\
84	cal		\
85	captoinfo	\
86	cat		\
87	cdrw		\
88	cfgadm		\
89	checkeq		\
90	checknr		\
91	chgrp		\
92	chmod		\
93	chown		\
94	chroot		\
95	clear		\
96	clinfo		\
97	cmd-crypto	\
98	cmd-inet	\
99	col		\
100	compress	\
101	connstat	\
102	consadm		\
103	coreadm		\
104	cpio		\
105	cpc		\
106	cron		\
107	crypt		\
108	csh		\
109	csplit		\
110	ctfconvert	\
111	ctfdiff		\
112	ctfdump		\
113	ctfmerge	\
114	ctrun		\
115	ctstat		\
116	ctwatch		\
117	datadm		\
118	date		\
119	dc		\
120	dd		\
121	deroff		\
122	devfsadm	\
123	syseventd	\
124	devctl		\
125	devinfo		\
126	devmgmt		\
127	devprop		\
128	dfs.cmds	\
129	diff		\
130	diff3		\
131	diffmk		\
132	dircmp		\
133	dirname		\
134	dis		\
135	diskinfo	\
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	eject		\
151	emul64ioctl	\
152	enhance		\
153	env		\
154	eqn		\
155	etdump		\
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	file		\
169	find		\
170	flowadm		\
171	flowstat	\
172	fm		\
173	fmt		\
174	fmthard		\
175	fmtmsg		\
176	fold		\
177	format		\
178	fs.d		\
179	fstyp		\
180	fuser		\
181	fwflash		\
182	gcore		\
183	gencat		\
184	geniconvtbl	\
185	genmsg		\
186	getconf		\
187	getdevpolicy	\
188	getent		\
189	getfacl		\
190	getmajor	\
191	getopt		\
192	gettext		\
193	gettxt		\
194	grep		\
195	groups		\
196	growfs		\
197	grpck		\
198	gss		\
199	hal		\
200	halt		\
201	head		\
202	hostid		\
203	hostname	\
204	hotplug		\
205	hotplugd	\
206	ibd_upgrade	\
207	iconv		\
208	id		\
209	idmap		\
210	infocmp		\
211	init		\
212	initpkg		\
213	install.d	\
214	intrd		\
215	intrstat	\
216	ipcrm		\
217	ipcs		\
218	ipdadm		\
219	ipf		\
220	isainfo		\
221	isalist		\
222	itutools	\
223	iscsiadm	\
224	iscsid		\
225	iscsitsvc	\
226	isns		\
227	itadm		\
228	kbd		\
229	keyserv		\
230	killall		\
231	krb5		\
232	ksh		\
233	kvmstat		\
234	last		\
235	lastcomm	\
236	latencytop	\
237	ldap		\
238	ldapcachemgr	\
239	lgrpinfo	\
240	line		\
241	link		\
242	dlmgmtd		\
243	listen		\
244	loadkeys	\
245	locale		\
246	localedef	\
247	lockstat	\
248	locator		\
249	lofiadm		\
250	logadm		\
251	logger		\
252	login		\
253	logins		\
254	look		\
255	ls		\
256	luxadm		\
257	mach		\
258	mail		\
259	mailwrapper	\
260	mailx		\
261	make		\
262	makekey		\
263	man		\
264	mandoc		\
265	mdb		\
266	mesg		\
267	mkdir		\
268	mkfifo		\
269	mkfile		\
270	mkmsgs		\
271	mknod		\
272	mkpwdict	\
273	mktemp		\
274	modload		\
275	more		\
276	mpathadm	\
277	msgfmt		\
278	msgid		\
279	mt		\
280	mv		\
281	mvdir		\
282	ndmpadm		\
283	ndmpd		\
284	ndmpstat	\
285	netadm		\
286	netfiles	\
287	newform		\
288	newgrp		\
289	news		\
290	newtask		\
291	nice		\
292	nl		\
293	nlsadmin	\
294	nohup		\
295	nsadmin		\
296	nscd		\
297	oamuser		\
298	oawk		\
299	od		\
300	pack		\
301	pagesize	\
302	passmgmt	\
303	passwd		\
304	pathchk		\
305	pbind		\
306	pcidr		\
307	pcieb		\
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	rm		\
353	rmdir		\
354	rmformat	\
355	rmmount		\
356	rmt		\
357	rmvolmgr	\
358	roles		\
359	rpcbind		\
360	rpcgen		\
361	rpcinfo		\
362	rpcsvc		\
363	runat		\
364	sa		\
365	saf		\
366	sasinfo		\
367	savecore	\
368	sbdadm		\
369	script		\
370	scsi		\
371	sdiff		\
372	sdpadm		\
373	sed		\
374	sendmail	\
375	setfacl		\
376	setmnt		\
377	setpgrp		\
378	setuname	\
379	sgs		\
380	sh		\
381	shcomp		\
382	smbios		\
383	smbsrv		\
384	smserverd	\
385	soelim		\
386	sort		\
387	spell		\
388	split		\
389	sqlite		\
390	srchtxt		\
391	srptadm		\
392	srptsvc		\
393	ssh		\
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	th_tools	\
418	tic		\
419	time		\
420	tip		\
421	tnf		\
422	touch		\
423	tput		\
424	tr		\
425	trapstat	\
426	troff		\
427	true		\
428	truss		\
429	tsol		\
430	tty		\
431	ttymon		\
432	tzreload	\
433	uadmin		\
434	ul		\
435	uname		\
436	units		\
437	unlink		\
438	unpack		\
439	userattr	\
440	users		\
441	utmp_update	\
442	utmpd		\
443	uuidgen		\
444	valtools	\
445	vgrind		\
446	vi		\
447	volcheck	\
448	volrmmount	\
449	vrrpadm		\
450	vscan		\
451	vt		\
452	vtfontcvt	\
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	zfs		\
468	zhack		\
469	zic		\
470	zinject		\
471	zlogin		\
472	zoneadm		\
473	zoneadmd	\
474	zonecfg		\
475	zonename	\
476	zpool		\
477	zlook		\
478	zonestat	\
479	zstreamdump	\
480	ztest
481
482i386_SUBDIRS=		\
483	acpi		\
484	acpihpd		\
485	addbadsec	\
486	ahciem		\
487	biosdev		\
488	cxgbetool	\
489	diskscan	\
490	nvmeadm		\
491	rdmsr		\
492	rtc		\
493	ucodeadm	\
494	xhci		\
495	xvm
496
497sparc_SUBDIRS=		\
498	dcs		\
499	device_remap	\
500	drd		\
501	fruadm		\
502	ldmad		\
503	oplhpd		\
504	prtdscp		\
505	prtfru		\
506	scadm		\
507	sckmd		\
508	sf880drd	\
509	virtinfo	\
510	vntsd
511
512#
513# Commands that are messaged.  Note that 'lp' comes first
514# (see previous comment about 'lp'.)
515#
516MSGSUBDIRS=		\
517	lp		\
518	abi		\
519	acctadm		\
520	allocate	\
521	asa		\
522	audio		\
523	audit		\
524	auditconfig	\
525	auditd		\
526	auditrecord	\
527	auditset	\
528	auths		\
529	autopush	\
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	connstat	\
553	consadm		\
554	coreadm		\
555	cpio		\
556	cpc		\
557	cron		\
558	csh		\
559	csplit		\
560	ctrun		\
561	ctstat		\
562	ctwatch		\
563	datadm		\
564	date		\
565	dc		\
566	dcs		\
567	dd		\
568	deroff		\
569	devfsadm	\
570	dfs.cmds	\
571	diff		\
572	diffmk		\
573	dladm		\
574	dlstat		\
575	du		\
576	dumpcs		\
577	ed		\
578	eject		\
579	env		\
580	eqn		\
581	expand		\
582	expr		\
583	fcinfo		\
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	grpck		\
601	gss		\
602	halt		\
603	head		\
604	hostname	\
605	hotplug		\
606	iconv		\
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	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	rdmsr		\
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
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