xref: /illumos-gate/usr/src/cmd/Makefile (revision cd76e30f6fbd14ce10675906631d3f1233c2dcac)
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) 2018, 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 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	consadm		\
102	coreadm		\
103	cpio		\
104	cpc		\
105	cron		\
106	crypt		\
107	csh		\
108	csplit		\
109	ctfconvert	\
110	ctfdiff		\
111	ctfdump		\
112	ctfmerge	\
113	ctrun		\
114	ctstat		\
115	ctwatch		\
116	datadm		\
117	date		\
118	dc		\
119	dd		\
120	deroff		\
121	devfsadm	\
122	syseventd	\
123	devctl		\
124	devinfo		\
125	devmgmt		\
126	devprop		\
127	dfs.cmds	\
128	diff		\
129	diff3		\
130	diffmk		\
131	dircmp		\
132	dirname		\
133	dis		\
134	diskinfo	\
135	diskmgtd	\
136	dispadmin	\
137	dladm		\
138	dlstat		\
139	dlutil		\
140	dmesg		\
141	dodatadm	\
142	dtrace		\
143	du		\
144	dumpadm		\
145	dumpcs		\
146	echo		\
147	ed		\
148	eeprom		\
149	eject		\
150	emul64ioctl	\
151	enhance		\
152	env		\
153	eqn		\
154	etdump		\
155	expand		\
156	expr		\
157	exstr		\
158	factor		\
159	false		\
160	fcinfo		\
161	fcoesvc		\
162	fdetach		\
163	fdformat	\
164	fdisk		\
165	ficl		\
166	filesync	\
167	file		\
168	find		\
169	flowadm		\
170	flowstat	\
171	fm		\
172	fmt		\
173	fmthard		\
174	fmtmsg		\
175	fold		\
176	format		\
177	fs.d		\
178	fstyp		\
179	fuser		\
180	fwflash		\
181	gcore		\
182	gencat		\
183	geniconvtbl	\
184	genmsg		\
185	getconf		\
186	getdevpolicy	\
187	getent		\
188	getfacl		\
189	getmajor	\
190	getopt		\
191	gettext		\
192	gettxt		\
193	grep		\
194	groups		\
195	growfs		\
196	grpck		\
197	gss		\
198	hal		\
199	halt		\
200	head		\
201	hostid		\
202	hostname	\
203	hotplug		\
204	hotplugd	\
205	ibd_upgrade	\
206	iconv		\
207	id		\
208	idmap		\
209	infocmp		\
210	init		\
211	initpkg		\
212	install.d	\
213	intrd		\
214	intrstat	\
215	ipcrm		\
216	ipcs		\
217	ipdadm		\
218	ipf		\
219	isainfo		\
220	isalist		\
221	itutools	\
222	iscsiadm	\
223	iscsid		\
224	iscsitsvc	\
225	isns		\
226	itadm		\
227	kbd		\
228	keyserv		\
229	killall		\
230	krb5		\
231	ksh		\
232	kvmstat		\
233	last		\
234	lastcomm	\
235	latencytop	\
236	ldap		\
237	ldapcachemgr	\
238	lgrpinfo	\
239	line		\
240	link		\
241	dlmgmtd		\
242	listen		\
243	loadkeys	\
244	locale		\
245	localedef	\
246	lockstat	\
247	locator		\
248	lofiadm		\
249	logadm		\
250	logger		\
251	login		\
252	logins		\
253	look		\
254	ls		\
255	luxadm		\
256	mach		\
257	mail		\
258	mailwrapper	\
259	mailx		\
260	make		\
261	makekey		\
262	man		\
263	mandoc		\
264	mdb		\
265	mesg		\
266	mkdir		\
267	mkfifo		\
268	mkfile		\
269	mkmsgs		\
270	mknod		\
271	mkpwdict	\
272	mktemp		\
273	modload		\
274	more		\
275	mpathadm	\
276	msgfmt		\
277	msgid		\
278	mt		\
279	mv		\
280	mvdir		\
281	ndmpadm		\
282	ndmpd		\
283	ndmpstat	\
284	netadm		\
285	netfiles	\
286	newform		\
287	newgrp		\
288	news		\
289	newtask		\
290	nice		\
291	nl		\
292	nlsadmin	\
293	nohup		\
294	nsadmin		\
295	nscd		\
296	oamuser		\
297	oawk		\
298	od		\
299	pack		\
300	pagesize	\
301	passmgmt	\
302	passwd		\
303	pathchk		\
304	pbind		\
305	pcidr		\
306	pcitool		\
307	pfexec		\
308	pfexecd		\
309	pginfo		\
310	pgstat		\
311	pgrep		\
312	picl		\
313	plimit		\
314	policykit	\
315	pools		\
316	power		\
317	powertop	\
318	ppgsz		\
319	pg		\
320	plockstat	\
321	pr		\
322	prctl		\
323	print		\
324	printf		\
325	priocntl	\
326	profiles	\
327	projadd		\
328	projects	\
329	prstat		\
330	prtconf		\
331	prtdiag		\
332	prtvtoc		\
333	ps		\
334	psradm		\
335	psrinfo		\
336	psrset		\
337	ptools		\
338	pwck		\
339	pwconv		\
340	pwd		\
341	pyzfs		\
342	raidctl		\
343	ramdiskadm	\
344	rcap		\
345	rcm_daemon	\
346	rctladm		\
347	refer		\
348	regcmp		\
349	renice		\
350	rm		\
351	rmdir		\
352	rmformat	\
353	rmmount		\
354	rmt		\
355	rmvolmgr	\
356	roles		\
357	rpcbind		\
358	rpcgen		\
359	rpcinfo		\
360	rpcsvc		\
361	runat		\
362	sa		\
363	saf		\
364	sasinfo		\
365	savecore	\
366	sbdadm		\
367	script		\
368	scsi		\
369	sdiff		\
370	sdpadm		\
371	sed		\
372	sendmail	\
373	setfacl		\
374	setmnt		\
375	setpgrp		\
376	setuname	\
377	sgs		\
378	sh		\
379	shcomp		\
380	smbios		\
381	smbsrv		\
382	smserverd	\
383	soelim		\
384	sort		\
385	spell		\
386	split		\
387	sqlite		\
388	srchtxt		\
389	srptadm		\
390	srptsvc		\
391	ssh		\
392	stat		\
393	stmfadm		\
394	stmfproxy	\
395	stmfsvc		\
396	stmsboot	\
397	streams		\
398	strings		\
399	su		\
400	sulogin		\
401	sunpc		\
402	svc		\
403	svr4pkg		\
404	swap		\
405	sync		\
406	sysdef		\
407	syseventadm	\
408	syslogd		\
409	tabs		\
410	tail		\
411	tar		\
412	tbl		\
413	tcopy		\
414	tcpd		\
415	th_tools	\
416	tic		\
417	time		\
418	tip		\
419	tnf		\
420	touch		\
421	tput		\
422	tr		\
423	trapstat	\
424	troff		\
425	true		\
426	truss		\
427	tsol		\
428	tty		\
429	ttymon		\
430	tzreload	\
431	uadmin		\
432	ul		\
433	uname		\
434	units		\
435	unlink		\
436	unpack		\
437	userattr	\
438	users		\
439	utmp_update	\
440	utmpd		\
441	uuidgen		\
442	valtools	\
443	vgrind		\
444	vi		\
445	volcheck	\
446	volrmmount	\
447	vrrpadm		\
448	vscan		\
449	vt		\
450	vtfontcvt	\
451	w		\
452	wall		\
453	which		\
454	who		\
455	whodo		\
456	wracct		\
457	write		\
458	xargs		\
459	xstr		\
460	yes		\
461	ypcmd		\
462	yppasswd	\
463	zdb		\
464	zdump		\
465	zfs		\
466	zhack		\
467	zic		\
468	zinject		\
469	zlogin		\
470	zoneadm		\
471	zoneadmd	\
472	zonecfg		\
473	zonename	\
474	zpool		\
475	zlook		\
476	zonestat	\
477	zstreamdump	\
478	ztest
479
480i386_SUBDIRS=		\
481	acpi		\
482	acpihpd		\
483	addbadsec	\
484	ahciem		\
485	biosdev		\
486	cxgbetool	\
487	diskscan	\
488	nvmeadm		\
489	rtc		\
490	ucodeadm	\
491	xhci		\
492	xvm
493
494sparc_SUBDIRS=		\
495	dcs		\
496	device_remap	\
497	drd		\
498	fruadm		\
499	ldmad		\
500	oplhpd		\
501	prtdscp		\
502	prtfru		\
503	scadm		\
504	sckmd		\
505	sf880drd	\
506	virtinfo	\
507	vntsd
508
509#
510# Commands that are messaged.  Note that 'lp' comes first
511# (see previous comment about 'lp'.)
512#
513MSGSUBDIRS=		\
514	lp		\
515	abi		\
516	acctadm		\
517	allocate	\
518	asa		\
519	audio		\
520	audit		\
521	auditconfig	\
522	auditd		\
523	auditrecord	\
524	auditset	\
525	auths		\
526	autopush	\
527	awk		\
528	awk_xpg4	\
529	backup		\
530	banner		\
531	bart		\
532	basename	\
533	beadm		\
534	bnu		\
535	busstat		\
536	cal		\
537	cat		\
538	cdrw		\
539	cfgadm		\
540	checkeq		\
541	checknr		\
542	chgrp		\
543	chmod		\
544	chown		\
545	cmd-crypto	\
546	cmd-inet	\
547	col		\
548	compress	\
549	consadm		\
550	coreadm		\
551	cpio		\
552	cpc		\
553	cron		\
554	csh		\
555	csplit		\
556	ctrun		\
557	ctstat		\
558	ctwatch		\
559	datadm		\
560	date		\
561	dc		\
562	dcs		\
563	dd		\
564	deroff		\
565	devfsadm	\
566	dfs.cmds	\
567	diff		\
568	diffmk		\
569	dladm		\
570	dlstat		\
571	du		\
572	dumpcs		\
573	ed		\
574	eject		\
575	env		\
576	eqn		\
577	expand		\
578	expr		\
579	fcinfo		\
580	file		\
581	filesync	\
582	find		\
583	flowadm		\
584	flowstat	\
585	fm		\
586	fold		\
587	fs.d		\
588	fwflash		\
589	geniconvtbl	\
590	genmsg		\
591	getconf		\
592	getent		\
593	gettext		\
594	gettxt		\
595	grep		\
596	grpck		\
597	gss		\
598	halt		\
599	head		\
600	hostname	\
601	hotplug		\
602	iconv		\
603	id		\
604	idmap		\
605	isaexec		\
606	iscsiadm	\
607	iscsid		\
608	isns		\
609	itadm		\
610	kbd		\
611	krb5		\
612	ksh		\
613	last		\
614	ldap		\
615	ldapcachemgr	\
616	lgrpinfo	\
617	locale		\
618	lofiadm		\
619	logadm		\
620	logger		\
621	logins		\
622	ls		\
623	luxadm		\
624	mailx		\
625	make		\
626	man		\
627	mesg		\
628	mkdir		\
629	mkpwdict	\
630	mktemp		\
631	more		\
632	mpathadm	\
633	msgfmt		\
634	mv		\
635	ndmpadm		\
636	ndmpstat	\
637	newgrp		\
638	newtask		\
639	nice		\
640	nohup		\
641	oawk		\
642	pack		\
643	passwd		\
644	passmgmt	\
645	pathchk		\
646	pfexec		\
647	pg		\
648	pgrep		\
649	picl            \
650	pools		\
651	power		\
652	pr		\
653	praudit		\
654	print		\
655	profiles	\
656	projadd		\
657	projects	\
658	prstat		\
659	prtdiag		\
660	ps		\
661	psrinfo		\
662	ptools		\
663	pwconv		\
664	pwd		\
665	pyzfs		\
666	raidctl		\
667	ramdiskadm	\
668	rcap		\
669	rcm_daemon	\
670	refer		\
671	regcmp		\
672	renice		\
673	roles		\
674	rm		\
675	rmdir		\
676	rmformat	\
677	rmmount		\
678	rmvolmgr	\
679	sasinfo		\
680	sbdadm		\
681	scadm		\
682	script		\
683	scsi		\
684	sdiff		\
685	sdpadm		\
686	sgs		\
687	sh		\
688	shcomp		\
689	smbsrv		\
690	sort		\
691	split		\
692	srptadm		\
693	stat		\
694	stmfadm		\
695	stmsboot	\
696	strings		\
697	su		\
698	svc		\
699	svr4pkg		\
700	swap		\
701	syseventadm	\
702	syseventd	\
703	tabs		\
704	tar		\
705	tbl		\
706	time		\
707	tnf		\
708	touch		\
709	tput		\
710	troff		\
711	tsol		\
712	tty		\
713	ttymon		\
714	tzreload	\
715	ul		\
716	uname		\
717	units		\
718	unlink		\
719	unpack		\
720	userattr	\
721	valtools	\
722	vgrind		\
723	vi		\
724	volcheck	\
725	volrmmount	\
726	vrrpadm		\
727	vscan		\
728	w		\
729	who		\
730	whodo		\
731	wracct		\
732	write		\
733	xargs		\
734	yppasswd	\
735	zdump		\
736	zfs		\
737	zic		\
738	zlogin		\
739	zoneadm		\
740	zoneadmd	\
741	zonecfg		\
742	zonename	\
743	zpool		\
744	zonestat
745
746sparc_MSGSUBDIRS=	\
747	fruadm		\
748	prtdscp		\
749	prtfru		\
750	virtinfo	\
751	vntsd
752
753i386_MSGSUBDIRS=	\
754	ucodeadm
755
756#
757# commands that use dcgettext for localized time, LC_TIME
758#
759DCSUBDIRS=		\
760	cal		\
761	cfgadm		\
762	diff		\
763	ls		\
764	pr		\
765	ps		\
766	tar		\
767	w		\
768	who		\
769	whodo		\
770	write
771
772#
773# commands that belong only to audit.
774#
775AUDITSUBDIRS=		\
776	amt		\
777	audit		\
778	audit_warn	\
779	auditconfig	\
780	auditd		\
781	auditrecord	\
782	auditreduce	\
783	auditset	\
784	auditstat	\
785	praudit
786
787#
788# commands not owned by the systems group
789#
790BWOSDIRS=
791
792
793all :=		TARGET = all
794install :=	TARGET = install
795clean :=	TARGET = clean
796clobber :=	TARGET = clobber
797lint :=		TARGET = lint
798_msg :=		TARGET = _msg
799_dc :=		TARGET = _dc
800
801.KEEP_STATE:
802
803SUBDIRS = $(COMMON_SUBDIRS) $($(MACH)_SUBDIRS)
804
805.PARALLEL:	$(BWOSDIRS) $(SUBDIRS) $(MSGSUBDIRS) $(AUDITSUBDIRS)
806
807all install clean clobber lint: $(FIRST_SUBDIRS) .WAIT $(SUBDIRS) \
808	$(AUDITSUBDIRS)
809
810#
811# Manifests cannot be checked in parallel, because we are using
812# the global repository that is in $(SRC)/cmd/svc/seed/global.db.
813# For this reason, to avoid .PARALLEL and .NO_PARALLEL conflicts,
814# we spawn off a sub-make to perform the non-parallel 'make check'
815#
816check:
817	$(MAKE) -f Makefile.check check
818
819#
820# The .WAIT directive works around an apparent bug in parallel make.
821# Evidently make was getting the target _msg vs. _dc confused under
822# some level of parallelization, causing some of the _dc objects
823# not to be built.
824#
825_msg: $(MSGSUBDIRS) $($(MACH)_MSGSUBDIRS) .WAIT _dc
826
827_dc: $(DCSUBDIRS)
828
829#
830# Dependencies
831#
832fs.d:	fstyp
833ksh:	shcomp isaexec
834print:	lp
835fmt:	mailx
836
837$(FIRST_SUBDIRS) $(BWOSDIRS) $(SUBDIRS) $(AUDITSUBDIRS): FRC
838	@if [ -f $@/Makefile  ]; then \
839		cd $@; pwd; $(MAKE) $(TARGET); \
840	else \
841		true; \
842	fi
843
844FRC:
845