forked from BarclayII/AIMv6
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile.armv7a-le
89 lines (64 loc) · 2.16 KB
/
Makefile.armv7a-le
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# Copyright (C) 2015 David Gao <davidgao1001@gmail.com>
#
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation; either version 2 of the License, or (at your
# option) any later version.
# Makefile for ARMv7A-LE
######## BEGIN CONFIG ########
CROSS_COMPILE = arm-unknown-eabi-
MACH = zynq7000
BOARD = zedboard
######## END CONFIG ########
ROOTDIR = $(shell pwd)
UPPERMACH = $(shell echo $(MACH) | tr a-z- A-Z_)
M4 = m4
CC = $(CROSS_COMPILE)gcc
CPP = $(CROSS_COMPILE)cpp
LD = $(CROSS_COMPILE)ld
OBJDUMP = $(CROSS_COMPILE)objdump
OBJCOPY = $(CROSS_COMPILE)objcopy
INCFLAG = -I. -I./include -I./include/arch/$(ARCH)
INCFLAG += -I./include/arch/$(ARCH)/asm/mach-$(MACH)
CFLAGS = -Wall -fno-builtin -nostdinc -nostdlib -march=armv7-a
CFLAGS += -mlittle-endian $(INCFLAG) -DMACH_$(UPPERMACH)
LDFLAGS = -EL -O -N
PRELOAD_OBJS = bios/arch/$(ARCH)/vector.o \
bios/arch/$(ARCH)/bootasm.o \
bios/arch/$(ARCH)/bootmain.o \
drivers/serial/uart-zynq7000.o \
drivers/serial/uart.o \
drivers/sd/sd-zynq7000.o
PRELOAD_M4 = bios/arch/$(ARCH)/preload.m4 \
bios/arch/$(ARCH)/$(MACH)/chip.m4 \
bios/arch/$(ARCH)/$(MACH)/$(BOARD)/board.m4
MBR_OBJS = boot/arch/$(ARCH)/$(MACH)/bootasm.o \
boot/arch/$(ARCH)/$(MACH)/bootmain.o
all: preload.bin
$(PRELOAD_OBJS): EXTRA_FLAGS := -O2
preload.ld: $(PRELOAD_M4)
$(M4) bios/arch/$(ARCH)/preload.m4 \
-I bios/arch/$(ARCH)/$(MACH)/ \
-I bios/arch/$(ARCH)/$(MACH)/$(BOARD)/ > $@
preload: $(PRELOAD_OBJS) preload.ld
$(LD) $(LDFLAGS) -T preload.ld -o $@ $(PRELOAD_OBJS)
preload.bin: preload
$(OBJCOPY) -O binary -S $^ $@
preload.s: preload
$(OBJDUMP) -S $^ > $@
$(MBR_OBJS): EXTRA_FLAGS := -Os
mbr: $(MBR_OBJS)
$(LD) $(LDFLAGS) -T boot/arch/$(ARCH)/$(MACH)/mbr.ld -o $@ $^
mbr.s: mbr
$(OBJDUMP) -S $^ > $@
mbr.bin: mbr
$(OBJCOPY) -O binary -S $^ $@
clean:
rm -f preload.ld
rm -rf $(PRELOAD_OBJS) preload preload.bin preload.s
rm -rf $(MBR_OBJS) mbr mbr.bin mbr.s
.S.o:
$(CC) $(CFLAGS) -c -o $*.o $<
.c.o:
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -o $@ -c $<
.PHONY: clean