Date: Tue, 28 Aug 2012 17:13:58 -0700 From: Adrian Chadd <adrian@freebsd.org> To: Warner Losh <imp@bsdimp.com> Cc: freebsd-arch@freebsd.org Subject: Re: Request for help: how do teach module building about kernel options? Message-ID: <CAJ-Vmok2Yk2MPs6XggyCz87v_Vj6pt1HyJqBDBQOK86Yz=Mhhg@mail.gmail.com> In-Reply-To: <EBBFC2E5-034E-42EA-9D95-69454832470D@bsdimp.com> References: <CAJ-Vmomk4JTnZ0avRqdte9Th5F7G7x9eWTcwcd%2BT4HrcE0Mgxw@mail.gmail.com> <15285562-E9BA-431B-A2C1-D0547DFB2663@bsdimp.com> <201201030924.44493.jhb@freebsd.org> <CAJ-VmondtfzqRhD5nFZuHYJOc91sKM4BKhkVZsq0w4bgtDTFvw@mail.gmail.com> <B25F6CF4-6FBF-4E47-8832-AD4830E61728@bsdimp.com> <CAJ-VmonfMnMMmK=zzmaE=u8uRT_yxK06WP4%2BcVzGfBdSaXAtqQ@mail.gmail.com> <EBBFC2E5-034E-42EA-9D95-69454832470D@bsdimp.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On 3 January 2012 15:31, Warner Losh <imp@bsdimp.com> wrote: > > On Jan 3, 2012, at 12:06 PM, Adrian Chadd wrote: > >> On 3 January 2012 10:56, Warner Losh <imp@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. > # >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-Vmok2Yk2MPs6XggyCz87v_Vj6pt1HyJqBDBQOK86Yz=Mhhg>