Request for help: how do teach module building about kernel
options?
Adrian Chadd
adrian at freebsd.org
Wed Aug 29 00:13:59 UTC 2012
On 3 January 2012 15:31, Warner Losh <imp at bsdimp.com> wrote:
>
> On Jan 3, 2012, at 12:06 PM, Adrian Chadd wrote:
>
>> On 3 January 2012 10:56, Warner Losh <imp at bsdimp.com> wrote:
>>
>>>> So how about we do up say, the KERNOPTS field first, which would be a
>>>> big win. Then KERNDEVICES too, if that's possible?
>>>
>>> I'd only planned on doing KERNOPTS :)
>>
>> KERNOPTS would be fine for now. That at least gets me out of my
>> initial issues with wlan/ath building and the fun in handling options.
>
> Please find enclosed a proposed patch. This will not build, of course, since there's no file in the tree mesh_baby.c, so if you have IEEE80211_SUPPORT_MESH defined, it won't work. It keys off the actual define.
>
> It even works with devices (which define DEV_xxx), but only if you have it in the options file like isa (eg, you need to tell config to generate it).
>
> Comments?
Hiya,
I'm now facing this particular issue again for embedded builds.
I now understand what you're describing. I wonder though if it's worth
doing a slightly larger scale re-architecture.
Ie:
* teach configure to write out opt_<xxx>.mk, which sets up the
makefile options the same as the .h file options;
* split kmod.mk into kmod-pre.mk and kmod-post.mk;
* teach kmod-pre.mk to walk a list (say, OPT_MKSRCS?) and link them in
as needed, as well as linking in the opt_<xxx>.mk file as well;
* .. then have it include the contents of each one as needed.
That way kmod-pre.mk could pre-populate the options early on.
If patching config is scary, we could do what you've suggested in
kmod-pre.mk for now; just as long as I can populate another list (say
OPT_SRCS) of opt_*.h files for it to extract options out of.
What do you think?
Adrian
>
> Warner
>
> Index: conf/kmod.mk
> ===================================================================
> --- conf/kmod.mk (revision 229436)
> +++ conf/kmod.mk (working copy)
> @@ -324,7 +324,16 @@
> ${_src}:
> ln -sf ${KERNBUILDDIR}/${_src} ${.TARGET}
> .endif
> +.if exists(${KERNBUILDDIR}/${_src})
> +_opts!=cut -d' ' -f 2 ${KERNBUILDDIR}/${_src}
> +.for _o in ${_opts}
> +KERNOPT_${_o}=1
> +.if defined(SRCS_${_o})
> +SRCS+=${SRCS_${_o}}
> +.endif
> .endfor
> +.endif
> +.endfor
> .else
> .for _src in ${SRCS:Mopt_*.h}
> CLEANFILES+= ${_src}
> Index: modules/ath/Makefile
> ===================================================================
> --- modules/ath/Makefile (revision 229436)
> +++ modules/ath/Makefile (working copy)
> @@ -41,6 +41,7 @@
> SRCS+= ah_osdep.c ah.c ah_regdomain.c ah_eeprom_v3.c
> SRCS+= device_if.h bus_if.h pci_if.h opt_inet.h opt_ath.h opt_ah.h opt_wlan.h
>
> +SRCS_IEEE80211_SUPPORT_MESH=mesh_baby.c
> #
> # AR5210 support; these are first generation 11a-only devices.
> #
>
More information about the freebsd-arch
mailing list