-
Notifications
You must be signed in to change notification settings - Fork 17
/
Copy pathMakefile.armv7a-le
83 lines (60 loc) · 2.18 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
# Copyright (C) 2015 David Gao <[email protected]>
#
# 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
FIRMWARE_OBJS = firmware/arch/$(ARCH)/vector.o \
firmware/arch/$(ARCH)/bootasm.o \
firmware/arch/$(ARCH)/bootmain.o \
drivers/serial/uart-zynq7000.o \
drivers/serial/uart.o \
drivers/clock/gtc-a9mpcore.o \
drivers/sd/sd-zynq7000.o
FIRMWARE_M4 = firmware/arch/$(ARCH)/firmware.m4 \
firmware/arch/$(ARCH)/$(MACH)/chip.m4 \
firmware/arch/$(ARCH)/$(MACH)/$(BOARD)/board.m4
MBR_OBJS = boot/arch/$(ARCH)/$(MACH)/bootmain.o
all: firmware.bin mbr.bin
$(FIRMWARE_OBJS): EXTRA_CFLAGS = -O2
firmware.ld: $(FIRMWARE_M4)
$(M4) firmware/arch/$(ARCH)/firmware.m4 \
-I firmware/arch/$(ARCH)/$(MACH)/ \
-I firmware/arch/$(ARCH)/$(MACH)/$(BOARD)/ > $@
firmware.elf: $(FIRMWARE_OBJS) firmware.ld
$(LD) $(LDFLAGS) -T firmware.ld -o $@ $(FIRMWARE_OBJS)
$(MBR_OBJS): EXTRA_CFLAGS := -Os
mbr.elf: $(MBR_OBJS) boot/arch/$(ARCH)/$(MACH)/mbr.ld
$(LD) $(LDFLAGS) -T boot/arch/$(ARCH)/$(MACH)/mbr.ld -o $@ $^
clean:
rm -f firmware.ld
rm -rf $(FIRMWARE_OBJS) firmware.elf firmware.bin firmware.s
rm -rf $(MBR_OBJS) mbr.elf mbr.bin mbr.s
.S.o:
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -o $@ -c $<
.c.o:
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -o $@ -c $<
%.s: %.elf
$(OBJDUMP) -S $^ > $@
%.bin: %.elf
$(OBJCOPY) -O binary -S $^ $@
.PHONY: clean