2 # Copyright (C) 2006 OpenWrt.org
4 # This is free software, licensed under the GNU General Public License v2.
5 # See /LICENSE for more information.
8 RAMSIZE
= 0x00100000 # 1MB
9 LOADADDR
= 0x80400000 # RAM start + 4M
10 KERNEL_ENTRY
= 0x80001000
13 CROSS_COMPILE
= mips-linux-
15 OBJCOPY
:= $(CROSS_COMPILE
)objcopy
-O binary
-R .reginfo
-R .note
-R .comment
-R .mdebug
-S
16 CFLAGS
:= -fno-builtin
-Os
-G
0 -ffunction-sections
-mno-abicalls
-fno-pic
-mabi
=32 -march
=mips32
-Wa
,-32 -Wa
,-march
=mips32
-Wa
,-mips32
-Wa
,--trap
-Wall
-DRAMSTART
=${RAMSTART} -DRAMSIZE
=${RAMSIZE} -DKERNEL_ENTRY
=${KERNEL_ENTRY} -D_LZMA_IN_CB
17 ifeq ($(IMAGE_COPY
),1)
18 CFLAGS
+= -DLOADADDR
=${LOADADDR} -DIMAGE_COPY
=1
22 $(CPP
) $(CFLAGS
) $< -o
$*.s
24 $(CC
) $(CFLAGS
) -c
$< -o
$*.o
26 $(CC
) $(CFLAGS
) -c
$< -o
$*.o
28 CC
= $(CROSS_COMPILE
)gcc
29 LD
= $(CROSS_COMPILE
)ld
30 OBJDUMP
= $(CROSS_COMPILE
)objdump
32 O_FORMAT
= $(shell $(OBJDUMP
) -i | head
-2 | grep elf32
)
34 # Drop some uninteresting sections in the kernel.
35 # This is only relevant for ELF kernels but doesn't hurt a.out
36 drop-sections
= .reginfo .mdebug .comment
37 strip-flags
= $(addprefix --remove-section
=,$(drop-sections
))
42 sed
-e
's,@LOADADDR@,$(LOADADDR),g' -e
's,@ENTRY@,_start,g' $< >$@
44 kernel.o
: vmlinux.lzma lzma.lds
45 $(LD
) -r
-b binary
--oformat
$(O_FORMAT
) -o
$@
$<
47 ifeq ($(IMAGE_COPY
),1)
48 LOADER_ENTRY ?
= $(KERNEL_ENTRY
)
49 lzma.o
: decompress.o LzmaDecode.o kernel.o
50 sed
-e
's,@LOADADDR@,$(LOADADDR),g' -e
's,@ENTRY@,entry,g' lzma.lds.in
>lzma-stage2.lds
51 $(LD
) -static
--no-warn-mismatch
-e entry
-Tlzma-stage2.lds
-o temp-
$@
$^
52 $(OBJCOPY
) temp-
$@ lzma.tmp
53 @echo
"SECTIONS { .data : { code_start = .; *(.data) code_stop = .; }}" > lzma-data.lds
54 $(LD
) -no-warn-mismatch
-T lzma-data.lds
-r
-o
$@
-b binary lzma.tmp
--oformat
$(O_FORMAT
)
56 lzma.elf
: start.o lzma.o
57 sed
-e
's,@LOADADDR@,$(LOADER_ENTRY),g' lzma-copy.lds.in
>lzma-copy.lds
58 $(LD
) -s
-Tlzma-copy.lds
-o
$@
$^
60 lzma.elf
: start.o decompress.o LzmaDecode.o kernel.o
61 $(LD
) -s
-Tlzma.lds
-o
$@
$^
65 rm -f
*.o lzma.elf
*.tmp
*.lds