xref: /illumos-gate/usr/src/cmd/Makefile (revision 8329232e00f1048795bae53acb230316243aadb5)
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	cvcd		\
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