On Thursday 03 May 2007, Sam Ravnborg wrote: > On Thu, May 03, 2007 at 09:17:15AM +0200, Christian Hesse wrote: > > On Thursday 03 May 2007, Sam Ravnborg wrote: > > > On Thu, May 03, 2007 at 06:25:11AM +0200, Sam Ravnborg wrote: > > > > On Thu, May 03, 2007 at 12:43:43AM +0200, Christian Hesse wrote: > > > > > Hi James, hi everybody, > > > > > > > > > > playing with iwlwifi I try to patch it into the kernel and to build > > > > > it from there. But I have a problem with the build system. > > > > > > > > > > The file drivers/net/wireless/mac80211/Makefile contains one single > > > > > line: > > > > > > > > > > obj-$(CONFIG_IWLWIFI) += iwlwifi/ > > > > > > > > > > When CONFIG_IWLWIFI=m in scripts/Makefile.lib line 29 the target is > > > > > filtered as it ends with a slash. That results in > > > > > drivers/net/wireless/mac80211/built-in.o not being built and the > > > > > build process breaks with an error. What is the correct way to > > > > > handle this? Why are targets ending with a slash filtered? > > > > > > > > Looks buggy. I will take a look tonight. > > > > > > After some coffee... > > > > > > Line 29 in Kbuild.include find all modules and a directory is not a > > > module. In line 26 in same file the directory iwlwifi is included in > > > the list of directories to visit. > > > So there is something else going on. > > > > In scripts/Kbuild.include line 26 is empty and line 29 is a comment... Do > > I look at the wrong place? > > I looked at lxr.linux.no - so probarly an outdated version. > > > I still believe in my version: built-in.o is built if any of $(obj-y) > > $(obj-m) $(obj-n) $(obj-) $(lib-target) contains anything in > > scripts/Makefile.build line 77. As scripts/Makefile.lib line 29 filters > > the only target the object file is not built. > > I have applied your patch and tried it out. > The reason for the problem is the placeholder directory mac80211. > kbuild will not waste time building built-in.o for a directory where > it is not necessary. So for mac80211 no built-in.o is created since there > is no need. The only reference is to a module.
Agreed that it is not really needed. But if you don't build it you should not try to link it later... > The quick-and-dirty workaround is to add a single > obj-n := xx > in mac80211/Makefile and kbuild is happy again. > > I could teach kbuild to create built-in.o also in the case > where we refer to a subdirectory only. But then we would end up with a > built-in.o in all directories where we have a kbuild MAkefile (almost) and > that is not desireable. I would prefer to teach it not to link object files that are not built. > So I recommend the proposed workaround for now with a proper comment. Ok, thanks for your help. -- Regards, Chris
signature.asc
Description: This is a digitally signed message part.