Increase speed of compat-wireless build - CONFIG_COMPAT_WIRELESS_* changes
authorFelix Fietkau <nbd@openwrt.org>
Thu, 20 Aug 2009 17:13:50 +0000 (10:13 -0700)
committerLuis R. Rodriguez <lrodriguez@atheros.com>
Thu, 20 Aug 2009 17:15:38 +0000 (10:15 -0700)
$(shell) calls are pretty expensive in makefiles, avoid so many
calls by doing them only once to set the CONFIG_COMPAT_WIRELESS_*
variables and then using these to check the kernel version later in
config.mk

This speeds up the compat-wireless build process.

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
config.mk

index 4fb2ab28a3b28bd24a4f77b8e86cf89596db0494..b482b681e0bd69732a592700c683333e9cd6235d 100644 (file)
--- a/config.mk
+++ b/config.mk
@@ -17,15 +17,19 @@ ifeq ($(CONFIG_MAC80211),y)
 $(error "ERROR: you have MAC80211 compiled into the kernel, CONFIG_MAC80211=y, as such you cannot replace its mac80211 driver. You need this set to CONFIG_MAC80211=m. If you are using Fedora upgrade your kernel as later version should this set as modular. For further information on Fedora see https://bugzilla.redhat.com/show_bug.cgi?id=470143. If you are using your own kernel recompile it and make mac80211 modular")
 endif
 
+
 # We will warn when you don't have MQ support or NET_SCHED enabled.
 #
 # We could consider just quiting if MQ and NET_SCHED is disabled
 # as I suspect all users of this package want 802.11e (WME) and
 # 802.11n (HT) support.
-ifeq ($(shell test -e $(KLIB_BUILD)/Makefile && echo yes),yes)
-KERNEL_SUBLEVEL = $(shell $(MAKE) -C $(KLIB_BUILD) kernelversion | sed -n 's/^2\.6\.\([0-9]\+\).*/\1/p')
+ifneq ($(wildcard $(KLIB_BUILD)/Makefile),)
+COMPAT_LATEST_VERSION = 32
+KERNEL_SUBLEVEL := $(shell $(MAKE) -C $(KLIB_BUILD) kernelversion | sed -n 's/^2\.6\.\([0-9]\+\).*/\1/p')
+COMPAT_VERSIONS := $(shell I=$(COMPAT_LATEST_VERSION); while [ "$$I" -gt $(KERNEL_SUBLEVEL) ]; do echo $$I; I=$$(($$I - 1)); done)
+$(foreach ver,$(COMPAT_VERSIONS),$(eval CONFIG_COMPAT_WIRELESS_$(ver)=y))
 
-ifeq ($(shell test $(KERNEL_SUBLEVEL) -lt 25 && echo yes),yes)
+ifdef CONFIG_COMPAT_WIRELESS_25
 $(error "ERROR: You should use compat-wireless-2.6-old for older kernels, this one is for kernels >= 2.6.25")
 endif
 
@@ -34,56 +38,10 @@ $(error "ERROR: your kernel has CONFIG_CFG80211=y, you should have it CONFIG_CFG
 endif
 
 
-# Compat wireless compat-2.6.2x.c files gets selected here
-
-ifeq ($(shell test $(KERNEL_SUBLEVEL) -le 21 && echo yes),yes)
-CONFIG_COMPAT_WIRELESS_22=y
-endif
-
-ifeq ($(shell test $(KERNEL_SUBLEVEL) -le 22 && echo yes),yes)
-CONFIG_COMPAT_WIRELESS_23=y
-endif
-
-ifeq ($(shell test $(KERNEL_SUBLEVEL) -le 23 && echo yes),yes)
-CONFIG_COMPAT_WIRELESS_24=y
-endif
-
-ifeq ($(shell test $(KERNEL_SUBLEVEL) -le 24 && echo yes),yes)
-CONFIG_COMPAT_WIRELESS_25=y
-endif
-
-ifeq ($(shell test $(KERNEL_SUBLEVEL) -le 25 && echo yes),yes)
-CONFIG_COMPAT_WIRELESS_26=y
-endif
-
-ifeq ($(shell test $(KERNEL_SUBLEVEL) -le 26 && echo yes),yes)
-CONFIG_COMPAT_WIRELESS_27=y
-endif
-
-ifeq ($(shell test $(KERNEL_SUBLEVEL) -le 27 && echo yes),yes)
-CONFIG_COMPAT_WIRELESS_28=y
-endif
-
-ifeq ($(shell test $(KERNEL_SUBLEVEL) -le 28 && echo yes),yes)
-CONFIG_COMPAT_WIRELESS_29=y
-endif
-
-ifeq ($(shell test $(KERNEL_SUBLEVEL) -le 29 && echo yes),yes)
-CONFIG_COMPAT_WIRELESS_30=y
-endif
-
-ifeq ($(shell test $(KERNEL_SUBLEVEL) -le 30 && echo yes),yes)
-CONFIG_COMPAT_WIRELESS_31=y
-endif
-
-ifeq ($(shell test $(KERNEL_SUBLEVEL) -le 31 && echo yes),yes)
-CONFIG_COMPAT_WIRELESS_32=y
-endif
-
 # 2.6.27 has FTRACE_DYNAMIC borked, so we will complain if
 # you have it enabled, otherwise you will very likely run into
 # a kernel panic.
-ifeq ($(shell test $(KERNEL_SUBLEVEL) -eq 27 && echo yes),yes)
+ifeq ($(KERNEL_SUBLEVEL),27)
 ifeq ($(CONFIG_DYNAMIC_FTRACE),y)
 $(error "ERROR: Your 2.6.27 kernel has CONFIG_DYNAMIC_FTRACE, please upgrade your distribution kernel as newer ones should not have this enabled (and if so report a bug) or remove this warning if you know what you are doing")
 endif
@@ -291,7 +249,7 @@ endif
 
 ifneq ($(CONFIG_PCMCIA),)
 
-ifeq ($(shell test $(KERNEL_SUBLEVEL) -le 26 && echo yes),yes)
+ifdef CONFIG_COMPAT_WIRELESS_27
 CONFIG_LIBERTAS=n
 CONFIG_LIBERTAS_CS=n
 else
@@ -327,7 +285,7 @@ CONFIG_RTL8187=m
 
 CONFIG_AT76C50X_USB=m
 
-ifeq ($(shell test $(KERNEL_SUBLEVEL) -ge 28 && echo yes),yes)
+ifndef CONFIG_COMPAT_WIRELESS_28
 CONFIG_AR9170_USB=m
 CONFIG_AR9170_LEDS=y
 endif
@@ -343,7 +301,7 @@ CONFIG_RT73USB=m
 NEED_RT2X00_FIRMWARE=y
 endif
 
-ifeq ($(shell test $(KERNEL_SUBLEVEL) -le 26 && echo yes),yes)
+ifdef CONFIG_COMPAT_WIRELESS_27
 CONFIG_LIBERTAS_THINFIRM_USB=n
 CONFIG_LIBERTAS_USB=n
 NEED_LIBERTAS=n
@@ -360,7 +318,7 @@ ifneq ($(CONFIG_SPI_MASTER),)
 CONFIG_WL1251=m
 CONFIG_P54_SPI=m
 
-ifeq ($(shell test $(KERNEL_SUBLEVEL) -le 26 && echo yes),yes)
+ifdef CONFIG_COMPAT_WIRELESS_27
 CONFIG_LIBERTAS_SPI=n
 NEED_LIBERTAS=n
 else
@@ -372,7 +330,7 @@ endif # end of SPI driver list
 
 ifneq ($(CONFIG_MMC),)
 
-ifeq ($(shell test $(KERNEL_SUBLEVEL) -le 26 && echo yes),yes)
+ifdef CONFIG_COMPAT_WIRELESS_27
 CONFIG_LIBERTAS_SDIO=n
 NEED_LIBERTAS=n
 else
@@ -382,7 +340,7 @@ endif
 
 # Activate iwmc3200wifi support only on kernel >= 2.6.29.
 # iwmc3200wifi uses new netdev_ops api no supported by old kernel.
-ifeq ($(shell test $(KERNEL_SUBLEVEL) -ge 29 && echo yes),yes)
+ifndef CONFIG_COMPAT_WIRELESS_29
 CONFIG_IWM=m
 # CONFIG_IWM_DEBUG=y
 endif
@@ -425,7 +383,7 @@ CONFIG_SSB=m
 CONFIG_SSB_SPROM=y
 # CONFIG_SSB_DEBUG=y
 
-ifeq ($(shell test $(KERNEL_SUBLEVEL) -le 26 && echo yes),yes)
+ifdef CONFIG_COMPAT_WIRELESS_27
 CONFIG_LIBERTAS=n
 else
 ifeq ($(NEED_LIBERTAS),y)
@@ -437,7 +395,7 @@ endif
 
 # We need the backported rfkill module on kernel < 2.6.31.
 # In more recent kernel versions use the in kernel rfkill module.
-ifeq ($(shell test $(KERNEL_SUBLEVEL) -le 30 && echo yes),yes)
+ifdef CONFIG_COMPAT_WIRELESS_31
 CONFIG_RFKILL_BACKPORT=m
 CONFIG_RFKILL_BACKPORT_LEDS=y
 CONFIG_RFKILL_BACKPORT_INPUT=y