make kernel module packaging code reusable and use it in madwifi

SVN-Revision: 5189
This commit is contained in:
Felix Fietkau 2006-10-17 16:13:10 +00:00
parent 92ced53400
commit 547b127d7a
5 changed files with 104 additions and 99 deletions

View file

@ -59,6 +59,69 @@ else
LINUX_KERNEL:=$(KERNEL_BUILD_DIR)/vmlinux
endif
define KernelPackage/Defaults
FILES:=
KCONFIG:=m
AUTOLOAD:=
endef
define ModuleAutoLoad
export modules=; \
add_module() { \
mkdir -p $(2)/etc/modules.d; \
echo "$$$$$$$$2" > $(2)/etc/modules.d/$$$$$$$$1-$(1); \
modules="$$$$$$$${modules:+$$$$$$$$modules }$$$$$$$$1-$(1)"; \
}; \
$(3) \
if [ -n "$$$$$$$$modules" ]; then \
mkdir -p $(2)/etc/modules.d; \
echo "#!/bin/sh" > $(2)/CONTROL/postinst; \
echo "[ -z \"\$$$$$$$$IPKG_INSTROOT\" ] || exit 0" >> $(2)/CONTROL/postinst; \
echo ". /etc/functions.sh" >> $(2)/CONTROL/postinst; \
echo "load_modules $$$$$$$$modules" >> $(2)/CONTROL/postinst; \
chmod 0755 $(2)/CONTROL/postinst; \
fi
endef
define KernelPackage
NAME:=$(1)
$(eval $(call KernelPackage/Defaults))
$(eval $(call KernelPackage/$(1)))
$(eval $(call KernelPackage/$(1)/$(KERNEL)))
$(eval $(call KernelPackage/$(1)/$(BOARD)-$(KERNEL)))
define Package/kmod-$(1)
TITLE:=$(TITLE)
SECTION:=kernel
CATEGORY:=Kernel modules
DEFAULT:=m
DESCRIPTION:=$(DESCRIPTION)
EXTRA_DEPENDS:='kernel (=$(PKG_VERSION)-$(PKG_RELEASE))'
$(call KernelPackage/$(1))
$(call KernelPackage/$(1)/$(KERNEL))
$(call KernelPackage/$(1)/$(BOARD)-$(KERNEL))
endef
ifeq ($(findstring m,$(KCONFIG)),m)
ifneq ($(strip $(FILES)),)
define Package/kmod-$(1)/install
mkdir -p $$(1)/lib/modules/$(LINUX_VERSION)
$(CP) $$(FILES) $$(1)/lib/modules/$(LINUX_VERSION)/
$(call ModuleAutoLoad,$(1),$$(1),$(AUTOLOAD))
$(call KernelPackage/$(1)/install,$$(1))
endef
endif
endif
$$(eval $$(call BuildPackage,kmod-$(1)))
endef
define AutoLoad
add_module $(1) "$(2)";
endef
# FIXME: remove this crap
define KMOD_template
ifeq ($$(strip $(4)),)

View file

@ -26,68 +26,11 @@ define Build/Prepare
mkdir -p $(PKG_BUILD_DIR)
endef
define Build/Configure
endef
define Build/Compile
endef
define KernelPackage/Defaults
FILES:=
KCONFIG:=m
AUTOLOAD:=
endef
define ModuleAutoLoad
export modules=; \
add_module() { \
mkdir -p $(2)/etc/modules.d; \
echo "$$$$$$$$2" > $(2)/etc/modules.d/$$$$$$$$1-$(1); \
modules="$$$$$$$${modules:+$$$$$$$$modules }$$$$$$$$1-$(1)"; \
}; \
$(3) \
if [ -n "$$$$$$$$modules" ]; then \
mkdir -p $(2)/etc/modules.d; \
echo "#!/bin/sh" > $(2)/CONTROL/postinst; \
echo "[ -z \"\$$$$$$$$IPKG_INSTROOT\" ] || exit 0" >> $(2)/CONTROL/postinst; \
echo ". /etc/functions.sh" >> $(2)/CONTROL/postinst; \
echo "load_modules $$$$$$$$modules" >> $(2)/CONTROL/postinst; \
chmod 0755 $(2)/CONTROL/postinst; \
fi
endef
define KernelPackage
NAME:=$(1)
$(eval $(call KernelPackage/Defaults))
$(eval $(call KernelPackage/$(1)))
$(eval $(call KernelPackage/$(1)/$(KERNEL)))
$(eval $(call KernelPackage/$(1)/$(BOARD)-$(KERNEL)))
define Package/kmod-$(1)
TITLE:=$(TITLE)
SECTION:=kernel
CATEGORY:=Kernel modules
DEFAULT:=m
DESCRIPTION:=$(DESCRIPTION)
EXTRA_DEPENDS:='kernel (=$(PKG_VERSION)-$(PKG_RELEASE))'
$(call KernelPackage/$(1))
$(call KernelPackage/$(1)/$(KERNEL))
$(call KernelPackage/$(1)/$(BOARD)-$(KERNEL))
endef
ifeq ($(findstring m,$(KCONFIG)),m)
ifneq ($(strip $(FILES)),)
define Package/kmod-$(1)/install
mkdir -p $$(1)/lib/modules/$(LINUX_VERSION)
$(CP) $$(FILES) $$(1)/lib/modules/$(LINUX_VERSION)/
$(call ModuleAutoLoad,$(1),$$(1),$(AUTOLOAD))
endef
endif
endif
$$(eval $$(call BuildPackage,kmod-$(1)))
endef
define AutoLoad
add_module $(1) "$(2)";
endef
include $(TOPDIR)/target/linux/*/modules.mk
include ./modules/*.mk

View file

@ -22,17 +22,6 @@ PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
include $(INCLUDE_DIR)/package.mk
define Package/kmod-madwifi
SECTION:=kernel
CATEGORY:=Kernel drivers
DEFAULT:=y if LINUX_2_6_BRCM || LINUX_2_6_ARUBA || LINUX_2_4_AR531X || LINUX_2_6_XSCALE, m if ALL
TITLE:=Driver for Atheros wireless chipsets
DESCRIPTION:=\
This package contains a driver for Atheros 802.11a/b/g chipsets.
URL:=http://madwifi.org/
VERSION:=$(LINUX_VERSION)+$(PKG_VERSION)-$(BOARD)-$(PKG_RELEASE)
endef
RATE_CONTROL:=sample
ifeq ($(ARCH),mips)
@ -67,6 +56,41 @@ ifeq ($(findstring PCI,$(BUS)),PCI)
BUS_MODULES+=$(PKG_BUILD_DIR)/ath/ath_pci.$(LINUX_KMOD_SUFFIX)
endif
MADWIFI_AUTOLOAD:= \
wlan \
wlan_scan_ap \
wlan_scan_sta \
ath_hal \
ath_rate_$(RATE_CONTROL) \
wlan_acl \
wlan_ccmp \
wlan_tkip \
wlan_wep \
wlan_xauth
ifeq ($(findstring AHB,$(BUS)),AHB)
MADWIFI_AUTOLOAD += ath_ahb
endif
ifeq ($(findstring PCI,$(BUS)),PCI)
MADWIFI_AUTOLOAD += ath_pci
endif
define KernelPackage/madwifi
SUBMENU:=Network Devices
DEFAULT:=y if LINUX_2_6_BRCM || LINUX_2_6_ARUBA || LINUX_2_4_AR531X || LINUX_2_6_XSCALE, m if ALL
TITLE:=Driver for Atheros wireless chipsets
DESCRIPTION:=\
This package contains a driver for Atheros 802.11a/b/g chipsets.
URL:=http://madwifi.org/
VERSION:=$(LINUX_VERSION)+$(PKG_VERSION)-$(BOARD)-$(PKG_RELEASE)
FILES:= \
$(PKG_BUILD_DIR)/ath/ath_hal.$(LINUX_KMOD_SUFFIX) \
$(BUS_MODULES) \
$(PKG_BUILD_DIR)/ath_rate/$(RATE_CONTROL)/ath_rate_$(RATE_CONTROL).$(LINUX_KMOD_SUFFIX) \
$(PKG_BUILD_DIR)/net80211/wlan*.$(LINUX_KMOD_SUFFIX)
AUTOLOAD:=$(call AutoLoad,50,$(MADWIFI_AUTOLOAD))
endef
MADWIFI_MAKEOPTS= -C $(PKG_BUILD_DIR) \
PATH="$(TARGET_PATH)" \
ARCH="$(LINUX_KARCH)" \
@ -107,27 +131,12 @@ define Build/UninstallDev
rm -rf $(STAGING_DIR)/usr/include/madwifi
endef
define Package/kmod-madwifi/install
mkdir -p $(1)/etc/modules.d
define KernelPackage/madwifi/install
mkdir -p $(1)/etc/init.d
mkdir -p $(1)/lib/modules/$(LINUX_VERSION)
mkdir -p $(1)/usr/sbin
install -m0644 ./files/madwifi.modules $(1)/etc/modules.d/20-madwifi
echo ath_rate_$(RATE_CONTROL) >> $(1)/etc/modules.d/20-madwifi
ifeq ($(findstring AHB,$(BUS)),AHB)
echo ath_ahb >> $(1)/etc/modules.d/20-madwifi
endif
ifeq ($(findstring PCI,$(BUS)),PCI)
echo "ath_pci autocreate=none" >> $(1)/etc/modules.d/20-madwifi
endif
install -m0755 ./files/madwifi.init $(1)/etc/init.d/madwifi
$(CP) \
$(PKG_BUILD_DIR)/ath/ath_hal.$(LINUX_KMOD_SUFFIX) \
$(BUS_MODULES) \
$(PKG_BUILD_DIR)/ath_rate/$(RATE_CONTROL)/ath_rate_$(RATE_CONTROL).$(LINUX_KMOD_SUFFIX) \
$(PKG_BUILD_DIR)/net80211/wlan*.$(LINUX_KMOD_SUFFIX) \
$(1)/lib/modules/$(LINUX_VERSION)/
$(CP) $(PKG_BUILD_DIR)/tools/{madwifi_multi,80211debug,80211stats,athchans,athctrl,athdebug,athkey,athstats,wlanconfig} $(1)/usr/sbin/
endef
$(eval $(call BuildPackage,kmod-madwifi))
$(eval $(call KernelPackage,madwifi))

View file

@ -1,10 +0,0 @@
wlan
wlan_scan_ap
wlan_scan_sta
ath_hal
ath_rate_sample
wlan_acl
wlan_ccmp
wlan_tkip
wlan_wep
wlan_xauth

View file

@ -6,7 +6,7 @@ diff -urN madwifi-0.9.2.old/ath/if_ath.c madwifi-0.9.2.dev/ath/if_ath.c
HAL_STATUS status;
int error = 0, i;
- int autocreatemode = IEEE80211_M_STA;
+ int autocreatemode = IEEE80211_M_HOSTAP;
+ int autocreatemode = -1;
u_int8_t csz;
sc->devid = devid;