xref: /illumos-gate/usr/src/cmd/Makefile (revision d2f7972d81337947df76c36b8c2a5f290829fa7a)
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	logname		\
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	pcieb		\
309	pcitool		\
310	pfexec		\
311	pfexecd		\
312	pginfo		\
313	pgstat		\
314	pgrep		\
315	picl		\
316	plimit		\
317	policykit	\
318	pools		\
319	power		\
320	powertop	\
321	ppgsz		\
322	pg		\
323	plockstat	\
324	pr		\
325	prctl		\
326	print		\
327	printf		\
328	priocntl	\
329	profiles	\
330	projadd		\
331	projects	\
332	prstat		\
333	prtconf		\
334	prtdiag		\
335	prtvtoc		\
336	ps		\
337	psradm		\
338	psrinfo		\
339	psrset		\
340	ptools		\
341	pwck		\
342	pwconv		\
343	pwd		\
344	pyzfs		\
345	raidctl		\
346	ramdiskadm	\
347	rcap		\
348	rcm_daemon	\
349	rctladm		\
350	refer		\
351	regcmp		\
352	renice		\
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	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	vtfontcvt	\
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	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	ahciem		\
488	biosdev		\
489	cxgbetool	\
490	diskscan	\
491	nvmeadm		\
492	rdmsr		\
493	rtc		\
494	ucodeadm	\
495	xhci		\
496	xvm
497
498sparc_SUBDIRS=		\
499	dcs		\
500	device_remap	\
501	drd		\
502	fruadm		\
503	ldmad		\
504	oplhpd		\
505	prtdscp		\
506	prtfru		\
507	scadm		\
508	sckmd		\
509	sf880drd	\
510	virtinfo	\
511	vntsd
512
513#
514# Commands that are messaged.  Note that 'lp' comes first
515# (see previous comment about 'lp'.)
516#
517MSGSUBDIRS=		\
518	lp		\
519	abi		\
520	acctadm		\
521	allocate	\
522	asa		\
523	audio		\
524	audit		\
525	auditconfig	\
526	auditd		\
527	auditrecord	\
528	auditset	\
529	auths		\
530	autopush	\
531	awk		\
532	awk_xpg4	\
533	backup		\
534	banner		\
535	bart		\
536	basename	\
537	beadm		\
538	bnu		\
539	busstat		\
540	cal		\
541	cat		\
542	cdrw		\
543	cfgadm		\
544	checkeq		\
545	checknr		\
546	chgrp		\
547	chmod		\
548	chown		\
549	cmd-crypto	\
550	cmd-inet	\
551	col		\
552	compress	\
553	connstat	\
554	consadm		\
555	coreadm		\
556	cpio		\
557	cpc		\
558	cron		\
559	csh		\
560	csplit		\
561	ctrun		\
562	ctstat		\
563	ctwatch		\
564	datadm		\
565	date		\
566	dc		\
567	dcs		\
568	dd		\
569	deroff		\
570	devfsadm	\
571	dfs.cmds	\
572	diff		\
573	diffmk		\
574	dladm		\
575	dlstat		\
576	du		\
577	dumpcs		\
578	ed		\
579	eject		\
580	env		\
581	eqn		\
582	expand		\
583	expr		\
584	fcinfo		\
585	file		\
586	filesync	\
587	find		\
588	flowadm		\
589	flowstat	\
590	fm		\
591	fold		\
592	fs.d		\
593	fwflash		\
594	geniconvtbl	\
595	genmsg		\
596	getconf		\
597	getent		\
598	gettext		\
599	gettxt		\
600	grep		\
601	grpck		\
602	gss		\
603	halt		\
604	head		\
605	hostname	\
606	hotplug		\
607	iconv		\
608	id		\
609	idmap		\
610	isaexec		\
611	iscsiadm	\
612	iscsid		\
613	isns		\
614	itadm		\
615	kbd		\
616	krb5		\
617	ksh		\
618	last		\
619	ldap		\
620	ldapcachemgr	\
621	lgrpinfo	\
622	locale		\
623	lofiadm		\
624	logadm		\
625	logger		\
626	logins		\
627	ls		\
628	luxadm		\
629	mailx		\
630	make		\
631	man		\
632	mesg		\
633	mkdir		\
634	mkpwdict	\
635	mktemp		\
636	more		\
637	mpathadm	\
638	msgfmt		\
639	mv		\
640	ndmpadm		\
641	ndmpstat	\
642	newgrp		\
643	newtask		\
644	nice		\
645	nohup		\
646	oawk		\
647	pack		\
648	passwd		\
649	passmgmt	\
650	pathchk		\
651	pfexec		\
652	pg		\
653	pgrep		\
654	picl            \
655	pools		\
656	power		\
657	pr		\
658	praudit		\
659	print		\
660	profiles	\
661	projadd		\
662	projects	\
663	prstat		\
664	prtdiag		\
665	ps		\
666	psrinfo		\
667	ptools		\
668	pwconv		\
669	pwd		\
670	pyzfs		\
671	raidctl		\
672	ramdiskadm	\
673	rcap		\
674	rcm_daemon	\
675	refer		\
676	regcmp		\
677	renice		\
678	roles		\
679	rm		\
680	rmdir		\
681	rmformat	\
682	rmmount		\
683	rmvolmgr	\
684	sasinfo		\
685	sbdadm		\
686	scadm		\
687	script		\
688	scsi		\
689	sdiff		\
690	sdpadm		\
691	sgs		\
692	sh		\
693	shcomp		\
694	smbsrv		\
695	sort		\
696	split		\
697	srptadm		\
698	stat		\
699	stmfadm		\
700	stmsboot	\
701	strings		\
702	su		\
703	svc		\
704	svr4pkg		\
705	swap		\
706	syseventadm	\
707	syseventd	\
708	tabs		\
709	tar		\
710	tbl		\
711	time		\
712	tnf		\
713	touch		\
714	tput		\
715	troff		\
716	tsol		\
717	tty		\
718	ttymon		\
719	tzreload	\
720	ul		\
721	uname		\
722	units		\
723	unlink		\
724	unpack		\
725	userattr	\
726	valtools	\
727	vgrind		\
728	vi		\
729	volcheck	\
730	volrmmount	\
731	vrrpadm		\
732	vscan		\
733	w		\
734	who		\
735	whodo		\
736	wracct		\
737	write		\
738	xargs		\
739	yppasswd	\
740	zdump		\
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	rdmsr		\
760	ucodeadm
761
762#
763# commands that use dcgettext for localized time, LC_TIME
764#
765DCSUBDIRS=		\
766	cal		\
767	cfgadm		\
768	diff		\
769	ls		\
770	pr		\
771	ps		\
772	tar		\
773	w		\
774	who		\
775	whodo		\
776	write
777
778#
779# commands that belong only to audit.
780#
781AUDITSUBDIRS=		\
782	amt		\
783	audit		\
784	audit_warn	\
785	auditconfig	\
786	auditd		\
787	auditrecord	\
788	auditreduce	\
789	auditset	\
790	auditstat	\
791	praudit
792
793#
794# commands not owned by the systems group
795#
796BWOSDIRS=
797
798
799all :=		TARGET = all
800install :=	TARGET = install
801clean :=	TARGET = clean
802clobber :=	TARGET = clobber
803lint :=		TARGET = lint
804_msg :=		TARGET = _msg
805_dc :=		TARGET = _dc
806
807.KEEP_STATE:
808
809SUBDIRS = $(COMMON_SUBDIRS) $($(MACH)_SUBDIRS)
810
811.PARALLEL:	$(BWOSDIRS) $(SUBDIRS) $(MSGSUBDIRS) $(AUDITSUBDIRS)
812
813all install clean clobber lint: $(FIRST_SUBDIRS) .WAIT $(SUBDIRS) \
814	$(AUDITSUBDIRS)
815
816#
817# Manifests cannot be checked in parallel, because we are using
818# the global repository that is in $(SRC)/cmd/svc/seed/global.db.
819# For this reason, to avoid .PARALLEL and .NO_PARALLEL conflicts,
820# we spawn off a sub-make to perform the non-parallel 'make check'
821#
822check:
823	$(MAKE) -f Makefile.check check
824
825#
826# The .WAIT directive works around an apparent bug in parallel make.
827# Evidently make was getting the target _msg vs. _dc confused under
828# some level of parallelization, causing some of the _dc objects
829# not to be built.
830#
831_msg: $(MSGSUBDIRS) $($(MACH)_MSGSUBDIRS) .WAIT _dc
832
833_dc: $(DCSUBDIRS)
834
835#
836# Dependencies
837#
838fs.d:	fstyp
839ksh:	shcomp isaexec
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