kernel-module-atheros: allow to build from objects

https://jira.digi.com/browse/DEL-134

Signed-off-by: Javier Viguera <javier.viguera@digi.com>
This commit is contained in:
Javier Viguera 2013-03-05 19:19:11 +01:00
parent 9e336798c7
commit a9767aa5ff
3 changed files with 169 additions and 43 deletions

View File

@ -0,0 +1,79 @@
ATH_DRV_BASEDIR := Ath6kl_LinuxRelease/Generic_Packages/compat-wireless
ATH_FIR_BASEDIR := Ath6kl_LinuxRelease/Firmware_Package/target/AR6003/hw2.1.1
ifneq ($(KERNELRELEASE),)
ATH_DEFINES += \
-DCOMPAT_BASE_TREE="\"$(shell cat $(src)/$(ATH_DRV_BASEDIR)/compat_base_tree)\"" \
-DCOMPAT_BASE_TREE_VERSION="\"$(shell cat $(src)/$(ATH_DRV_BASEDIR)/compat_base_tree_version)\"" \
-DCOMPAT_PROJECT="\"Compat-wireless\"" \
-DCOMPAT_VERSION="\"$(shell cat $(src)/$(ATH_DRV_BASEDIR)/compat_version)\""
NOSTDINC_FLAGS := -I$(M)/$(ATH_DRV_BASEDIR)/include/ \
-include $(M)/$(ATH_DRV_BASEDIR)/include/linux/compat-2.6.h \
$(ATH_DEFINES)
include $(src)/$(ATH_DRV_BASEDIR)/config.mk
SHELL_EXPORT := PATH=$(src)/$(ATH_DRV_BASEDIR)/scripts:$${PATH} \
COMPAT_CONFIG=$(src)/$(ATH_DRV_BASEDIR)/config.mk \
CONFIG_CHECK=.$(COMPAT_CONFIG)_md5sum.txt \
COMPAT_AUTOCONF=$(src)/$(ATH_DRV_BASEDIR)/include/linux/compat_autoconf.h
dummy := $(shell $(SHELL_EXPORT) bash -c "cd $(src)/$(ATH_DRV_BASEDIR) && ./scripts/check_config.sh || true")
obj-y := $(ATH_DRV_BASEDIR)/compat/
obj-y += $(ATH_DRV_BASEDIR)/net/wireless/
obj-y += $(ATH_DRV_BASEDIR)/drivers/net/wireless/ath/ath6kl/
else #ifneq ($(KERNELRELEASE),)
## Firmware files
FIRMWARE := $(ATH_FIR_BASEDIR)/ath6kl_fw_concurrency/athtcmd_ram.bin
FIRMWARE += $(ATH_FIR_BASEDIR)/ath6kl_fw_concurrency/athwlan.bin
FIRMWARE += $(ATH_FIR_BASEDIR)/Digi_6203-6233-US.bin
FIRMWARE += $(ATH_FIR_BASEDIR)/Digi_6203-6233-World.bin
FIRMWARE += $(ATH_FIR_BASEDIR)/ath6kl_fw_concurrency/fw-4.bin
FIRMWARE += $(ATH_FIR_BASEDIR)/ath6kl_fw_concurrency/nullTestFlow.bin
FIRMWARE += $(ATH_FIR_BASEDIR)/ath6kl_fw_concurrency/utf.bin
ifeq ("$(DEL_PLATFORM)","cpx2")
FIRMWARE += $(ATH_FIR_BASEDIR)/calData_AR6103_Digi_X2e_B.bin
FIRMWARE += $(ATH_FIR_BASEDIR)/calData_AR6103_Digi_X2e_B_world.bin
endif
COPYRIGHT := $(ATH_DRV_BASEDIR)/COPYRIGHT
COMPAT_OBJS = $(filter-out $(addprefix $(ATH_DRV_BASEDIR)/compat/,built-in.o compat.mod.o compat.o), $(wildcard $(ATH_DRV_BASEDIR)/compat/*.o))
CFG802_OBJS = $(filter-out $(addprefix $(ATH_DRV_BASEDIR)/net/wireless/,built-in.o cfg80211.mod.o cfg80211.o), $(wildcard $(ATH_DRV_BASEDIR)/net/wireless/*.o))
ATH6KL_OBJS = $(filter-out $(addprefix $(ATH_DRV_BASEDIR)/drivers/net/wireless/ath/ath6kl/,built-in.o ath6kl_sdio.mod.o ath6kl_sdio.o), $(wildcard $(ATH_DRV_BASEDIR)/drivers/net/wireless/ath/ath6kl/*.o))
SRC := $(shell pwd)
all:
$(MAKE) -C $(KERNEL_SRC) M=$(SRC)
modules_install:
$(MAKE) -C $(KERNEL_SRC) M=$(SRC) modules_install
# Fix installation directory of the modules.
find $(INSTALL_MOD_PATH)/lib/modules/$(KERNEL_VERSION)/extra/Ath6kl_LinuxRelease -type f -name '*.ko' | \
xargs -I modfile mv -f modfile $(INSTALL_MOD_PATH)/lib/modules/$(KERNEL_VERSION)/extra/
rm -rf $(INSTALL_MOD_PATH)/lib/modules/*/extra/Ath6kl_LinuxRelease
# Install firmware
mkdir -p $(INSTALL_MOD_PATH)/lib/firmware/ath6k/AR6003/hw2.1.1/
install -m 0644 $(FIRMWARE) $(INSTALL_MOD_PATH)/lib/firmware/ath6k/AR6003/hw2.1.1/
tarball: TAR_DIR = $(SRC)/_tarball
tarball:
for i in $(COMPAT_OBJS) $(CFG802_OBJS) $(ATH6KL_OBJS); do \
mkdir -p $(TAR_DIR)/$$(dirname $${i}); \
install -m 0644 $${i} $(TAR_DIR)/$$(dirname $${i})/$$(basename $${i})_shipped; \
done
for i in $(FIRMWARE) $(COPYRIGHT); do \
mkdir -p $(TAR_DIR)/$$(dirname $${i}); \
install -m 0644 $${i} $(TAR_DIR)/$$(dirname $${i})/; \
done
rm -f atheros-$(DEL_PLATFORM).tar.gz && tar cz --transform 's,\(^[^/]\+/\),\1$(DEL_PLATFORM)/,' \
--numeric-owner --owner 0 --group 0 -f atheros-$(DEL_PLATFORM).tar.gz -C $(TAR_DIR) .
-rm -rf $(TAR_DIR)
endif #ifneq ($(KERNELRELEASE),)

View File

@ -0,0 +1,45 @@
ATH_DRV_BASEDIR := Ath6kl_LinuxRelease/Generic_Packages/compat-wireless
ATH_FIR_BASEDIR := Ath6kl_LinuxRelease/Firmware_Package/target/AR6003/hw2.1.1
ifneq ($(KERNELRELEASE),)
COMPAT_OBJS_SHIPPED := $(wildcard $(src)/$(ATH_DRV_BASEDIR)/compat/*.o_shipped)
CFG802_OBJS_SHIPPED := $(wildcard $(src)/$(ATH_DRV_BASEDIR)/net/wireless/*.o_shipped)
ATH6KL_OBJS_SHIPPED := $(wildcard $(src)/$(ATH_DRV_BASEDIR)/drivers/net/wireless/ath/ath6kl/*.o_shipped)
COMPAT_OBJS := $(subst $(src)/,,$(COMPAT_OBJS_SHIPPED:.o_shipped=.o))
CFG802_OBJS := $(subst $(src)/,,$(CFG802_OBJS_SHIPPED:.o_shipped=.o))
ATH6KL_OBJS := $(subst $(src)/,,$(ATH6KL_OBJS_SHIPPED:.o_shipped=.o))
obj-m := compat.o cfg80211.o ath6kl_sdio.o
compat-y := $(COMPAT_OBJS)
cfg80211-y := $(CFG802_OBJS)
ath6kl_sdio-y := $(ATH6KL_OBJS)
else #ifneq ($(KERNELRELEASE),)
## Firmware files
FIRMWARE := $(ATH_FIR_BASEDIR)/ath6kl_fw_concurrency/athtcmd_ram.bin
FIRMWARE += $(ATH_FIR_BASEDIR)/ath6kl_fw_concurrency/athwlan.bin
FIRMWARE += $(ATH_FIR_BASEDIR)/Digi_6203-6233-US.bin
FIRMWARE += $(ATH_FIR_BASEDIR)/Digi_6203-6233-World.bin
FIRMWARE += $(ATH_FIR_BASEDIR)/ath6kl_fw_concurrency/fw-4.bin
FIRMWARE += $(ATH_FIR_BASEDIR)/ath6kl_fw_concurrency/nullTestFlow.bin
FIRMWARE += $(ATH_FIR_BASEDIR)/ath6kl_fw_concurrency/utf.bin
ifeq ("$(DEL_PLATFORM)","cpx2")
FIRMWARE += $(ATH_FIR_BASEDIR)/calData_AR6103_Digi_X2e_B.bin
FIRMWARE += $(ATH_FIR_BASEDIR)/calData_AR6103_Digi_X2e_B_world.bin
endif
SRC := $(shell pwd)
all:
$(MAKE) -C $(KERNEL_SRC) M=$(SRC)
modules_install:
$(MAKE) -C $(KERNEL_SRC) M=$(SRC) modules_install
# Install firmware
mkdir -p $(INSTALL_MOD_PATH)/lib/firmware/ath6k/AR6003/hw2.1.1/
install -m 0644 $(FIRMWARE) $(INSTALL_MOD_PATH)/lib/firmware/ath6k/AR6003/hw2.1.1/
endif #ifneq ($(KERNELRELEASE),)

View File

@ -6,58 +6,60 @@ inherit module
PR = "r0"
ATHEROS_BUILD_SRC ?= "1"
SRCREV = "${AUTOREV}"
SRC_URI = "${DIGI_LOG_GIT}linux-modules/atheros.git;protocol=git;branch=refs/heads/master \
SRC_URI_git = " \
${DIGI_LOG_GIT}linux-modules/atheros.git;protocol=git;branch=refs/heads/master \
file://Makefile.git \
"
SRC_URI_obj = " \
file://atheros-${MACHINE}.tar.gz \
file://Makefile.obj \
"
SRC_URI = "${@base_conditional('ATHEROS_BUILD_SRC', '1' , '${SRC_URI_git}', '${SRC_URI_obj}', d)}"
SRC_URI += " \
file://atheros \
file://atheros.conf \
"
S = "${WORKDIR}/git"
FIRMWARE_S = "${S}/Ath6kl_LinuxRelease/Firmware_Package/target/AR6003/hw2.1.1"
S = "${@base_conditional('ATHEROS_BUILD_SRC', '1' , '${WORKDIR}/git', '${WORKDIR}/${MACHINE}', d)}"
EXTRA_OEMAKE = "-C ${STAGING_KERNEL_DIR}"
EXTRAMAKEFLAGS = "M=${S} CONFIG_DEL_KMOD_ATHEROS=y KLIB_BUILD=${STAGING_KERNEL_DIR}"
EXTRA_OEMAKE = "DEL_PLATFORM=${MACHINE} KLIB_BUILD=${STAGING_KERNEL_DIR}"
module_do_compile() {
unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
oe_runmake KERNEL_PATH=${STAGING_KERNEL_DIR} \
KERNEL_SRC=${STAGING_KERNEL_DIR} \
CC="${KERNEL_CC}" LD="${KERNEL_LD}" \
AR="${KERNEL_AR}" \
${EXTRAMAKEFLAGS} \
${MAKE_TARGETS}
}
module_do_install() {
unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
oe_runmake DEPMOD=echo INSTALL_MOD_PATH="${D}" \
KERNEL_SRC=${STAGING_KERNEL_DIR} \
CC="${KERNEL_CC}" LD="${KERNEL_LD}" \
${EXTRAMAKEFLAGS} \
modules_install
do_configure_prepend() {
[ "${ATHEROS_BUILD_SRC}" = "1" ] && MK_SUFFIX=".git" || MK_SUFFIX=".obj"
cp ${WORKDIR}/Makefile${MK_SUFFIX} ${S}/Makefile
}
do_install_append() {
install -d ${D}${sysconfdir}/network/if-pre-up.d
install -m 0755 ${WORKDIR}/atheros ${D}${sysconfdir}/network/if-pre-up.d/
install -d ${D}/etc/modprobe.d
install -m 0755 ${WORKDIR}/atheros.conf ${D}${sysconfdir}/modprobe.d/
install -d ${D}/lib/firmware/ath6k/AR6003/hw2.1.1
install -m 0755 ${FIRMWARE_S}/ath6kl_fw_concurrency/athtcmd_ram.bin ${D}/lib/firmware/ath6k/AR6003/hw2.1.1/
install -m 0755 ${FIRMWARE_S}/ath6kl_fw_concurrency/athwlan.bin ${D}/lib/firmware/ath6k/AR6003/hw2.1.1/
install -m 0755 ${FIRMWARE_S}/ath6kl_fw_concurrency/fw-4.bin ${D}/lib/firmware/ath6k/AR6003/hw2.1.1/
install -m 0755 ${FIRMWARE_S}/ath6kl_fw_concurrency/nullTestFlow.bin ${D}/lib/firmware/ath6k/AR6003/hw2.1.1/
install -m 0755 ${FIRMWARE_S}/ath6kl_fw_concurrency/utf.bin ${D}/lib/firmware/ath6k/AR6003/hw2.1.1/
install -m 0755 ${FIRMWARE_S}/Digi_6203-6233-US.bin ${D}/lib/firmware/ath6k/AR6003/hw2.1.1/
install -m 0755 ${FIRMWARE_S}/Digi_6203-6233-World.bin ${D}/lib/firmware/ath6k/AR6003/hw2.1.1/
install -d ${D}${sysconfdir}/modprobe.d
install -m 0644 ${WORKDIR}/atheros.conf ${D}${sysconfdir}/modprobe.d/
}
FILES_${PN} += " /lib/firmware/ath6k/AR6003/hw2.1.1/athtcmd_ram.bin \
FILES_${PN} += " \
/lib/firmware/ath6k/AR6003/hw2.1.1/athtcmd_ram.bin \
/lib/firmware/ath6k/AR6003/hw2.1.1/athwlan.bin \
/lib/firmware/ath6k/AR6003/hw2.1.1/Digi_6203-6233-US.bin \
/lib/firmware/ath6k/AR6003/hw2.1.1/Digi_6203-6233-World.bin \
/lib/firmware/ath6k/AR6003/hw2.1.1/fw-4.bin \
/lib/firmware/ath6k/AR6003/hw2.1.1/nullTestFlow.bin \
/lib/firmware/ath6k/AR6003/hw2.1.1/utf.bin \
/lib/firmware/ath6k/AR6003/hw2.1.1/Digi_6203-6233-US.bin \
/lib/firmware/ath6k/AR6003/hw2.1.1/Digi_6203-6233-World.bin "
"
# Deploy objects tarball if building from sources
do_deploy() {
if [ "${ATHEROS_BUILD_SRC}" = "1" ]; then
oe_runmake tarball
install -d ${DEPLOY_DIR_IMAGE}
cp ${S}/atheros-${MACHINE}.tar.gz ${DEPLOY_DIR_IMAGE}/
fi
}
addtask deploy before do_build after do_install
PACKAGE_ARCH = "${MACHINE_ARCH}"
COMPATIBLE_MACHINE = "(ccardimx28js|cpx2)"