Added boot process information to help someone find out what really happens.
[bootos.git] / stage2 / Makefile
blob4b50b13164aeb4362875a6cdfe7afcc9b757d33b
1 # Stage2 Makefile
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
10 DTC=dtc
11 LZMA=lzma
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.
20 DEPDIR = .deps
22 LWIP_OBJS = \
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
52 vmlinux.bin:
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
64 %.lzma: %.bin
65 @echo " LZMA $@"
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
69 @rm $@.tmp
71 %.bin: %.elf
72 @echo " OBJCOPY $@"
73 @$(PREFIX)objcopy -O binary $< $@
75 uncompress/stub.elf: $(STUB_OBJS) uncompress/stub.ld
76 @echo " LINK $@"
77 @$(PREFIX)gcc $(STUB_LDFLAGS) -o $@ $(STUB_OBJS)
79 stage2_native.elf: $(OBJS_NATIVE) stage2_native.ld
80 @echo " LINK $@"
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_$@ $@
85 @rm -f tmp_$@
87 stage2_raw.elf: $(OBJS) stage2.ld
88 @echo " LINK $@"
89 $(PREFIX)gcc $(LDFLAGS) -Wl,-T,stage2.ld -o $@ $(OBJS)
91 %.S: %.dts
92 @echo " DTC $<"
93 @$(DTC) -o $@ -O asm $<
95 %.o: %.S
96 @echo " ASSEMBLE $<"
97 @mkdir -p $(DEPDIR)
98 @$(PREFIX)gcc $(ASFLAGS) -Wp,-MMD,$(DEPDIR)/$(*F).d,-MQ,"$@",-MP -c -o $@ $<
100 %.o: %.c
101 @echo " COMPILE $<"
102 @mkdir -p $(DEPDIR)
103 @$(PREFIX)gcc $(CFLAGS) -Wp,-MMD,$(DEPDIR)/$(*F).d,-MQ,"$@",-MP -c -o $@ $<
105 clean:
106 rm -rf $(DEPDIR)
107 rm -f $(OBJS) *.elf *.bin *.lzma
108 rm -f $(STUB_OBJS)
110 -include $(DEPDIR)/*
112 .PHONY: clean