-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMakefile
61 lines (46 loc) · 1.21 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
# (C) 2014 JinDongHuang
BOOTDIR = ./boot
INITDIR = ./init
INCLUDEDIR = ./include
DRIVERDIR = ./driver
LIBDIR = ./lib
MMDIR = ./mm
PMDIR = ./pm
SYSDIR = ./sys
LDSFILE = ddos.lds
CC = arm-linux-gcc
LD = arm-linux-ld
OBJCOPY = arm-linux-objcopy
OBJDUMP = arm-linux-objdump
CFLAGS = -Wall -I$(INCLUDEDIR) -nostdinc
LDFLAGS = -T$(LDSFILE)
ODFLAGS = -D
OCFLAGS = -O binary
install:ddos.bin
ddos.bin:ddos.elf
$(OBJCOPY) $(OCFLAGS) ddos.elf $@
$(OBJDUMP) $(ODFLAGS) ddos.elf > ddos.dis
ddos.elf:$(BOOTDIR)/boot.o $(INITDIR)/main.o $(DRIVERDIR)/drivers.a \
$(LIBDIR)/lib.a $(MMDIR)/mm.a $(SYSDIR)/sys_call.a $(PMDIR)/pm.a
$(LD) $(LDFLAGS) $^ -o $@
%.o:%.S
$(CC) $(CFLAGS) -c $< -o $@
%.o:%.c
$(CC) $(CFLAGS) -c $< -o $@
$(DRIVERDIR)/drivers.a:
(cd $(DRIVERDIR); make)
$(LIBDIR)/lib.a:
(cd $(LIBDIR); make)
$(MMDIR)/mm.a:
(cd $(MMDIR); make)
$(PMDIR)/pm.a:
(cd $(PMDIR); make)
$(SYSDIR)/sys_call.a:
(cd $(SYSDIR); make)
clean:
rm -rf $(BOOTDIR)/*.o $(INITDIR)/*.o *.elf *.bin *.dis
(cd $(DRIVERDIR); make clean)
(cd $(LIBDIR); make clean)
(cd $(MMDIR); make clean)
(cd $(SYSDIR); make clean)
(cd $(PMDIR); make clean)