xref: /illumos-gate/usr/src/cmd/Makefile (revision f67950b21e185934ccabe311516f4dcbdb00ef79)
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	rtc		\
492	ucodeadm	\
493	xhci		\
494	xvm
495
496sparc_SUBDIRS=		\
497	dcs		\
498	device_remap	\
499	drd		\
500	fruadm		\
501	ldmad		\
502	oplhpd		\
503	prtdscp		\
504	prtfru		\
505	scadm		\
506	sckmd		\
507	sf880drd	\
508	virtinfo	\
509	vntsd
510
511#
512# Commands that are messaged.  Note that 'lp' comes first
513# (see previous comment about 'lp'.)
514#
515MSGSUBDIRS=		\
516	lp		\
517	abi		\
518	acctadm		\
519	allocate	\
520	asa		\
521	audio		\
522	audit		\
523	auditconfig	\
524	auditd		\
525	auditrecord	\
526	auditset	\
527	auths		\
528	autopush	\
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	connstat	\
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	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	grpck		\
600	gss		\
601	halt		\
602	head		\
603	hostname	\
604	hotplug		\
605	iconv		\
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	zfs		\
740	zic		\
741	zlogin		\
742	zoneadm		\
743	zoneadmd	\
744	zonecfg		\
745	zonename	\
746	zpool		\
747	zonestat
748
749sparc_MSGSUBDIRS=	\
750	fruadm		\
751	prtdscp		\
752	prtfru		\
753	virtinfo	\
754	vntsd
755
756i386_MSGSUBDIRS=	\
757	ucodeadm
758
759#
760# commands that use dcgettext for localized time, LC_TIME
761#
762DCSUBDIRS=		\
763	cal		\
764	cfgadm		\
765	diff		\
766	ls		\
767	pr		\
768	ps		\
769	tar		\
770	w		\
771	who		\
772	whodo		\
773	write
774
775#
776# commands that belong only to audit.
777#
778AUDITSUBDIRS=		\
779	amt		\
780	audit		\
781	audit_warn	\
782	auditconfig	\
783	auditd		\
784	auditrecord	\
785	auditreduce	\
786	auditset	\
787	auditstat	\
788	praudit
789
790#
791# commands not owned by the systems group
792#
793BWOSDIRS=
794
795
796all :=		TARGET = all
797install :=	TARGET = install
798clean :=	TARGET = clean
799clobber :=	TARGET = clobber
800lint :=		TARGET = lint
801_msg :=		TARGET = _msg
802_dc :=		TARGET = _dc
803
804.KEEP_STATE:
805
806SUBDIRS = $(COMMON_SUBDIRS) $($(MACH)_SUBDIRS)
807
808.PARALLEL:	$(BWOSDIRS) $(SUBDIRS) $(MSGSUBDIRS) $(AUDITSUBDIRS)
809
810all install clean clobber lint: $(FIRST_SUBDIRS) .WAIT $(SUBDIRS) \
811	$(AUDITSUBDIRS)
812
813#
814# Manifests cannot be checked in parallel, because we are using
815# the global repository that is in $(SRC)/cmd/svc/seed/global.db.
816# For this reason, to avoid .PARALLEL and .NO_PARALLEL conflicts,
817# we spawn off a sub-make to perform the non-parallel 'make check'
818#
819check:
820	$(MAKE) -f Makefile.check check
821
822#
823# The .WAIT directive works around an apparent bug in parallel make.
824# Evidently make was getting the target _msg vs. _dc confused under
825# some level of parallelization, causing some of the _dc objects
826# not to be built.
827#
828_msg: $(MSGSUBDIRS) $($(MACH)_MSGSUBDIRS) .WAIT _dc
829
830_dc: $(DCSUBDIRS)
831
832#
833# Dependencies
834#
835fs.d:	fstyp
836ksh:	shcomp isaexec
837print:	lp
838fmt:	mailx
839
840$(FIRST_SUBDIRS) $(BWOSDIRS) $(SUBDIRS) $(AUDITSUBDIRS): FRC
841	@if [ -f $@/Makefile  ]; then \
842		cd $@; pwd; $(MAKE) $(TARGET); \
843	else \
844		true; \
845	fi
846
847FRC:
848