2 # Makefile for the LZMA compressed kernel loader for
3 # Atheros AR7XXX/AR9XXX based boards
5 # Copyright (C) 2011 Gabor Juhos <juhosg@openwrt.org>
7 # Some parts of this file was based on the OpenWrt specific lzma-loader
8 # for the BCM47xx and ADM5120 based boards:
9 # Copyright (C) 2004 Manuel Novoa III (mjn3@codepoet.org)
10 # Copyright (C) 2005 Mineharu Takahara <mtakahar@yahoo.com>
11 # Copyright (C) 2005 by Oleg I. Vdovikin <oleg@cs.msu.su>
13 # This program is free software; you can redistribute it and/or modify it
14 # under the terms of the GNU General Public License version 2 as published
15 # by the Free Software Foundation.
29 CC
:= $(CROSS_COMPILE
)gcc
30 LD
:= $(CROSS_COMPILE
)ld
31 OBJCOPY
:= $(CROSS_COMPILE
)objcopy
32 OBJDUMP
:= $(CROSS_COMPILE
)objdump
33 include $(PLATFORM
).mk
35 BIN_FLAGS
:= -O binary
-R .reginfo
-R .note
-R .comment
-R .mdebug \
38 CFLAGS
= -D__KERNEL__
-Wall
-Wstrict-prototypes
-Wno-trigraphs
-Os \
39 -fno-strict-aliasing
-fno-common
-fomit-frame-pointer
-G
0 \
40 -mno-abicalls
-fno-pic
-ffunction-sections
-pipe
-mlong-calls \
41 -fno-common
-ffreestanding
-fhonour-copts
-nostartfiles \
42 -mabi
=32 -march
=mips32r2 \
43 -Wa
,-32 -Wa
,-march
=mips32r2
-Wa
,-mips32r2
-Wa
,--trap
44 CFLAGS
+= -D_LZMA_PROB32
45 CFLAGS
+= -DARCH
=$(PLATFORM
)
48 ASFLAGS
= $(CFLAGS
) -D__ASSEMBLY__
50 LDFLAGS
= -static
-Wl
,--gc-sections
-Wl
,-no-warn-mismatch
51 LDFLAGS
+= -Wl
,-e
,startup
-T loader.lds
-Wl
,-Ttext
,$(LZMA_TEXT_START
)
52 LDFLAGS
+= -flto
-fwhole-program
54 O_FORMAT
= $(shell $(OBJDUMP
) -i | head
-2 | grep elf32
)
56 OBJECTS
:= head.o loader.o cache.o board-
$(PLATFORM
).o printf.o LzmaDecode.o
58 include $(PLATFORM
).mk
59 CFLAGS
+=$(CACHE_FLAGS
)
60 ASFLAGS
+=$(CACHE_FLAGS
)
62 ifneq ($(strip $(LOADER_DATA
)),)
64 CFLAGS
+= -DLZMA_WRAPPER
=1 -DLOADADDR
=$(LOADADDR
)
67 ifneq ($(strip $(KERNEL_MAGIC
)),)
68 CFLAGS
+= -DCONFIG_KERNEL_MAGIC
=$(KERNEL_MAGIC
)
71 ifneq ($(strip $(KERNEL_CMDLINE
)),)
72 CFLAGS
+= -DCONFIG_KERNEL_CMDLINE
='"$(KERNEL_CMDLINE)"'
75 ifneq ($(strip $(FLASH_START
)),)
76 CFLAGS
+= -DCONFIG_FLASH_START
=$(FLASH_START
)
78 ifneq ($(strip $(FLASH_OFFS
)),)
79 CFLAGS
+= -DCONFIG_FLASH_OFFS
=$(FLASH_OFFS
)
82 ifneq ($(strip $(FLASH_MAX
)),)
83 CFLAGS
+= -DCONFIG_FLASH_MAX
=$(FLASH_MAX
)
86 BOARD_DEF
:= $(shell echo
$(strip $(BOARD
)) | tr a-z A-Z | tr
- _
)
88 CFLAGS
+= -DCONFIG_BOARD_
$(BOARD_DEF
)
93 # Don't build dependencies, this may die if $(CC) isn't gcc
99 $(CC
) $(CFLAGS
) -c
-o
$@
$<
102 $(CC
) $(ASFLAGS
) -c
-o
$@
$<
104 data.o
: $(LOADER_DATA
)
105 $(LD
) -r
-b binary
--oformat
$(O_FORMAT
) -T lzma-data.lds
-o
$@
$<
108 $(CC
) $(CFLAGS
) $(LDFLAGS
) -o
$@
$(OBJECTS
)
111 $(OBJCOPY
) $(BIN_FLAGS
) $< $@
113 loader2.o
: loader.bin
114 $(LD
) -r
-b binary
--oformat
$(O_FORMAT
) -o
$@
$<
116 loader.elf
: loader2.o
117 $(LD
) -z max-page-size
=0x1000 -e startup
-T loader2.lds
-Ttext
$(LOADADDR
) -o
$@
$<
122 rm -f loader
*.elf
*.bin
*.o