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