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