<div dir="ltr">I figured it out.<div><br></div><div>The problem I was having is that the statement &quot;<span style="font-family:arial,sans-serif;font-size:13px">module1: override obj-m := module1.o&quot; in my make target is not setting obj-m globally. Then, when the kernel build system comes into action (when the &quot;make -C&quot; command is invoked), the obj-m variable isn&#39;t set.</span><div>

<font face="arial, sans-serif"><br></font></div><div><font face="arial, sans-serif">This is probably more a make related question, but since it is in kernel build context, I thought I could get some advice from kernel folks.<br>

</font><div><span style="font-family:arial,sans-serif;font-size:13px"><br></span></div><div style><span style="font-family:arial,sans-serif;font-size:13px">Thanks,</span></div><div style><span style="font-family:arial,sans-serif;font-size:13px">-Henrique</span></div>

</div></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Apr 26, 2013 at 2:18 PM, Henrique Rodrigues <span dir="ltr">&lt;<a href="mailto:henriquesilvar@gmail.com" target="_blank">henriquesilvar@gmail.com</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi Valdis,<div><div class="gmail_extra"><br><div class="gmail_quote"><div class="im">On Fri, Apr 26, 2013 at 12:48 PM,  <span dir="ltr">&lt;<a href="mailto:Valdis.Kletnieks@vt.edu" target="_blank">Valdis.Kletnieks@vt.edu</a>&gt;</span> wrote:<br>


<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div>On Fri, 26 Apr 2013 11:11:09 -0700, Henrique Rodrigues said:<br>



<br>
&gt; I have the one .c source file that I want to create multiple kernel modules<br>
&gt; out of it by setting macros using the makefile.<br>
<br>
</div>Generally considered ugly by the mainstream kernel.<br></blockquote><div><br></div></div><div>I agree. I&#39;m actually trying to split the code that was given to me into three modules with minimal effort (without having to rewrite new code).</div>


<div>The behavior of the code is defined by lots of #if macros in it, and I wanted to take advantage of that by rewriting only the makefile.</div><div><br></div><div>The problem is that if I set the obj-m variable within a make target (instead of defining it globally), the kernel build system doesn&#39;t compile anything. </div>

<div class="im">
<div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div><br>
&gt; The idea is that if -DMODULE1 is set, I&#39;ll build module1.ko and if<br>
&gt; -DMODULE2 is set, I&#39;ll build module 2.<br>
<br>
</div>The way this would usually be done is splitting your module into 3<br>
parts - one common, one for device 1 and one for device 2.<br>
<br>
Then something like this (cut-n-paste from drivers/net/wireless/hostap/Makefile:<br>
<br>
hostap-y := hostap_80211_rx.o hostap_80211_tx.o hostap_ap.o hostap_info.o \<br>
            hostap_ioctl.o hostap_main.o hostap_proc.o<br>
obj-$(CONFIG_HOSTAP) += hostap.o<br>
<br>
obj-$(CONFIG_HOSTAP_CS) += hostap_cs.o<br>
obj-$(CONFIG_HOSTAP_PLX) += hostap_plx.o<br>
obj-$(CONFIG_HOSTAP_PCI) += hostap_pci.o<br>
<br>
Which will build 3 different modules (_cs, _plx, _pci) using the common C files<br>
and 1 device-specific C file for each one.<br>
</blockquote></div></div><div class="gmail_extra"><br></div>I checked the hostap code and it looks like each file (_cs, _plx, _pci) defines a different module. I believe that is not exactly what I wanted, but I understand that it works.</div>


<div class="gmail_extra"><br></div><div class="gmail_extra">Thanks,<span class="HOEnZb"><font color="#888888"><br>-- <br>Henrique Rodrigues<br><div><a href="http://www.dcc.ufmg.br/~hsr" target="_blank">http://www.dcc.ufmg.br/~hsr</a></div>


</font></span></div></div></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br>Henrique Rodrigues<br><div><a href="http://www.dcc.ufmg.br/~hsr" target="_blank">http://www.dcc.ufmg.br/~hsr</a></div>
</div>