From a9767aa5ff33fa7f40c027598704bc23b1ff47f7 Mon Sep 17 00:00:00 2001 From: Javier Viguera Date: Tue, 5 Mar 2013 19:19:11 +0100 Subject: [PATCH] kernel-module-atheros: allow to build from objects https://jira.digi.com/browse/DEL-134 Signed-off-by: Javier Viguera --- .../ccardimx28js/Makefile.git | 79 +++++++++++++++++ .../ccardimx28js/Makefile.obj | 45 ++++++++++ .../kernel-module-atheros_git.bb | 88 ++++++++++--------- 3 files changed, 169 insertions(+), 43 deletions(-) create mode 100644 meta-digi-arm/recipes-kernel/kernel-module-atheros/ccardimx28js/Makefile.git create mode 100644 meta-digi-arm/recipes-kernel/kernel-module-atheros/ccardimx28js/Makefile.obj diff --git a/meta-digi-arm/recipes-kernel/kernel-module-atheros/ccardimx28js/Makefile.git b/meta-digi-arm/recipes-kernel/kernel-module-atheros/ccardimx28js/Makefile.git new file mode 100644 index 000000000..c4f9c7e7f --- /dev/null +++ b/meta-digi-arm/recipes-kernel/kernel-module-atheros/ccardimx28js/Makefile.git @@ -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),) diff --git a/meta-digi-arm/recipes-kernel/kernel-module-atheros/ccardimx28js/Makefile.obj b/meta-digi-arm/recipes-kernel/kernel-module-atheros/ccardimx28js/Makefile.obj new file mode 100644 index 000000000..7d2ce7429 --- /dev/null +++ b/meta-digi-arm/recipes-kernel/kernel-module-atheros/ccardimx28js/Makefile.obj @@ -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),) diff --git a/meta-digi-arm/recipes-kernel/kernel-module-atheros/kernel-module-atheros_git.bb b/meta-digi-arm/recipes-kernel/kernel-module-atheros/kernel-module-atheros_git.bb index 1682d94b9..7b9aed46e 100644 --- a/meta-digi-arm/recipes-kernel/kernel-module-atheros/kernel-module-atheros_git.bb +++ b/meta-digi-arm/recipes-kernel/kernel-module-atheros/kernel-module-atheros_git.bb @@ -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 \ - file://atheros \ - file://atheros.conf \ - " +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 \ + " -S = "${WORKDIR}/git" -FIRMWARE_S = "${S}/Ath6kl_LinuxRelease/Firmware_Package/target/AR6003/hw2.1.1" +SRC_URI = "${@base_conditional('ATHEROS_BUILD_SRC', '1' , '${SRC_URI_git}', '${SRC_URI_obj}', d)}" +SRC_URI += " \ + file://atheros \ + file://atheros.conf \ + " -EXTRA_OEMAKE = "-C ${STAGING_KERNEL_DIR}" -EXTRAMAKEFLAGS = "M=${S} CONFIG_DEL_KMOD_ATHEROS=y KLIB_BUILD=${STAGING_KERNEL_DIR}" +S = "${@base_conditional('ATHEROS_BUILD_SRC', '1' , '${WORKDIR}/git', '${WORKDIR}/${MACHINE}', d)}" -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} -} +EXTRA_OEMAKE = "DEL_PLATFORM=${MACHINE} KLIB_BUILD=${STAGING_KERNEL_DIR}" -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}/network/if-pre-up.d + install -m 0755 ${WORKDIR}/atheros ${D}${sysconfdir}/network/if-pre-up.d/ + 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 \ - /lib/firmware/ath6k/AR6003/hw2.1.1/athwlan.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 " +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 \ + " +# 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)"