ath9k: fix a locking issue
[openwrt.git] / include / kernel.mk
index 4744e09..1af072d 100644 (file)
@@ -1,5 +1,5 @@
 # 
-# Copyright (C) 2006 OpenWrt.org
+# Copyright (C) 2006-2011 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -47,7 +47,7 @@ else
 
   LINUX_SOURCE:=linux-$(LINUX_VERSION).tar.bz2
   TESTING:=$(if $(findstring -rc,$(LINUX_VERSION)),/testing,)
-  ifeq ($(call qstrip,$(CONFIG_EXTERNAL_KERNEL_TREE)),)
+  ifeq ($(call qstrip,$(CONFIG_EXTERNAL_KERNEL_TREE))$(call qstrip,$(CONFIG_KERNEL_GIT_CLONE_URI)),)
     ifeq ($(word 1,$(subst ., ,$(KERNEL_BASE))),3)
       LINUX_SITE:=@KERNEL/linux/kernel/v3.x$(TESTING)
     else
@@ -82,16 +82,19 @@ define ModuleAutoLoad
                mods="$$$$$$$$2"; \
                boot="$$$$$$$$3"; \
                shift 3; \
-               mkdir -p $(2)/etc/modules.d; \
-               ( \
-                       [ "$$$$$$$$boot" = "1" ] && { \
-                               echo '# May be required for rootfs' ; \
-                       } ; \
-                       for mod in $$$$$$$$mods; do \
-                               echo "$$$$$$$$mod"; \
-                       done \
-               ) > $(2)/etc/modules.d/$$$$$$$$priority-$(1); \
-               modules="$$$$$$$${modules:+$$$$$$$$modules }$$$$$$$$priority-$(1)"; \
+               for mod in $$$$$$$$mods; do \
+                       if [ -e $(2)/$(MODULES_SUBDIR)/$$$$$$$$mod.ko ]; then \
+                               mkdir -p $(2)/etc/modules.d; \
+                               echo "$$$$$$$$mod" >> $(2)/etc/modules.d/$$$$$$$$priority-$(1); \
+                       fi; \
+               done; \
+               if [ -e $(2)/etc/modules.d/$$$$$$$$priority-$(1) ]; then \
+                       if [ "$$$$$$$$boot" = "1" ]; then \
+                               mkdir -p $(2)/etc/modules-boot.d; \
+                               ln -s ../modules.d/$$$$$$$$priority-$(1) $(2)/etc/modules-boot.d/; \
+                       fi; \
+                       modules="$$$$$$$${modules:+$$$$$$$$modules }$$$$$$$$priority-$(1)"; \
+               fi; \
        }; \
        $(3) \
        if [ -n "$$$$$$$$modules" ]; then \
@@ -147,11 +150,24 @@ $(call KernelPackage/$(1)/config)
 
   $(call KernelPackage/depends)
 
-  ifneq ($(if $(filter-out %=y %=n %=m,$(KCONFIG)),$(filter m,$(foreach c,$(filter-out %=y %=n %=m,$(KCONFIG)),$($(c)))),.),)
+  ifneq ($(if $(filter-out %=y %=n %=m,$(KCONFIG)),$(filter m y,$(foreach c,$(filter-out %=y %=n %=m,$(KCONFIG)),$($(c)))),.),)
     ifneq ($(strip $(FILES)),)
       define Package/kmod-$(1)/install
-                 mkdir -p $$(1)/$(MODULES_SUBDIR)
-                 $(CP) -L $$(FILES) $$(1)/$(MODULES_SUBDIR)/
+                 @for mod in $$(FILES); do \
+                       if [ -e $$$$$$$$mod ]; then \
+                               mkdir -p $$(1)/$(MODULES_SUBDIR) ; \
+                               $(CP) -L $$$$$$$$mod $$(1)/$(MODULES_SUBDIR)/ ; \
+                       elif [ -e "$(LINUX_DIR)/modules.builtin" ]; then \
+                               if grep -q "$$$$$$$${mod##$(LINUX_DIR)/}" "$(LINUX_DIR)/modules.builtin"; then \
+                                       echo "NOTICE: module '$$$$$$$$mod' is built-in."; \
+                               else \
+                                       echo "ERROR: module '$$$$$$$$mod' is missing."; \
+                                       exit 1; \
+                               fi; \
+                       else \
+                               echo "WARNING: module '$$$$$$$$mod' missing and modules.builtin not available, assuming built-in."; \
+                       fi; \
+                 done;
                  $(call ModuleAutoLoad,$(1),$$(1),$(AUTOLOAD))
                  $(call KernelPackage/$(1)/install,$$(1))
       endef
@@ -186,6 +202,6 @@ CompareKernelPatchVer=$(if $(call kernel_version_cmp,-$(2),$(1),$(3)),1,0)
 kernel_patchver_gt=$(call kernel_version_cmp,-gt,$(KERNEL_PATCHVER),$(1))
 kernel_patchver_ge=$(call kernel_version_cmp,-ge,$(KERNEL_PATCHVER),$(1))
 kernel_patchver_eq=$(call kernel_version_cmp,-eq,$(KERNEL_PATCHVER),$(1))
-kernel_patchver_le=$(call kernel_version_cmp,-lt,$(KERNEL_PATCHVER),$(1))
-kernel_patchver_lt=$(call kernel_version_cmp,-le,$(KERNEL_PATCHVER),$(1))
+kernel_patchver_le=$(call kernel_version_cmp,-le,$(KERNEL_PATCHVER),$(1))
+kernel_patchver_lt=$(call kernel_version_cmp,-lt,$(KERNEL_PATCHVER),$(1))
 
This page took 0.038359 seconds and 4 git commands to generate.