3 # Copyright (C) 2010-2011 Hector Martin "marcan" <hector@marcansoft.com>
5 # This code is licensed to you under the terms of the GNU GPL, version 2;
6 # see file COPYING or http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
8 include ..
/common
/ppu.mak
13 STUB_LDFLAGS
:= $(LDFLAGS
) -Wl
,--gc-sections
-Wl
,-T
,uncompress
/stub.
ld
14 LDFLAGS
+= -Wl
,--gc-sections
15 STUB_CFLAGS
:= $(CFLAGS
) -Os
-Wall
-ffunction-sections
-I.
-Iuncompress
/
16 CFLAGS
+= -Os
-Wall
-I.
-ffunction-sections
-fdata-sections \
17 -Ilwip
/src
/include -Ilwip
/src
/include/ipv4
-Ilwip
/arch
/include -Ilibfdt
18 ASFLAGS
= -D__ASSEMBLY__
-I.
23 $(addprefix lwip
/src
/core
/,\
24 dhcp.o init.o mem.o memp.o netif.o pbuf.o raw.o stats.o sys.o \
25 tcp.o tcp_in.o tcp_out.o udp.o
) \
26 $(addprefix lwip
/src
/core
/ipv4
/,\
27 autoip.o icmp.o ip.o ip_addr.o ip_frag.o inet_chksum.o
) \
28 $(addprefix lwip
/src
/api
/,\
29 tcpip.o err.o netifapi.o api_lib.o api_msg.o sockets.o
) \
30 lwip
/src
/netif
/etharp.o
32 FDT_OBJS
= $(addprefix libfdt
/,\
33 fdt.o fdt_ro.o fdt_rw.o fdt_strerror.o fdt_sw.o fdt_wip.o
)
35 CORE_OBJS
= main.o debug.o hvcall.o string.o printf.o device.o malloc.o \
36 time.o tftp.o gelic_netif.o exceptions.o exc_vector.o mm.o netrpc.o \
37 cleanup.o devtree.o kernel.o kbootconf.o network.o diskio.o ff.o \
38 inflate.o crc32.o adler32.o inftrees.o zutil.o inffast.o zpipe.o \
39 $(LWIP_OBJS
) $(FDT_OBJS
)
41 OBJS
= start.o
$(CORE_OBJS
) vmlinux.o
42 OBJS_NATIVE
= start_native.o
$(CORE_OBJS
) vmlinux.o
44 STUB_OBJS
= uncompress
/stub_start.o uncompress
/unlzma.o
46 all: stage2.bin stage2_native.bin lv2_kernel.self
48 .PRECIOUS
: stage2_raw.bin
50 vmlinux.o
: vmlinux.dat vmlinux.S
54 stage2.bin
: uncompress
/stub.bin stage2_raw.lzma
55 cat uncompress
/stub.bin stage2_raw.lzma
> $@
57 elf.o
: elf.S stage2_native.bin
58 $(PREFIX
)gcc elf.S
-o elf.o
-nostdlib
-T elf.
ld
59 $(PREFIX
)strip -R .symtab
-R .strtab elf.o
61 lv2_kernel.self
: elf.o
62 makeself lv2
355 3.55.0 05000002 1050000003000001 retail elf.o lv2_kernel.self
66 @
$(LZMA
) -c
$< > $@.tmp
67 @dd if
=$@.tmp bs
=1 count
=1 > $@
2>/dev
/null
68 @dd if
=$@.tmp bs
=13 skip
=1 >> $@
2>/dev
/null
73 @
$(PREFIX
)objcopy
-O binary
$< $@
75 uncompress
/stub.elf
: $(STUB_OBJS
) uncompress
/stub.
ld
77 @
$(PREFIX
)gcc
$(STUB_LDFLAGS
) -o
$@
$(STUB_OBJS
)
79 stage2_native.elf
: $(OBJS_NATIVE
) stage2_native.
ld
81 @
$(PREFIX
)gcc
$(LDFLAGS
) -Wl
,-T
,stage2_native.
ld -o tmp_
$@
$(OBJS_NATIVE
)
82 @
# move everything down to zero, it will relocate itself on startup
83 @
# this could be done in the linker script for lma, but Sony fails and needs it for vma.
84 @
$(PREFIX
)objcopy
--adjust-vma
-0xc00000 tmp_
$@
$@
87 stage2_raw.elf
: $(OBJS
) stage2.
ld
89 $(PREFIX
)gcc
$(LDFLAGS
) -Wl
,-T
,stage2.
ld -o
$@
$(OBJS
)
93 @
$(DTC
) -o
$@
-O asm
$<
98 @
$(PREFIX
)gcc
$(ASFLAGS
) -Wp
,-MMD
,$(DEPDIR
)/$(*F
).d
,-MQ
,"$@",-MP
-c
-o
$@
$<
103 @
$(PREFIX
)gcc
$(CFLAGS
) -Wp
,-MMD
,$(DEPDIR
)/$(*F
).d
,-MQ
,"$@",-MP
-c
-o
$@
$<
107 rm -f
$(OBJS
) *.elf
*.bin
*.lzma