mirror of
https://github.com/openwrt/openwrt.git
synced 2025-02-15 15:12:17 +00:00
Removed due to being unused with 1f7a03a70603, but now required for the ar7 FRITZ!Box. Could be used for the ARV7519RW22 as well, for which the image generation was disabled due to a stock u-boot issue with kernel bigger than 2 MByte. The code is combination of the ath79 and ramips okli loader. Signed-off-by: Mathias Kresin <dev@kresin.me>
126 lines
3.1 KiB
Makefile
126 lines
3.1 KiB
Makefile
#
|
|
# Makefile for the LZMA compressed kernel loader for
|
|
# Atheros AR7XXX/AR9XXX based boards
|
|
#
|
|
# Copyright (C) 2011 Gabor Juhos <juhosg@openwrt.org>
|
|
#
|
|
# Some parts of this file was based on the OpenWrt specific lzma-loader
|
|
# for the BCM47xx and ADM5120 based boards:
|
|
# Copyright (C) 2004 Manuel Novoa III (mjn3@codepoet.org)
|
|
# Copyright (C) 2005 Mineharu Takahara <mtakahar@yahoo.com>
|
|
# Copyright (C) 2005 by Oleg I. Vdovikin <oleg@cs.msu.su>
|
|
#
|
|
# This program is free software; you can redistribute it and/or modify it
|
|
# under the terms of the GNU General Public License version 2 as published
|
|
# by the Free Software Foundation.
|
|
#
|
|
|
|
LOADADDR :=
|
|
LZMA_TEXT_START :=
|
|
LOADER_DATA :=
|
|
KERNEL_MAGIC :=
|
|
BOARD :=
|
|
FLASH_START :=
|
|
FLASH_OFFS :=
|
|
FLASH_MAX :=
|
|
PLATFORM :=
|
|
CACHE_FLAGS :=
|
|
|
|
CC := $(CROSS_COMPILE)gcc
|
|
LD := $(CROSS_COMPILE)ld
|
|
OBJCOPY := $(CROSS_COMPILE)objcopy
|
|
OBJDUMP := $(CROSS_COMPILE)objdump
|
|
include $(PLATFORM).mk
|
|
|
|
BIN_FLAGS := -O binary -R .reginfo -R .note -R .comment -R .mdebug \
|
|
-R .MIPS.abiflags -S
|
|
|
|
CFLAGS = -D__KERNEL__ -Wall -Wstrict-prototypes -Wno-trigraphs -Os \
|
|
-fno-strict-aliasing -fno-common -fomit-frame-pointer -G 0 \
|
|
-mno-abicalls -fno-pic -ffunction-sections -pipe -mlong-calls \
|
|
-fno-common -ffreestanding -fhonour-copts -nostartfiles \
|
|
-mabi=32 -march=mips32r2 \
|
|
-Wa,-32 -Wa,-march=mips32r2 -Wa,-mips32r2 -Wa,--trap
|
|
CFLAGS += -D_LZMA_PROB32
|
|
CFLAGS += -DARCH=$(PLATFORM)
|
|
CFLAGS += -flto
|
|
|
|
ASFLAGS = $(CFLAGS) -D__ASSEMBLY__
|
|
|
|
LDFLAGS = -static -Wl,--gc-sections -Wl,-no-warn-mismatch
|
|
LDFLAGS += -Wl,-e,startup -T loader.lds -Wl,-Ttext,$(LZMA_TEXT_START)
|
|
LDFLAGS += -flto -fwhole-program
|
|
|
|
O_FORMAT = $(shell $(OBJDUMP) -i | head -2 | grep elf32)
|
|
|
|
OBJECTS := head.o loader.o cache.o board-$(PLATFORM).o printf.o LzmaDecode.o
|
|
|
|
include $(PLATFORM).mk
|
|
CFLAGS+=$(CACHE_FLAGS)
|
|
ASFLAGS+=$(CACHE_FLAGS)
|
|
|
|
ifneq ($(strip $(LOADER_DATA)),)
|
|
OBJECTS += data.o
|
|
CFLAGS += -DLZMA_WRAPPER=1 -DLOADADDR=$(LOADADDR)
|
|
endif
|
|
|
|
ifneq ($(strip $(KERNEL_MAGIC)),)
|
|
CFLAGS += -DCONFIG_KERNEL_MAGIC=$(KERNEL_MAGIC)
|
|
endif
|
|
|
|
ifneq ($(strip $(KERNEL_CMDLINE)),)
|
|
CFLAGS += -DCONFIG_KERNEL_CMDLINE='"$(KERNEL_CMDLINE)"'
|
|
endif
|
|
|
|
ifneq ($(strip $(FLASH_START)),)
|
|
CFLAGS += -DCONFIG_FLASH_START=$(FLASH_START)
|
|
endif
|
|
ifneq ($(strip $(FLASH_OFFS)),)
|
|
CFLAGS += -DCONFIG_FLASH_OFFS=$(FLASH_OFFS)
|
|
endif
|
|
|
|
ifneq ($(strip $(FLASH_MAX)),)
|
|
CFLAGS += -DCONFIG_FLASH_MAX=$(FLASH_MAX)
|
|
endif
|
|
|
|
BOARD_DEF := $(shell echo $(strip $(BOARD)) | tr a-z A-Z | tr - _)
|
|
ifneq ($(BOARD_DEF),)
|
|
CFLAGS += -DCONFIG_BOARD_$(BOARD_DEF)
|
|
endif
|
|
|
|
all: loader.elf
|
|
|
|
# Don't build dependencies, this may die if $(CC) isn't gcc
|
|
dep:
|
|
|
|
install:
|
|
|
|
%.o : %.c
|
|
$(CC) $(CFLAGS) -c -o $@ $<
|
|
|
|
%.o : %.S
|
|
$(CC) $(ASFLAGS) -c -o $@ $<
|
|
|
|
data.o: $(LOADER_DATA)
|
|
$(LD) -r -b binary --oformat $(O_FORMAT) -T lzma-data.lds -o $@ $<
|
|
|
|
loader: $(OBJECTS)
|
|
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(OBJECTS)
|
|
|
|
loader.bin: loader
|
|
$(OBJCOPY) $(BIN_FLAGS) $< $@
|
|
|
|
loader2.o: loader.bin
|
|
$(LD) -r -b binary --oformat $(O_FORMAT) -o $@ $<
|
|
|
|
loader.elf: loader2.o
|
|
$(LD) -z max-page-size=0x1000 -e startup -T loader2.lds -Ttext $(LOADADDR) -o $@ $<
|
|
|
|
mrproper: clean
|
|
|
|
clean:
|
|
rm -f loader *.elf *.bin *.o
|
|
|
|
|
|
|