brcm63xx: add working lzma-loader and use it for initramfs
[openwrt/openwrt.git] / target / linux / brcm63xx / image / lzma-loader / Makefile
index 5dd6f50977f42045391ab5d4424d3503425f4ae7..8d36691cb5a4cf0e1e0b907918613af111319700 100644 (file)
@@ -1,5 +1,6 @@
-# 
-# Copyright (C) 2006 OpenWrt.org
+#
+# Copyright (C) 2011 OpenWrt.org
+# Copyright (C) 2011 Gabor Juhos <juhosg@openwrt.org>
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -7,27 +8,55 @@
 
 include $(TOPDIR)/rules.mk
 
+LZMA_TEXT_START        := 0x80a00000
+LOADER         := loader.bin
+LOADER_NAME    := $(basename $(notdir $(LOADER)))
+LOADER_DATA    :=
+TARGET_DIR     :=
+FLASH_OFFS     :=
+FLASH_MAX      :=
+
+ifeq ($(TARGET_DIR),)
+TARGET_DIR     := $(KDIR)
+endif
+
+LOADER_BIN     := $(TARGET_DIR)/$(LOADER_NAME).bin
+LOADER_GZ      := $(TARGET_DIR)/$(LOADER_NAME).gz
+LOADER_ELF     := $(TARGET_DIR)/$(LOADER_NAME).elf
+
 PKG_NAME := lzma-loader
-PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
+PKG_BUILD_DIR := $(KDIR)/$(PKG_NAME)
+
+.PHONY : loader-compile loader.bin loader.elf loader.gz
 
 $(PKG_BUILD_DIR)/.prepared:
        mkdir $(PKG_BUILD_DIR)
        $(CP) ./src/* $(PKG_BUILD_DIR)/
        touch $@
 
-$(PKG_BUILD_DIR)/loader.gz: $(PKG_BUILD_DIR)/.prepared
-       $(MAKE) -C $(PKG_BUILD_DIR) CC="$(TARGET_CC)" \
-               LD="$(TARGET_CROSS)ld" CROSS_COMPILE="$(TARGET_CROSS)"
+loader-compile: $(PKG_BUILD_DIR)/.prepared
+       $(MAKE) -C $(PKG_BUILD_DIR) CROSS_COMPILE="$(TARGET_CROSS)" \
+               LZMA_TEXT_START=$(LZMA_TEXT_START) \
+               LOADER_DATA=$(LOADER_DATA) \
+               FLASH_OFFS=$(FLASH_OFFS) \
+               FLASH_MAX=$(FLASH_MAX) \
+               clean all
+
+loader.gz: $(PKG_BUILD_DIR)/loader.bin
+       gzip -nc9 $< > $(LOADER_GZ)
 
-download: 
+loader.elf: $(PKG_BUILD_DIR)/loader.elf
+       $(CP) $< $(LOADER_ELF)
+
+loader.bin: $(PKG_BUILD_DIR)/loader.bin
+       $(CP) $< $(LOADER_BIN)
+
+download:
 prepare: $(PKG_BUILD_DIR)/.prepared
-compile: $(PKG_BUILD_DIR)/loader.gz
-install:
+compile: loader-compile
 
-ifneq ($(TARGET),)
-install: compile
-       $(CP) $(PKG_BUILD_DIR)/loader.gz $(PKG_BUILD_DIR)/loader.elf $(TARGET)/
-endif
+install:
 
 clean:
        rm -rf $(PKG_BUILD_DIR)
+