2 # Makefile for the LZMA compressed kernel loader for
3 # Atheros AR7XXX/AR9XXX based boards
5 # Copyright (C) 2020 Álvaro Fernández Rojas <noltari@gmail.com>
6 # Copyright (C) 2014 Jonas Gorski <jogo@openwrt.org>
7 # Copyright (C) 2011 Gabor Juhos <juhosg@openwrt.org>
9 # Some parts of this file was based on the OpenWrt specific lzma-loader
10 # for the BCM47xx and ADM5120 based boards:
11 # Copyright (C) 2004 Manuel Novoa III (mjn3@codepoet.org)
12 # Copyright (C) 2005 Mineharu Takahara <mtakahar@yahoo.com>
13 # Copyright (C) 2005 by Oleg I. Vdovikin <oleg@cs.msu.su>
15 # This program is free software; you can redistribute it and/or modify it
16 # under the terms of the GNU General Public License version 2 as published
17 # by the Free Software Foundation.
22 LZMA_TEXT_START
:= 0x80a00000
25 CC
:= $(CROSS_COMPILE
)gcc
26 LD
:= $(CROSS_COMPILE
)ld
27 OBJCOPY
:= $(CROSS_COMPILE
)objcopy
28 OBJDUMP
:= $(CROSS_COMPILE
)objdump
30 BIN_FLAGS
:= -O binary
-R .reginfo
-R .note
-R .comment
-R .mdebug \
33 CFLAGS
= -D__KERNEL__
-Wall
-Wstrict-prototypes
-Wno-trigraphs
-Os \
34 -fno-strict-aliasing
-fno-common
-fomit-frame-pointer
-G
0 \
35 -mno-abicalls
-fno-pic
-ffunction-sections
-pipe \
36 -ffreestanding
-fhonour-copts \
37 -mabi
=32 -march
=mips32 \
38 -Wa
,-32 -Wa
,-march
=mips32
-Wa
,-mips32
-Wa
,--trap
39 CFLAGS
+= -D_LZMA_PROB32
40 CFLAGS
+= -DUART_BASE
=$(UART_BASE
)
42 ASFLAGS
= $(CFLAGS
) -D__ASSEMBLY__
44 LDFLAGS
= -static
--gc-sections
-no-warn-mismatch
45 LDFLAGS
+= -e startup
-T loader.lds
-Ttext
$(LZMA_TEXT_START
)
47 O_FORMAT
= $(shell $(OBJDUMP
) -i | head
-2 | grep elf32
)
49 OBJECTS
:= head.o loader.o cache.o board.o printf.o LzmaDecode.o
51 ifneq ($(strip $(LOADER_DATA
)),)
53 CFLAGS
+= -DLZMA_WRAPPER
=1 -DLOADADDR
=$(KERNEL_ADDR
)
59 # Don't build dependencies, this may die if $(CC) isn't gcc
65 $(CC
) $(CFLAGS
) -c
-o
$@
$<
68 $(CC
) $(ASFLAGS
) -c
-o
$@
$<
70 data.o
: $(LOADER_DATA
)
71 $(LD
) -r
-b binary
--oformat
$(O_FORMAT
) -T lzma-data.lds
-o
$@
$<
74 $(LD
) $(LDFLAGS
) -o
$@
$(OBJECTS
)
77 $(OBJCOPY
) $(BIN_FLAGS
) $< $@
80 $(LD
) -r
-b binary
--oformat
$(O_FORMAT
) -o
$@
$<
83 $(LD
) -e startup
-T loader2.lds
-Ttext
$(LOADER_ADDR
) -o
$@
$<
88 rm -f loader
*.elf
*.bin
*.o