Initial commit
[savezelda.git] / loader / Makefile
1 # Copyright 2008-2009  Segher Boessenkool  <segher@kernel.crashing.org>
2 # This code is licensed to you under the terms of the GNU GPL, version 2;
3 # see file COPYING or http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
4
5 CROSS ?= broadway-
6
7
8 ifeq ($(origin CC), default)
9         CC := $(CROSS)gcc -m32
10 endif
11 ifeq ($(origin LD), default)
12         LD := $(CROSS)ld
13 endif
14 OBJCOPY ?= $(CROSS)objcopy
15
16
17 CFLAGS := -Wall -W -Os -ffreestanding -std=gnu99 -Wstrict-aliasing=2 \
18         -mno-eabi -mno-sdata -mcpu=750
19
20
21 targets := loader.bin
22
23 objs := crt0.o  main.o string.o video.o ios.o sd.o fat.o elf.o sync.o font.o \
24         console.o exception.o exception_2200.o usbgecko.o time.o version.o
25 ppms := font.ppm
26
27
28 ifeq ($(V),1)
29         Q :=
30 else
31         Q := @
32         MAKEFLAGS += --no-print-directory
33 endif
34
35
36 all: $(targets)
37
38 $(targets): %.bin: %.elf
39         @echo "  OBJCOPY   $@"
40         $(Q)$(OBJCOPY) -O binary $< $@
41
42 elfs := $(targets:.bin=.elf)
43 $(elfs): %.elf: %.lds $(objs)
44         @echo "  LINK      $@"
45         $(Q)$(LD) $(LDFLAGS) -n -T $^ -o $@
46
47 %.o: %.c loader.h
48         @echo "  COMPILE   $@"
49         $(Q)$(CC) $(CFLAGS) -c $< -o $@
50
51 crt0.o exception_2200.o: %.o: %.s
52         @echo "  ASSEMBLE  $@"
53         $(Q)$(CC) $(CFLAGS) -c $< -o $@
54
55 version.c: ../.version
56         @echo "  VERSION   $@"
57         $(Q)echo "const char version[] = \"`cat $^` (`whoami`@`hostname -s`)\";" > $@
58
59 ../.version: FORCE
60         $(Q)$(MAKE) -C .. .version
61
62 $(ppms): %.ppm: %.png
63         @echo "  PPM       $@"
64         $(Q)convert $< $@
65
66 font.c: %.c: %.ppm font2c.pl
67         @echo "  FONT2C    $@"
68         $(Q)perl font2c.pl < $*.ppm > $@
69
70 FORCE:
71
72 clean:
73         rm -rf $(objs) $(targets) $(elfs) font.c version.c