Hi Valdis,
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.
On Fri, Apr 26, 2013 at 12:48 PM, <Valdis.Kletnieks@xxxxxx> wrote:
On Fri, 26 Apr 2013 11:11:09 -0700, Henrique Rodrigues said:Generally considered ugly by the mainstream kernel.
> I have the one .c source file that I want to create multiple kernel modules
> out of it by setting macros using the makefile.
I agree. I'm actually trying to split the code that was given to me into three modules with minimal effort (without having to rewrite new code).
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.
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't compile anything.
The way this would usually be done is splitting your module into 3
> The idea is that if -DMODULE1 is set, I'll build module1.ko and if
> -DMODULE2 is set, I'll build module 2.
parts - one common, one for device 1 and one for device 2.
Then something like this (cut-n-paste from drivers/net/wireless/hostap/Makefile:
hostap-y := hostap_80211_rx.o hostap_80211_tx.o hostap_ap.o hostap_info.o \
hostap_ioctl.o hostap_main.o hostap_proc.o
obj-$(CONFIG_HOSTAP) += hostap.o
obj-$(CONFIG_HOSTAP_CS) += hostap_cs.o
obj-$(CONFIG_HOSTAP_PLX) += hostap_plx.o
obj-$(CONFIG_HOSTAP_PCI) += hostap_pci.o
Which will build 3 different modules (_cs, _plx, _pci) using the common C files
and 1 device-specific C file for each one.
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies