]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - sys/modules/Makefile
sys/modules: don't build qlxgbe if the user objects to sourceless ucode
[FreeBSD/FreeBSD.git] / sys / modules / Makefile
1 # $FreeBSD$
2
3 SYSDIR?=${SRCTOP}/sys
4 .include "${SYSDIR}/conf/kern.opts.mk"
5
6 SUBDIR_PARALLEL=
7
8 # Modules that include binary-only blobs of microcode should be selectable by
9 # MK_SOURCELESS_UCODE option (see below).
10
11 .if defined(MODULES_OVERRIDE) && !defined(ALL_MODULES)
12 SUBDIR=${MODULES_OVERRIDE}
13 .else
14 SUBDIR= \
15         ${_3dfx} \
16         ${_3dfx_linux} \
17         ${_aac} \
18         ${_aacraid} \
19         accf_data \
20         accf_dns \
21         accf_http \
22         acl_nfs4 \
23         acl_posix1e \
24         ${_acpi} \
25         ae \
26         ${_aesni} \
27         age \
28         ${_agp} \
29         aha \
30         ahci \
31         ${_aic} \
32         aic7xxx \
33         alc \
34         ale \
35         alq \
36         ${_amd_ecc_inject} \
37         ${_amdsbwd} \
38         ${_amdtemp} \
39         amr \
40         ${_an} \
41         ${_aout} \
42         ${_apm} \
43         ${_arcmsr} \
44         ${_arcnet} \
45         ${_armv8crypto} \
46         ${_asmc} \
47         ata \
48         ath \
49         ath_dfs \
50         ath_hal \
51         ath_hal_ar5210 \
52         ath_hal_ar5211 \
53         ath_hal_ar5212 \
54         ath_hal_ar5416 \
55         ath_hal_ar9300 \
56         ath_main \
57         ath_rate \
58         ath_pci \
59         ${_autofs} \
60         ${_auxio} \
61         ${_bce} \
62         bfe \
63         bge \
64         bhnd \
65         ${_bxe} \
66         ${_bios} \
67         ${_bktr} \
68         ${_bm} \
69         bnxt \
70         bridgestp \
71         bwi \
72         bwn \
73         bwn_pci \
74         ${_bytgpio} \
75         cam \
76         ${_cardbus} \
77         ${_carp} \
78         cas \
79         ${_cbb} \
80         cc \
81         cd9660 \
82         cd9660_iconv \
83         ${_ce} \
84         ${_cfi} \
85         chacha20 \
86         ${_chromebook_platform} \
87         ${_ciss} \
88         cloudabi \
89         ${_cloudabi32} \
90         ${_cloudabi64} \
91         ${_cm} \
92         ${_cmx} \
93         ${_coff} \
94         ${_coretemp} \
95         ${_cp} \
96         ${_cpsw} \
97         ${_cpuctl} \
98         ${_cpufreq} \
99         ${_crypto} \
100         ${_cryptodev} \
101         ${_cs} \
102         ${_ctau} \
103         ctl \
104         ${_cxgb} \
105         ${_cxgbe} \
106         dc \
107         dcons \
108         dcons_crom \
109         de \
110         ${_dpms} \
111         ${_dpt} \
112         ${_drm} \
113         ${_drm2} \
114         dummynet \
115         ${_ed} \
116         ${_efirt} \
117         ${_elink} \
118         ${_em} \
119         ${_ena} \
120         ${_ep} \
121         ${_epic} \
122         esp \
123         ${_et} \
124         evdev \
125         ${_ex} \
126         ${_exca} \
127         ext2fs \
128         fdc \
129         fdescfs \
130         ${_fe} \
131         ${_ffec} \
132         filemon \
133         firewire \
134         firmware \
135         fuse \
136         ${_fxp} \
137         gem \
138         geom \
139         ${_glxiic} \
140         ${_glxsb} \
141         gpio \
142         hifn \
143         hme \
144         ${_hpt27xx} \
145         ${_hptiop} \
146         ${_hptmv} \
147         ${_hptnr} \
148         ${_hptrr} \
149         hwpmc \
150         ${_hwpmc_mips24k} \
151         ${_hwpmc_mips74k} \
152         ${_hyperv} \
153         i2c \
154         ${_ibcore} \
155         ${_ibcs2} \
156         ${_ichwd} \
157         ${_ida} \
158         if_bridge \
159         if_disc \
160         if_edsc \
161         ${_if_enc} \
162         if_epair \
163         ${_if_gif} \
164         ${_if_gre} \
165         ${_if_me} \
166         if_lagg \
167         ${_if_ndis} \
168         ${_if_stf} \
169         if_tap \
170         if_tun \
171         if_vlan \
172         if_vxlan \
173         ${_iir} \
174         imgact_binmisc \
175         ${_intelspi} \
176         ${_io} \
177         ${_ioat} \
178         ${_ipoib} \
179         ${_ipdivert} \
180         ${_ipfilter} \
181         ${_ipfw} \
182         ipfw_nat \
183         ${_ipfw_nat64} \
184         ${_ipfw_nptv6} \
185         ${_ipfw_pmod} \
186         ${_ipmi} \
187         ip6_mroute_mod \
188         ip_mroute_mod \
189         ${_ips} \
190         ${_ipsec} \
191         ${_ipw} \
192         ${_ipwfw} \
193         ${_isci} \
194         ${_iser} \
195         isp \
196         ${_ispfw} \
197         ${_iwi} \
198         ${_iwifw} \
199         ${_iwm} \
200         ${_iwmfw} \
201         ${_iwn} \
202         ${_iwnfw} \
203         ${_ix} \
204         ${_ixv} \
205         ${_ixgb} \
206         ${_ixl} \
207         ${_ixlv} \
208         jme \
209         joy \
210         kbdmux \
211         kgssapi \
212         kgssapi_krb5 \
213         khelp \
214         krpc \
215         ksyms \
216         le \
217         lge \
218         libalias \
219         libiconv \
220         libmbpool \
221         libmchain \
222         ${_linprocfs} \
223         ${_linsysfs} \
224         ${_linux} \
225         ${_linux_common} \
226         ${_linux64} \
227         linuxkpi \
228         lmc \
229         lpt \
230         mac_biba \
231         mac_bsdextended \
232         mac_ifoff \
233         mac_lomac \
234         mac_mls \
235         mac_none \
236         mac_partition \
237         mac_portacl \
238         mac_seeotheruids \
239         mac_stub \
240         mac_test \
241         malo \
242         md \
243         mdio \
244         mem \
245         mfi \
246         mii \
247         mlx \
248         ${_mlx4} \
249         ${_mlx4ib} \
250         ${_mlx4en} \
251         ${_mlx5} \
252         ${_mlx5en} \
253         ${_mly} \
254         mmc \
255         mmcsd \
256         mpr \
257         mps \
258         mpt \
259         mqueue \
260         mrsas \
261         msdosfs \
262         msdosfs_iconv \
263         ${_mse} \
264         msk \
265         ${_mthca} \
266         mvs \
267         mwl \
268         ${_mwlfw} \
269         mxge \
270         my \
271         ${_nandfs} \
272         ${_nandsim} \
273         ${_ncr} \
274         ${_nctgpio} \
275         ${_ncv} \
276         ${_ndis} \
277         ${_netgraph} \
278         ${_nfe} \
279         nfscl \
280         nfscommon \
281         nfsd \
282         nfslock \
283         nfslockd \
284         nfssvc \
285         nge \
286         nmdm \
287         ${_nsp} \
288         nullfs \
289         ${_ntb} \
290         ${_nvd} \
291         ${_nvme} \
292         ${_nvram} \
293         ${_nxge} \
294         oce \
295         otus \
296         ${_otusfw} \
297         ow \
298         ${_padlock} \
299         ${_padlock_rng} \
300         ${_pccard} \
301         ${_pcfclock} \
302         pcn \
303         ${_pf} \
304         ${_pflog} \
305         ${_pfsync} \
306         plip \
307         ${_pms} \
308         ppbus \
309         ppc \
310         ppi \
311         pps \
312         procfs \
313         proto \
314         pseudofs \
315         ${_pst} \
316         pty  \
317         puc \
318         ${_qlxge} \
319         ${_qlxgb} \
320         ${_qlxgbe} \
321         ${_qlnx} \
322         ral \
323         ${_ralfw} \
324         ${_random_fortuna} \
325         ${_random_yarrow} \
326         ${_random_other} \
327         rc4 \
328         ${_rdma} \
329         ${_rdrand_rng} \
330         re \
331         rl \
332         rtwn \
333         rtwn_pci \
334         rtwn_usb \
335         ${_rtwnfw} \
336         ${_s3} \
337         ${_safe} \
338         ${_sbni} \
339         scc \
340         ${_scsi_low} \
341         sdhci \
342         ${_sdhci_acpi} \
343         sdhci_pci \
344         sem \
345         send \
346         ${_sf} \
347         ${_sfxge} \
348         sge \
349         ${_sgx} \
350         ${_sgx_linux} \
351         siba_bwn \
352         siftr \
353         siis \
354         sis \
355         sk \
356         smbfs \
357         sn \
358         snp \
359         sound \
360         ${_speaker} \
361         spigen \
362         ${_splash} \
363         ${_sppp} \
364         ste \
365         ${_stg} \
366         stge \
367         ${_sym} \
368         ${_syscons} \
369         sysvipc \
370         tcp \
371         ${_ti} \
372         tl \
373         tmpfs \
374         ${_toecore} \
375         ${_tpm} \
376         trm \
377         ${_twa} \
378         twe \
379         tws \
380         tx \
381         ${_txp} \
382         uart \
383         ubsec \
384         udf \
385         udf_iconv \
386         ufs \
387         uinput \
388         unionfs \
389         usb \
390         ${_vesa} \
391         ${_virtio} \
392         vge \
393         ${_viawd} \
394         videomode \
395         vkbd \
396         ${_vmm} \
397         ${_vmware} \
398         ${_vpo} \
399         vr \
400         vte \
401         vx \
402         ${_vxge} \
403         wb \
404         ${_wbwd} \
405         ${_wi} \
406         wlan \
407         wlan_acl \
408         wlan_amrr \
409         wlan_ccmp \
410         wlan_rssadapt \
411         wlan_tkip \
412         wlan_wep \
413         wlan_xauth \
414         ${_wpi} \
415         ${_wpifw} \
416         ${_x86bios} \
417         ${_xe} \
418         xl \
419         zlib
420
421 .if ${MK_AUTOFS} != "no" || defined(ALL_MODULES)
422 _autofs=        autofs
423 .endif
424
425 .if ${MK_CDDL} != "no" || defined(ALL_MODULES)
426 .if (${MACHINE_CPUARCH} != "arm" || ${MACHINE_ARCH:Marmv6*} != "") && \
427         ${MACHINE_CPUARCH} != "mips" && \
428         ${MACHINE_CPUARCH} != "sparc64"
429 SUBDIR+=        dtrace
430 .endif
431 SUBDIR+=        opensolaris
432 .endif
433
434 .if ${MK_CRYPT} != "no" || defined(ALL_MODULES)
435 .if exists(${SRCTOP}/sys/opencrypto)
436 _crypto=        crypto
437 _cryptodev=     cryptodev
438 _random_fortuna=random_fortuna
439 _random_yarrow= random_yarrow
440 _random_other=  random_other
441 .endif
442 .endif
443
444 .if ${MK_CUSE} != "no" || defined(ALL_MODULES)
445 SUBDIR+=        cuse
446 .endif
447
448 .if (${MK_INET_SUPPORT} != "no" || ${MK_INET6_SUPPORT} != "no") || \
449         defined(ALL_MODULES)
450 _carp=          carp
451 _toecore=       toecore
452 _if_enc=        if_enc
453 _if_gif=        if_gif
454 _if_gre=        if_gre
455 _ipfw_pmod=     ipfw_pmod
456 .if ${MK_IPSEC_SUPPORT} != "no"
457 _ipsec=         ipsec
458 .endif
459 .endif
460
461 .if (${MK_INET_SUPPORT} != "no" && ${MK_INET6_SUPPORT} != "no") || \
462         defined(ALL_MODULES)
463 _if_stf=        if_stf
464 .endif
465
466 .if ${MK_INET_SUPPORT} != "no" || defined(ALL_MODULES)
467 _if_me=         if_me
468 _ipdivert=      ipdivert
469 _ipfw=          ipfw
470 .if ${MK_INET6_SUPPORT} != "no" || defined(ALL_MODULES)
471 _ipfw_nat64=    ipfw_nat64
472 .endif
473 .endif
474
475 .if ${MK_INET6_SUPPORT} != "no" || defined(ALL_MODULES)
476 _ipfw_nptv6=    ipfw_nptv6
477 .endif
478
479 .if ${MK_IPFILTER} != "no" || defined(ALL_MODULES)
480 _ipfilter=      ipfilter
481 .endif
482
483 .if ${MK_ISCSI} != "no" || defined(ALL_MODULES)
484 SUBDIR+=        cfiscsi
485 SUBDIR+=        iscsi
486 SUBDIR+=        iscsi_initiator
487 .endif
488
489 .if ${MK_NAND} != "no" || defined(ALL_MODULES)
490 _nandfs=        nandfs
491 _nandsim=       nandsim
492 .endif
493
494 .if ${MK_NETGRAPH} != "no" || defined(ALL_MODULES)
495 _netgraph=      netgraph
496 .endif
497
498 .if (${MK_PF} != "no" && (${MK_INET_SUPPORT} != "no" || \
499         ${MK_INET6_SUPPORT} != "no")) || defined(ALL_MODULES)
500 _pf=            pf
501 _pflog=         pflog
502 .if ${MK_INET_SUPPORT} != "no"
503 _pfsync=        pfsync
504 .endif
505 .endif
506
507 .if ${MK_SOURCELESS_UCODE} != "no"
508 _bce=           bce
509 _fxp=           fxp
510 _ispfw=         ispfw
511 _sf=            sf
512 _ti=            ti
513 _txp=           txp
514
515 .if ${MACHINE_CPUARCH} != "mips"
516 _mwlfw=         mwlfw
517 _otusfw=        otusfw
518 _ralfw=         ralfw
519 _rtwnfw=        rtwnfw
520 .endif
521 .endif
522
523 .if ${MK_SOURCELESS_UCODE} != "no" && ${MACHINE_CPUARCH} != "arm" && \
524         ${MACHINE_CPUARCH} != "mips" && \
525         ${MACHINE_ARCH} != "powerpc" && ${MACHINE_ARCH} != "powerpcspe" && \
526         ${MACHINE_CPUARCH} != "riscv"
527 _cxgbe=         cxgbe
528 .endif
529
530 .if ${MK_TESTS} != "no" || defined(ALL_MODULES)
531 SUBDIR+=        tests
532 .endif
533
534 .if ${MK_ZFS} != "no" || defined(ALL_MODULES)
535 SUBDIR+=        zfs
536 .endif
537
538 .if (${MACHINE_CPUARCH} == "mips" && ${MACHINE_ARCH:Mmips64} == "")
539 _hwpmc_mips24k= hwpmc_mips24k
540 _hwpmc_mips74k= hwpmc_mips74k
541 .endif
542
543 .if ${MACHINE_CPUARCH} != "aarch64" && ${MACHINE_CPUARCH} != "arm" && \
544         ${MACHINE_CPUARCH} != "mips" && ${MACHINE_CPUARCH} != "powerpc" && \
545         ${MACHINE_CPUARCH} != "riscv"
546 _syscons=       syscons
547 _vpo=           vpo
548 .endif
549
550 .if ${MACHINE_CPUARCH} != "mips"
551 # no BUS_SPACE_UNSPECIFIED
552 # No barrier instruction support (specific to this driver)
553 _sym=           sym
554 # intr_disable() is a macro, causes problems
555 .if ${MK_SOURCELESS_UCODE} != "no"
556 _cxgb=          cxgb
557 .endif
558 .endif
559
560 .if ${MACHINE_CPUARCH} == "aarch64"
561 _armv8crypto=   armv8crypto
562 _em=            em
563 .endif
564
565 .if ${MACHINE_CPUARCH} == "i386" || ${MACHINE_CPUARCH} == "amd64"
566 _agp=           agp
567 _an=            an
568 _aout=          aout
569 _bios=          bios
570 _bktr=          bktr
571 .if ${MK_SOURCELESS_UCODE} != "no"
572 _bxe=           bxe
573 .endif
574 _cardbus=       cardbus
575 _cbb=           cbb
576 _cpuctl=        cpuctl
577 _cpufreq=       cpufreq
578 _cs=            cs
579 _dpms=          dpms
580 _drm=           drm
581 _drm2=          drm2
582 _ed=            ed
583 _em=            em
584 _ena=           ena
585 _ep=            ep
586 _et=            et
587 _exca=          exca
588 _fe=            fe
589 .if ${MK_OFED} != "no" || defined(ALL_MODULES)
590 _ibcore=        ibcore
591 .endif
592 _if_ndis=       if_ndis
593 _io=            io
594 .if ${MK_OFED} != "no" || defined(ALL_MODULES)
595 _ipoib=         ipoib
596 _iser=          iser
597 .endif
598 _ix=            ix
599 _ixv=           ixv
600 _linprocfs=     linprocfs
601 _linsysfs=      linsysfs
602 _linux=         linux
603 _nctgpio=       nctgpio
604 _ndis=          ndis
605 _pccard=        pccard
606 .if ${MK_OFED} != "no" || defined(ALL_MODULES)
607 _rdma=          rdma
608 .endif
609 _safe=          safe
610 _scsi_low=      scsi_low
611 _speaker=       speaker
612 _splash=        splash
613 _sppp=          sppp
614 _vmware=        vmware
615 _vxge=          vxge
616 _wbwd=          wbwd
617 _wi=            wi
618 _xe=            xe
619
620 _aac=           aac
621 _aacraid=       aacraid
622 _acpi=          acpi
623 .if ${MK_CRYPT} != "no" || defined(ALL_MODULES)
624 _aesni=         aesni
625 .endif
626 _amd_ecc_inject=amd_ecc_inject
627 _amdsbwd=       amdsbwd
628 _amdtemp=       amdtemp
629 _arcmsr=        arcmsr
630 _asmc=          asmc
631 _bytgpio=       bytgpio
632 _ciss=          ciss
633 _chromebook_platform=   chromebook_platform
634 _cmx=           cmx
635 _coretemp=      coretemp
636 .if ${MK_SOURCELESS_HOST} != "no"
637 _hpt27xx=       hpt27xx
638 .endif
639 _hptiop=        hptiop
640 .if ${MK_SOURCELESS_HOST} != "no"
641 _hptmv=         hptmv
642 _hptnr=         hptnr
643 _hptrr=         hptrr
644 .endif
645 _hyperv=        hyperv
646 _ichwd=         ichwd
647 _ida=           ida
648 _iir=           iir
649 _intelspi=      intelspi
650 _ipmi=          ipmi
651 _ips=           ips
652 _isci=          isci
653 _ipw=           ipw
654 _iwi=           iwi
655 _iwm=           iwm
656 _iwn=           iwn
657 _ixgb=          ixgb
658 .if ${MK_SOURCELESS_UCODE} != "no"
659 _ipwfw=         ipwfw
660 _iwifw=         iwifw
661 _iwmfw=         iwmfw
662 _iwnfw=         iwnfw
663 .endif
664 _mlx4=          mlx4
665 _mlx5=          mlx5
666 .if (${MK_INET_SUPPORT} != "no" && ${MK_INET6_SUPPORT} != "no") || \
667         defined(ALL_MODULES)
668 _mlx4en=        mlx4en
669 _mlx5en=        mlx5en
670 .endif
671 .if ${MK_OFED} != "no" || defined(ALL_MODULES)
672 _mlx4ib=        mlx4ib
673 .endif
674 _mly=           mly
675 .if ${MK_OFED} != "no" || defined(ALL_MODULES)
676 _mthca=         mthca
677 .endif
678 _nfe=           nfe
679 _nvd=           nvd
680 _nvme=          nvme
681 _nvram=         nvram
682 _nxge=          nxge
683 .if ${MK_CRYPT} != "no" || defined(ALL_MODULES)
684 _padlock=       padlock
685 _padlock_rng=   padlock_rng
686 _rdrand_rng=    rdrand_rng
687 .endif
688 _s3=            s3
689 _sdhci_acpi=    sdhci_acpi
690 _tpm=           tpm
691 _twa=           twa
692 _vesa=          vesa
693 _viawd=         viawd
694 _virtio=        virtio
695 _wpi=           wpi
696 .if ${MK_SOURCELESS_UCODE} != "no"
697 _wpifw=         wpifw
698 .endif
699 _x86bios=       x86bios
700 .endif
701
702 .if ${MACHINE_CPUARCH} == "amd64"
703 _efirt=         efirt
704 _ioat=          ioat
705 _ixl=           ixl
706 _ixlv=          ixlv
707 _linux64=       linux64
708 _linux_common=  linux_common
709 _ntb=           ntb
710 _pms=           pms
711 _qlxge=         qlxge
712 _qlxgb=         qlxgb
713 .if ${MK_SOURCELESS_UCODE} != "no"
714 _qlxgbe=        qlxgbe
715 .endif
716 _qlnx=          qlnx
717 _sfxge=         sfxge
718 _sgx=           sgx
719 _sgx_linux=     sgx_linux
720
721 .if ${MK_BHYVE} != "no" || defined(ALL_MODULES)
722 _vmm=           vmm
723 .endif
724 .endif
725
726 .if ${MACHINE_CPUARCH} == "i386"
727 # XXX some of these can move to the general case when de-i386'ed
728 # XXX some of these can move now, but are untested on other architectures.
729 _3dfx=          3dfx
730 _3dfx_linux=    3dfx_linux
731 _aic=           aic
732 _apm=           apm
733 _arcnet=        arcnet
734 .if ${MK_SOURCELESS_UCODE} != "no"
735 _ce=            ce
736 .endif
737 _coff=          coff
738 .if ${MK_SOURCELESS_UCODE} != "no"
739 _cp=            cp
740 .endif
741 _elink=         elink
742 _glxiic=        glxiic
743 _glxsb=         glxsb
744 #_ibcs2=                ibcs2
745 _mse=           mse
746 _ncr=           ncr
747 _ncv=           ncv
748 _nsp=           nsp
749 _pcfclock=      pcfclock
750 _pst=           pst
751 _sbni=          sbni
752 _stg=           stg
753 _cm=            cm
754 .if ${MK_SOURCELESS_UCODE} != "no"
755 _ctau=          ctau
756 .endif
757 _dpt=           dpt
758 _ex=            ex
759 .endif
760
761 .if ${MACHINE_CPUARCH} == "arm"
762 _cfi=           cfi
763 _cpsw=          cpsw
764 .endif
765
766 .if ${MACHINE_CPUARCH} == "powerpc"
767 _agp=           agp
768 _an=            an
769 _bm=            bm
770 _cardbus=       cardbus
771 _cbb=           cbb
772 _cfi=           cfi
773 _cpufreq=       cpufreq
774 _drm=           drm
775 _exca=          exca
776 _ffec=          ffec
777 _pccard=        pccard
778 _wi=            wi
779 .endif
780
781 .if ${MACHINE_ARCH} == "powerpc64"
782 _drm2=          drm2
783 .endif
784 .if ${MACHINE_ARCH} == "powerpc64" || ${MACHINE_ARCH} == "powerpc"
785 # Don't build powermac_nvram for powerpcspe, it's never supported.
786 _nvram=         powermac_nvram
787 .endif
788
789 .if ${MACHINE_CPUARCH} == "sparc64"
790 _auxio=         auxio
791 _em=            em
792 _epic=          epic
793 .endif
794
795 .if (${MACHINE_CPUARCH} == "amd64" || ${MACHINE_ARCH} == "armv6" || \
796      ${MACHINE_CPUARCH} == "i386")
797 _cloudabi32=    cloudabi32
798 .endif
799 .if ${MACHINE_CPUARCH} == "aarch64" || ${MACHINE_CPUARCH} == "amd64"
800 _cloudabi64=    cloudabi64
801 .endif
802
803 .endif
804
805 .if ${MACHINE_ARCH} == "armv6"
806 _ffec=          ffec
807 .endif
808
809 SUBDIR+=${MODULES_EXTRA}
810
811 .for reject in ${WITHOUT_MODULES}
812 SUBDIR:= ${SUBDIR:N${reject}}
813 .endfor
814
815 # Calling kldxref(8) for each module is expensive.
816 .if !defined(NO_XREF)
817 .MAKEFLAGS+=    -DNO_XREF
818 afterinstall: .PHONY
819         @if type kldxref >/dev/null 2>&1; then \
820                 ${ECHO} kldxref ${DESTDIR}${KMODDIR}; \
821                 kldxref ${DESTDIR}${KMODDIR}; \
822         fi
823 .endif
824
825 .include "${SYSDIR}/conf/config.mk"
826
827 SUBDIR:= ${SUBDIR:u:O}
828
829 .include <bsd.subdir.mk>