xref: /freebsd/sys/modules/Makefile (revision 38a52bd3b5cac3da6f7f6eef3dd050e6aa08ebb3)
1# $FreeBSD$
2
3SYSDIR?=${SRCTOP}/sys
4.include "${SYSDIR}/conf/kern.opts.mk"
5
6SUBDIR_PARALLEL=
7
8# Modules that include binary-only blobs of microcode should be selectable by
9# MK_SOURCELESS_UCODE option (see below).
10
11.include "${SYSDIR}/conf/config.mk"
12
13.if defined(MODULES_OVERRIDE) && !defined(ALL_MODULES)
14SUBDIR=${MODULES_OVERRIDE}
15.else
16SUBDIR=	\
17	${_3dfx} \
18	${_3dfx_linux} \
19	${_aac} \
20	${_aacraid} \
21	accf_data \
22	accf_dns \
23	accf_http \
24	acl_nfs4 \
25	acl_posix1e \
26	${_acpi} \
27	ae \
28	${_aesni} \
29	age \
30	${_agp} \
31	ahci \
32	aic7xxx \
33	alc \
34	ale \
35	alq \
36	${_amd_ecc_inject} \
37	${_amdgpio} \
38	${_amdsbwd} \
39	${_amdsmn} \
40	${_amdtemp} \
41	${_aout} \
42	${_arcmsr} \
43	${_allwinner} \
44	${_armv8crypto} \
45	${_asmc} \
46	ata \
47	ath \
48	ath_dfs \
49	ath_hal \
50	ath_hal_ar5210 \
51	ath_hal_ar5211 \
52	ath_hal_ar5212 \
53	ath_hal_ar5416 \
54	ath_hal_ar9300 \
55	ath_main \
56	ath_rate \
57	ath_pci \
58	${_autofs} \
59	axgbe \
60	backlight \
61	${_bce} \
62	${_bcm283x_clkman} \
63	${_bcm283x_pwm} \
64	bfe \
65	bge \
66	bhnd \
67	${_bxe} \
68	${_bios} \
69	${_blake2} \
70	bnxt \
71	bridgestp \
72	bwi \
73	bwn \
74	${_bytgpio} \
75	${_chvgpio} \
76	cam \
77	${_cardbus} \
78	${_carp} \
79	cas \
80	${_cbb} \
81	cc \
82	${_ccp} \
83	cd9660 \
84	cd9660_iconv \
85	${_ce} \
86	${_cfi} \
87	${_chromebook_platform} \
88	${_ciss} \
89	${_coretemp} \
90	${_cp} \
91	${_cpsw} \
92	${_cpuctl} \
93	${_cpufreq} \
94	${_crypto} \
95	${_cryptodev} \
96	ctl \
97	${_cxgb} \
98	${_cxgbe} \
99	dc \
100	dcons \
101	dcons_crom \
102	${_dpaa2} \
103	${_dpdk_lpm4} \
104	${_dpdk_lpm6} \
105	${_dpms} \
106	dummynet \
107	${_dwwdt} \
108	${_e6000sw} \
109	${_efirt} \
110	${_em} \
111	${_ena} \
112	${_enetc} \
113	${_et} \
114	evdev \
115	${_exca} \
116	ext2fs \
117	fdc \
118	fdescfs \
119	${_felix} \
120	${_ffec} \
121	${_fib_dxr} \
122	filemon \
123	firewire \
124	firmware \
125	flash \
126	${_ftwd} \
127	fusefs \
128	${_fxp} \
129	gem \
130	geom \
131	${_glxiic} \
132	${_glxsb} \
133	gpio \
134	hid \
135	hifn \
136	${_hpt27xx} \
137	${_hptiop} \
138	${_hptmv} \
139	${_hptnr} \
140	${_hptrr} \
141	hwpmc \
142	${_hyperv} \
143	i2c \
144	${_iavf} \
145        ${_ibcore} \
146	${_ichwd} \
147	${_ice} \
148	${_ice_ddp} \
149	${_irdma} \
150	${_ida} \
151	if_bridge \
152	${_if_cgem} \
153	if_disc \
154	if_edsc \
155	${_if_enc} \
156	if_epair \
157	${_if_gif} \
158	${_if_gre} \
159	${_if_me} \
160	if_infiniband \
161	if_lagg \
162	if_ovpn \
163	${_if_stf} \
164	if_tuntap \
165	if_vlan \
166	if_vxlan \
167	iflib \
168	${_igc} \
169	imgact_binmisc \
170	${_intelspi} \
171	${_io} \
172	${_ioat} \
173        ${_ipoib} \
174	ipdivert \
175	${_ipfilter} \
176	${_ipfw} \
177	ipfw_nat \
178	${_ipfw_nat64} \
179	${_ipfw_nptv6} \
180	${_ipfw_pmod} \
181	${_ipmi} \
182	ip6_mroute_mod \
183	ip_mroute_mod \
184	${_ips} \
185	${_ipsec} \
186	${_ipw} \
187	${_ipwfw} \
188	${_isci} \
189	${_iser} \
190	isp \
191	${_ispfw} \
192	${_itwd} \
193	${_iwi} \
194	${_iwifw} \
195	${_iwlwifi} \
196	${_iwlwififw} \
197	${_iwm} \
198	${_iwmfw} \
199	${_iwn} \
200	${_iwnfw} \
201	${_ix} \
202	${_ixv} \
203	${_ixl} \
204	jme \
205	kbdmux \
206	kgssapi \
207	kgssapi_krb5 \
208	khelp \
209	krpc \
210	ksyms \
211	le \
212	lge \
213	libalias \
214	libiconv \
215	libmchain \
216	lindebugfs \
217	linuxkpi \
218	linuxkpi_wlan \
219	${_lio} \
220	lpt \
221	${_mac_biba} \
222	${_mac_bsdextended} \
223	${_mac_ddb} \
224	${_mac_ifoff} \
225	${_mac_lomac} \
226	${_mac_mls} \
227	${_mac_none} \
228	${_mac_ntpd} \
229	${_mac_partition} \
230	${_mac_pimd} \
231	${_mac_portacl} \
232	${_mac_priority} \
233	${_mac_seeotheruids} \
234	${_mac_stub} \
235	${_mac_test} \
236	${_malo} \
237	${_mana} \
238	md \
239	mdio \
240	${_mgb} \
241	mem \
242	mfi \
243	mii \
244	mlx \
245	mlxfw \
246	${_mlx4} \
247	${_mlx4ib} \
248	${_mlx4en} \
249	${_mlx5} \
250	${_mlx5en} \
251	${_mlx5ib} \
252	mmc \
253	mmcsd \
254	${_mpr} \
255	${_mps} \
256	mpt \
257	mqueue \
258	mrsas \
259	msdosfs \
260	msdosfs_iconv \
261	msk \
262	${_mthca} \
263	mvs \
264	mwl \
265	${_mwlfw} \
266	mxge \
267	my \
268	${_nctgpio} \
269	${_neta} \
270	netlink \
271	${_netgraph} \
272	${_nfe} \
273	nfscl \
274	nfscommon \
275	nfsd \
276	nfslockd \
277	nfssvc \
278	nge \
279	nmdm \
280	nullfs \
281	${_ntb} \
282	${_nvd} \
283	${_nvdimm} \
284	${_nvme} \
285	${_nvram} \
286	oce \
287	${_ocs_fc} \
288	${_ossl} \
289	otus \
290	${_otusfw} \
291	ow \
292	${_padlock} \
293	${_padlock_rng} \
294	${_pchtherm} \
295	${_pcfclock} \
296	${_pf} \
297	${_pflog} \
298	${_pfsync} \
299	plip \
300	${_pms} \
301	ppbus \
302	ppc \
303	ppi \
304	pps \
305	procfs \
306	proto \
307	pseudofs \
308	${_pst} \
309	pty  \
310	puc \
311	pwm \
312	${_qat} \
313	${_qatfw} \
314	${_qat_c2xxx} \
315	${_qat_c2xxxfw} \
316	${_qlxge} \
317	${_qlxgb} \
318	${_qlxgbe} \
319	${_qlnx} \
320	ral \
321	${_ralfw} \
322	${_random_fortuna} \
323	${_random_other} \
324	rc4 \
325	${_rdma} \
326	${_rdrand_rng} \
327	re \
328	rl \
329	${_rockchip} \
330	rtsx \
331	${_rtw88} \
332	${_rtw88fw} \
333	rtwn \
334	rtwn_pci \
335	rtwn_usb \
336	${_rtwnfw} \
337	${_s3} \
338	${_safe} \
339	safexcel \
340	${_sbni} \
341	scc \
342	${_sctp} \
343	sdhci \
344	${_sdhci_acpi} \
345	${_sdhci_fdt} \
346	sdhci_pci \
347	sdio \
348	sem \
349	send \
350	${_sfxge} \
351	sge \
352	${_sgx} \
353	${_sgx_linux} \
354	siftr \
355	siis \
356	sis \
357	sk \
358	${_smartpqi} \
359	smbfs \
360	snp \
361	sound \
362	${_speaker} \
363	spi \
364	${_splash} \
365	ste \
366	stge \
367	${_sume} \
368	${_superio} \
369	${_p2sb} \
370	sym \
371	${_syscons} \
372	sysvipc \
373	tcp \
374	${_ti} \
375	tmpfs \
376	${_toecore} \
377	${_tpm} \
378	twe \
379	tws \
380	uart \
381	udf \
382	udf_iconv \
383	ufs \
384	uinput \
385	unionfs \
386	usb \
387	${_vesa} \
388	virtio \
389	vge \
390	${_viawd} \
391	videomode \
392	vkbd \
393	${_vmd} \
394	${_vmm} \
395	${_vmware} \
396	vr \
397	vte \
398	${_wbwd} \
399	wlan \
400	wlan_acl \
401	wlan_amrr \
402	wlan_ccmp \
403	wlan_rssadapt \
404	wlan_tkip \
405	wlan_wep \
406	wlan_xauth \
407	${_wpi} \
408	${_wpifw} \
409	${_x86bios} \
410	xdr \
411	xl \
412	xz \
413	zlib
414
415.if ${MK_AUTOFS} != "no" || defined(ALL_MODULES)
416_autofs=	autofs
417.endif
418
419.if ${MK_DTRACE} != "no" || defined(ALL_MODULES)
420.if ${MACHINE_CPUARCH} != "arm" || ${MACHINE_ARCH:Marmv[67]*} != ""
421.if ${KERN_OPTS:MKDTRACE_HOOKS}
422SUBDIR+=	dtrace
423.endif
424.endif
425SUBDIR+=	opensolaris
426.endif
427
428.if ${MK_CRYPT} != "no" || defined(ALL_MODULES)
429.if exists(${SRCTOP}/sys/opencrypto)
430_crypto=	crypto
431_cryptodev=	cryptodev
432_random_fortuna=random_fortuna
433_random_other=	random_other
434.endif
435.endif
436
437.if ${MK_CUSE} != "no" || defined(ALL_MODULES)
438SUBDIR+=	cuse
439.endif
440
441.if ${MK_EFI} != "no"
442.if ${MACHINE_CPUARCH} == "aarch64" || ${MACHINE_CPUARCH} == "amd64"
443_efirt=		efirt
444.endif
445.endif
446
447.if (${MK_INET_SUPPORT} != "no" || ${MK_INET6_SUPPORT} != "no") || \
448	defined(ALL_MODULES)
449_carp=		carp
450_toecore=	toecore
451_if_enc=	if_enc
452_if_gif=	if_gif
453_if_gre=	if_gre
454_ipfw_pmod=	ipfw_pmod
455.if ${KERN_OPTS:MIPSEC_SUPPORT} && !${KERN_OPTS:MIPSEC}
456_ipsec=		ipsec
457.endif
458.if ${KERN_OPTS:MSCTP_SUPPORT} || ${KERN_OPTS:MSCTP}
459_sctp=		sctp
460.endif
461.endif
462
463.if (${MK_INET_SUPPORT} != "no" && ${MK_INET6_SUPPORT} != "no") || \
464	defined(ALL_MODULES)
465_if_stf=	if_stf
466.endif
467
468.if ${MK_INET_SUPPORT} != "no" || defined(ALL_MODULES)
469_if_me=		if_me
470_ipfw=		ipfw
471.if ${MK_INET6_SUPPORT} != "no" || defined(ALL_MODULES)
472_ipfw_nat64=	ipfw_nat64
473.endif
474.endif
475
476.if ${MK_INET6_SUPPORT} != "no" || defined(ALL_MODULES)
477_ipfw_nptv6=	ipfw_nptv6
478.endif
479
480.if ${MK_IPFILTER} != "no" || defined(ALL_MODULES)
481_ipfilter=	ipfilter
482.endif
483
484.if ${MK_INET_SUPPORT} != "no" && ${KERN_OPTS:MFIB_ALGO}
485_dpdk_lpm4=	dpdk_lpm4
486_fib_dxr=	fib_dxr
487.endif
488
489.if ${MK_INET6_SUPPORT} != "no" && ${KERN_OPTS:MFIB_ALGO}
490_dpdk_lpm6=	dpdk_lpm6
491.endif
492
493.if ${MK_ISCSI} != "no" || defined(ALL_MODULES)
494SUBDIR+=	cfiscsi
495SUBDIR+=	iscsi
496.endif
497
498.if !empty(OPT_FDT)
499SUBDIR+=	fdt
500.endif
501
502# Linuxulator
503.if ${MACHINE_CPUARCH} == "aarch64" || ${MACHINE_CPUARCH} == "amd64" || \
504    ${MACHINE_CPUARCH} == "i386"
505SUBDIR+=	linprocfs
506SUBDIR+=	linsysfs
507.endif
508.if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386"
509SUBDIR+=	linux
510.endif
511.if ${MACHINE_CPUARCH} == "aarch64" || ${MACHINE_CPUARCH} == "amd64"
512SUBDIR+=	linux64
513SUBDIR+=	linux_common
514.endif
515
516.if ${MACHINE_CPUARCH} == "aarch64" || ${MACHINE_CPUARCH} == "amd64" || \
517    ${MACHINE_CPUARCH} == "i386"
518_ena=		ena
519.if ${MK_OFED} != "no" || defined(ALL_MODULES)
520_ibcore=	ibcore
521_ipoib=		ipoib
522_iser=		iser
523.endif
524_ipmi=		ipmi
525_iwlwifi=	iwlwifi
526.if ${MK_SOURCELESS_UCODE} != "no"
527_iwlwififw=	iwlwififw
528.endif
529_mlx4=		mlx4
530_mlx5=		mlx5
531.if (${MK_INET_SUPPORT} != "no" && ${MK_INET6_SUPPORT} != "no") || \
532	defined(ALL_MODULES)
533_mlx4en=	mlx4en
534_mlx5en=	mlx5en
535.endif
536.if ${MK_OFED} != "no" || defined(ALL_MODULES)
537_mthca=		mthca
538_mlx4ib=	mlx4ib
539_mlx5ib=	mlx5ib
540.endif
541_ossl=		ossl
542_rtw88=		rtw88
543.if ${MK_SOURCELESS_UCODE} != "no"
544_rtw88fw=	rtw88fw
545.endif
546_vmware=	vmware
547.endif
548
549# MAC framework
550.if ${KERN_OPTS:MMAC} || defined(ALL_MODULES)
551_mac_biba=	mac_biba
552_mac_bsdextended= mac_bsdextended
553.if ${KERN_OPTS:MDDB} || defined(ALL_MODULES)
554_mac_ddb=	mac_ddb
555.endif
556_mac_ifoff=	mac_ifoff
557_mac_lomac=	mac_lomac
558_mac_mls=	mac_mls
559_mac_none=	mac_none
560_mac_ntpd=	mac_ntpd
561_mac_partition=	mac_partition
562_mac_pimd=	mac_pimd
563_mac_portacl=	mac_portacl
564_mac_priority=	mac_priority
565_mac_seeotheruids= mac_seeotheruids
566_mac_stub=	mac_stub
567_mac_test=	mac_test
568.endif
569
570.if ${MK_NETGRAPH} != "no" || defined(ALL_MODULES)
571_netgraph=	netgraph
572.endif
573
574.if (${MK_PF} != "no" && (${MK_INET_SUPPORT} != "no" || \
575	${MK_INET6_SUPPORT} != "no")) || defined(ALL_MODULES)
576_pf=		pf
577_pflog=		pflog
578.if ${MK_INET_SUPPORT} != "no"
579_pfsync=	pfsync
580.endif
581.endif
582
583.if ${MK_SOURCELESS_UCODE} != "no"
584_bce=		bce
585_fxp=		fxp
586_ispfw=		ispfw
587_ti=		ti
588_mwlfw=		mwlfw
589_otusfw=	otusfw
590_ralfw=		ralfw
591_rtwnfw=	rtwnfw
592.endif
593
594.if ${MK_SOURCELESS_UCODE} != "no" && ${MACHINE_CPUARCH} != "arm" && \
595	${MACHINE_ARCH} != "powerpc" && ${MACHINE_ARCH} != "powerpcspe" && \
596	${MACHINE_CPUARCH} != "riscv"
597_cxgbe=		cxgbe
598.endif
599
600.if ${MACHINE_ARCH} == "amd64" || ${MACHINE_ARCH} == "arm64" || ${MACHINE_ARCH:Mpowerpc64*}
601_ice=		ice
602.if ${MK_SOURCELESS_UCODE} != "no"
603_ice_ddp=	ice_ddp
604.endif
605.if ${MK_OFED} != "no" || defined(ALL_MODULES)
606.if ${MK_INET_SUPPORT} != "no" && ${MK_INET6_SUPPORT} != "no"
607_irdma=		irdma
608.endif
609.endif
610.endif
611
612.if ${MACHINE_CPUARCH} == "aarch64" || ${MACHINE_CPUARCH} == "arm" || \
613	${MACHINE_CPUARCH} == "riscv"
614_if_cgem=	if_cgem
615.endif
616
617# These rely on 64bit atomics
618.if ${MACHINE_ARCH} != "powerpc" && ${MACHINE_ARCH} != "powerpcspe"
619_mps=		mps
620_mpr=		mpr
621.endif
622
623.if ${MK_TESTS} != "no" || defined(ALL_MODULES)
624SUBDIR+=	tests
625.endif
626
627.if ${MK_ZFS} != "no" || (defined(ALL_MODULES)  && ${MACHINE_CPUARCH} != "powerpc")
628SUBDIR+=	zfs
629.endif
630
631.if ${MACHINE_CPUARCH} != "aarch64" && ${MACHINE_CPUARCH} != "arm" && \
632	${MACHINE_CPUARCH} != "powerpc" && ${MACHINE_CPUARCH} != "riscv"
633_syscons=	syscons
634.endif
635
636.if ${MK_SOURCELESS_UCODE} != "no"
637_cxgb=		cxgb
638.endif
639
640.if ${MACHINE_CPUARCH} == "aarch64"
641_allwinner=	allwinner
642_armv8crypto=	armv8crypto
643_dpaa2=		dpaa2
644_dwwdt=		dwwdt
645_em=		em
646_enetc=		enetc
647_felix=		felix
648_rockchip=	rockchip
649.endif
650
651.if ${MACHINE_CPUARCH} == "aarch64" || ${MACHINE_CPUARCH} == "arm"
652_sdhci_fdt=	sdhci_fdt
653_e6000sw=	e6000sw
654_neta=		neta
655.endif
656
657.if ${MACHINE_CPUARCH} == "i386" || ${MACHINE_CPUARCH} == "amd64"
658_agp=		agp
659.if ${MACHINE_CPUARCH} == "i386" || !empty(COMPAT_FREEBSD32_ENABLED)
660_aout=		aout
661.endif
662_bios=		bios
663.if ${MK_SOURCELESS_UCODE} != "no"
664_bxe=		bxe
665.endif
666_cardbus=	cardbus
667_cbb=		cbb
668_cpuctl=	cpuctl
669_cpufreq=	cpufreq
670_dpms=		dpms
671_em=		em
672_et=		et
673_ftwd=		ftwd
674_exca=		exca
675_igc=		igc
676_io=		io
677_itwd=		itwd
678_ix=		ix
679_ixv=		ixv
680.if ${MK_SOURCELESS_UCODE} != "no"
681_lio=		lio
682.endif
683_mana=		mana
684_mgb=		mgb
685_nctgpio=	nctgpio
686_ntb=		ntb
687_ocs_fc=	ocs_fc
688_qat=		qat
689_qatfw=		qatfw
690_qat_c2xxx=	qat_c2xxx
691_qat_c2xxxfw=	qat_c2xxxfw
692.if ${MK_OFED} != "no" || defined(ALL_MODULES)
693_rdma=		rdma
694.endif
695_safe=		safe
696_speaker=	speaker
697_splash=	splash
698_p2sb=		p2sb
699_wbwd=		wbwd
700
701_aac=		aac
702_aacraid=	aacraid
703_acpi=		acpi
704.if ${MK_CRYPT} != "no" || defined(ALL_MODULES)
705_aesni=		aesni
706.endif
707_amd_ecc_inject=amd_ecc_inject
708_amdsbwd=	amdsbwd
709_amdsmn=	amdsmn
710_amdtemp=	amdtemp
711_arcmsr=	arcmsr
712_asmc=		asmc
713.if ${MK_CRYPT} != "no" || defined(ALL_MODULES)
714_blake2=	blake2
715.endif
716_bytgpio=	bytgpio
717_chvgpio=	chvgpio
718_ciss=		ciss
719_chromebook_platform=	chromebook_platform
720_coretemp=	coretemp
721.if ${MK_SOURCELESS_HOST} != "no" && empty(KCSAN_ENABLED)
722_hpt27xx=	hpt27xx
723.endif
724_hptiop=	hptiop
725.if ${MK_SOURCELESS_HOST} != "no" && empty(KCSAN_ENABLED)
726_hptmv=		hptmv
727_hptnr=		hptnr
728_hptrr=		hptrr
729.endif
730_hyperv=	hyperv
731_ichwd=		ichwd
732_ida=		ida
733_intelspi=	intelspi
734_ips=		ips
735_isci=		isci
736_ipw=		ipw
737_iwi=		iwi
738_iwm=		iwm
739_iwn=		iwn
740.if ${MK_SOURCELESS_UCODE} != "no"
741_ipwfw=		ipwfw
742_iwifw=		iwifw
743_iwmfw=		iwmfw
744_iwnfw=		iwnfw
745.endif
746_nfe=		nfe
747_nvd=		nvd
748_nvme=		nvme
749_nvram=		nvram
750.if ${MK_CRYPT} != "no" || defined(ALL_MODULES)
751_padlock=	padlock
752_padlock_rng=	padlock_rng
753_rdrand_rng=	rdrand_rng
754.endif
755_pchtherm = pchtherm
756_s3=		s3
757_sdhci_acpi=	sdhci_acpi
758_superio=	superio
759_tpm=		tpm
760_vesa=		vesa
761_viawd=		viawd
762_vmd=		vmd
763_wpi=		wpi
764.if ${MK_SOURCELESS_UCODE} != "no"
765_wpifw=		wpifw
766.endif
767_x86bios=	x86bios
768.endif
769
770.if ${MACHINE_CPUARCH} == "amd64"
771_amdgpio=	amdgpio
772_ccp=		ccp
773_iavf=		iavf
774_ioat=		ioat
775_ixl=		ixl
776_nvdimm=	nvdimm
777_pms=		pms
778_qlxge=		qlxge
779_qlxgb=		qlxgb
780_sume=		sume
781.if ${MK_SOURCELESS_UCODE} != "no"
782_qlxgbe=	qlxgbe
783_qlnx=		qlnx
784.endif
785_sfxge=		sfxge
786_sgx=		sgx
787_sgx_linux=	sgx_linux
788_smartpqi=	smartpqi
789_p2sb=		p2sb
790
791.if ${MK_BHYVE} != "no" || defined(ALL_MODULES)
792.if ${KERN_OPTS:MSMP}
793_vmm=		vmm
794.endif
795.endif
796.endif
797
798.if ${MACHINE_CPUARCH} == "i386"
799# XXX some of these can move to the general case when de-i386'ed
800# XXX some of these can move now, but are untested on other architectures.
801_3dfx=		3dfx
802_3dfx_linux=	3dfx_linux
803.if ${MK_SOURCELESS_HOST} != "no"
804_ce=		ce
805.endif
806.if ${MK_SOURCELESS_HOST} != "no"
807_cp=		cp
808.endif
809_glxiic=	glxiic
810_glxsb=		glxsb
811_pcfclock=	pcfclock
812_pst=		pst
813_sbni=		sbni
814.endif
815
816.if ${MACHINE_ARCH} == "armv7"
817_cfi=		cfi
818_cpsw=		cpsw
819.endif
820
821.if ${MACHINE_CPUARCH} == "powerpc"
822_aacraid=	aacraid
823_agp=		agp
824_an=		an
825_cardbus=	cardbus
826_cbb=		cbb
827_cfi=		cfi
828_cpufreq=	cpufreq
829_exca=		exca
830_ffec=		ffec
831_nvd=		nvd
832_nvme=		nvme
833.endif
834
835.if ${MACHINE_ARCH:Mpowerpc64*} != ""
836_ipmi=		ipmi
837_ixl=		ixl
838_nvram=		opal_nvram
839.endif
840.if ${MACHINE_CPUARCH} == "powerpc" && ${MACHINE_ARCH} != "powerpcspe"
841# Don't build powermac_nvram for powerpcspe, it's never supported.
842_nvram+=	powermac_nvram
843.endif
844
845.endif
846
847.if ${MACHINE_ARCH:Marmv[67]*} != "" || ${MACHINE_CPUARCH} == "aarch64"
848_bcm283x_clkman=  bcm283x_clkman
849_bcm283x_pwm=  bcm283x_pwm
850.endif
851
852.if !(${COMPILER_TYPE} == "clang" && ${COMPILER_VERSION} < 110000)
853# LLVM 10 crashes when building if_malo_pci.c, fixed in LLVM11:
854# https://bugs.llvm.org/show_bug.cgi?id=44351
855_malo=	malo
856.endif
857
858SUBDIR+=${MODULES_EXTRA}
859
860.for reject in ${WITHOUT_MODULES}
861SUBDIR:= ${SUBDIR:N${reject}}
862.endfor
863
864# Calling kldxref(8) for each module is expensive.
865.if !defined(NO_XREF)
866.MAKEFLAGS+=	-DNO_XREF
867afterinstall: .PHONY
868	@if type kldxref >/dev/null 2>&1; then \
869		${ECHO} ${KLDXREF_CMD} ${DESTDIR}${KMODDIR}; \
870		${KLDXREF_CMD} ${DESTDIR}${KMODDIR}; \
871	fi
872.endif
873
874SUBDIR:= ${SUBDIR:u:O}
875
876.include <bsd.subdir.mk>
877