This repository has been archived by the owner on Jan 14, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathMakefile
78 lines (54 loc) · 1.84 KB
/
Makefile
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
SRC_C =
SRC_S =
-include board.mk
-include user.mk
ifndef $(CROSS_COMPILE)
CROSS_COMPILE = arm-none-eabi-
endif
LD = $(CROSS_COMPILE)ld
CC = $(CROSS_COMPILE)gcc
OBJCOPY = $(CROSS_COMPILE)objcopy
OBJDUMP = $(CROSS_COMPILE)objdump
#CFLAGS = -g -Wall -mcpu=cortex-a7 -mfpu=neon -marm -mthumb-interwork -nostdlib -fno-builtin -mfloat-abi=hard -mlittle-endian
CFLAGS = -g -Wall -mcpu=cortex-a7 -mfpu=vfpv4 -marm -mthumb-interwork -nostdlib -fno-builtin -mlittle-endian -mfloat-abi=hard
CFLAGS+= -O2 -std=c99
CFLAGS+= -mstructure-size-boundary=8
CFLAGS+= -MMD
SFLAGS = -MMD
COMPILE.S = $(CC) $(CFLAGS) -c
SRC_C += boards/$(BOARD)/serial.c
SRC_S += boards/$(BOARD)/startup.S
SRC_C += user/$(SETTING)/user_init.c
SRC_S += memory_manage.S
SRC_C += port.c debug.c page_table.c hyp_call.c gic.c timer.c irq_handler.c virtual_gic.c vcpu.c logger.c cache.c default_schedule.c my_scheduler.c schedule.c fp_scheduler.c timer_event.c queue.c edf_scheduler.c rbtree.c virtual_device_handle.c vint_sender.c system_init.c vm.c virtual_psci.c coproc.c
OBJ =
OBJ += $(SRC_C:.c=.o)
OBJ += $(SRC_S:.S=.o)
DEPS = $(OBJ:.o=.d)
INCLUDE = -I ./include -I boards/$(BOARD) -I user/$(SETTING)
ifndef $(UPLOAD_DIR)
UPLOAD_DIR = /srv/tftp
endif
.PHONY: all clean
TARGET = main_$(BOARD)_$(SETTING)
ALL = $(TARGET).bin $(TARGET).asm board.mk user.mk
all: $(ALL)
$(TARGET).bin: $(TARGET)
$(OBJCOPY) -O binary $< $@
$(TEST).bin: $(TEST)
$(OBJCOPY) -O binary $< $@
$(TARGET).asm: $(TARGET)
$(OBJDUMP) -d $< > $@
$(TARGET): $(OBJ)
$(LD) -nostdlib -nostdinc -T boards/$(BOARD)/main.lnk $^ -o $@ $(LIBS)
%.o: %.S
$(COMPILE.S) $(INCLUDE) $(SFLAGS) $< -o $@
%.o: %.c
$(CC) $(INCLUDE) -c $< -o $@ $(CFLAGS)
clean:
$(RM) $(OBJ) $(TARGET) $(TARGET).bin
$(RM) $(DEPS)
upload: $(TARGET).bin
cp $(TARGET).bin $(TARGET) $(UPLOAD_DIR)
cp $(TARGET).bin $(UPLOAD_DIR)/main.bin
-include $(DEPS)