summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--package/linux-firmware/linux-firmware.mk25
1 files changed, 21 insertions, 4 deletions
diff --git a/package/linux-firmware/linux-firmware.mk b/package/linux-firmware/linux-firmware.mk
index 71c86117f1..5a68138c89 100644
--- a/package/linux-firmware/linux-firmware.mk
+++ b/package/linux-firmware/linux-firmware.mk
@@ -293,6 +293,23 @@ LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.broadcom_bcm43xx
endif
ifneq ($(LINUX_FIRMWARE_FILES),)
+define LINUX_FIRMWARE_INSTALL_FILES
+ $(TAR) c -C $(@D) $(sort $(LINUX_FIRMWARE_FILES)) | \
+ $(TAR) x -C $(TARGET_DIR)/lib/firmware
+endef
+endif
+
+ifneq ($(LINUX_FIRMWARE_DIRS),)
+# We need to rm-rf the destination directory to avoid copying
+# into it in itself, should we re-install the package.
+define LINUX_FIRMWARE_INSTALL_DIRS
+ $(foreach d,$(LINUX_FIRMWARE_DIRS), \
+ rm -rf $(TARGET_DIR)/lib/firmware/$(d); \
+ cp -a $(@D)/$(d) $(TARGET_DIR)/lib/firmware/$(d)$(sep))
+endef
+endif
+
+ifneq ($(LINUX_FIRMWARE_FILES)$(LINUX_FIRMWARE_DIRS),)
# Most firmware files are under a proprietary license, so no need to
# repeat it for every selections above. Those firmwares that have more
@@ -308,12 +325,12 @@ LINUX_FIRMWARE_ALL_LICENSE_FILES += WHENCE
# duplicates
LINUX_FIRMWARE_LICENSE_FILES = $(sort $(LINUX_FIRMWARE_ALL_LICENSE_FILES))
+endif
+
define LINUX_FIRMWARE_INSTALL_TARGET_CMDS
mkdir -p $(TARGET_DIR)/lib/firmware
- $(TAR) c -C $(@D) $(sort $(LINUX_FIRMWARE_FILES)) | \
- $(TAR) x -C $(TARGET_DIR)/lib/firmware
+ $(LINUX_FIRMWARE_INSTALL_FILES)
+ $(LINUX_FIRMWARE_INSTALL_DIRS)
endef
-endif
-
$(eval $(generic-package))
OpenPOWER on IntegriCloud