-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathMakefile
108 lines (91 loc) · 2.56 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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
SRCTREE := $(shell pwd)
TOPDIR := $(SRCTREE)
export TOPDIR SRCTREE
OBJCFLAGS=--gap-fill=0xff
CFLAGS=-I $(TOPDIR)/includes -g -O1 -Wall#-fno-stack-protector
ARFLAGS= cr
export OBJCFLAGS CFLAGS ARFLAGS
ARCH=arm
CPU=s3c2440
BOARD=mini2440
export ARCH CPU BOARD
LDSCRIPT:=$(TOPDIR)/boards/$(BOARD)/easy-boot.lds
LDFLAGS=-Bstatic -T $(LDSCRIPT) -N
export LDSCRIPT LDFLAGS
ifeq ($(ARCH),ppc)
CROSS_COMPILE = powerpc-linux-
endif
ifeq ($(ARCH),arm)
CROSS_COMPILE = arm-linux-
endif
ifeq ($(ARCH),mips)
CROSS_COMPILE = mips_4KC-
endif
ifeq ($(ARCH),nios)
CROSS_COMPILE = nios-elf-
endif
ifeq ($(ARCH),nios2)
CROSS_COMPILE = nios2-elf-
endif
ifeq ($(ARCH),m68k)
CROSS_COMPILE = m68k-elf-
endif
ifeq ($(ARCH),microblaze)
CROSS_COMPILE = mb-
endif
ifeq ($(ARCH),blackfin)
CROSS_COMPILE = bfin-elf-
endif
ifeq ($(ARCH),avr32)
CROSS_COMPILE = avr32-
endif
#
# Include the make variables (CC, etc...)
#
AS = $(CROSS_COMPILE)as
LD = $(CROSS_COMPILE)ld
CC = $(CROSS_COMPILE)gcc
CPP = $(CC) -E
AR = $(CROSS_COMPILE)ar
NM = $(CROSS_COMPILE)nm
STRIP = $(CROSS_COMPILE)strip
OBJCOPY = $(CROSS_COMPILE)objcopy
OBJDUMP = $(CROSS_COMPILE)objdump
RANLIB = $(CROSS_COMPILE)RANLIB
export CROSS_COMPILE AS LD CC CPP AR NM STRIP OBJCOPY OBJDUMP RANLIB
OBJS = cpu/$(CPU)/start.o
OBJS += cpu/$(CPU)/interrupt.o
LIBS = lib/libcommon.a
LIBS += drivers/libdrivers.a
LIBS += boards/$(BOARD)/lib$(BOARD).a
LIBS := $(addprefix $(SRCTREE)/,$(LIBS))
LLIBS = -l gcc -L /usr/lib/gcc-cross/arm-linux-gnueabi/4.7.3
export LLIBS
.PHONY : $(LIBS)
CONFIG := $(TOPDIR)/include/config.h
export CONFIG
#########################################################################
#########################################################################
ALL = $(CONFIG) EasyBoot EasyBoot.bin
all: $(ALL)
EasyBoot.bin: EasyBoot
$(OBJCOPY) ${OBJCFLAGS} -O binary $< $@
cp $@ /srv/
EasyBoot: $(OBJS) $(LIBS) $(LDSCRIPT)
#UNDEF_SYM_CMD=`$(OBJDUMP) -x $(LIBS) |sed -n -e 's/\(__Easy_Boot_cmd\)/-u\1/p'|sort|uniq`;
UNDEF_SYM_DRV=`$(OBJDUMP) -x $(LIBS) |sed -n -e 's/.*\(__easy_boot_driver.*\)/-u\1/p'|sort|uniq`;\
$(LD) $(LDFLAGS) $$UNDEF_SYM_DRV $(OBJS) \
--start-group $(LIBS) --end-group $(LLIBS) -o $@
$(CONFIG):
ln -s $(TOPDIR)/includes/configs/$(BOARD).h $(TOPDIR)/includes/config.h
$(OBJS):
$(MAKE) -C cpu/$(CPU)
$(LIBS):
$(MAKE) -C $(dir $@)
.PHONY:clean
clean:
# 'find /home/lee/EasyBoot/ -type f -name "*.o" -o -name "*.a"';
rm -f $(shell find /home/lee/EasyBoot/ -type f -name \
"*.o" -o -name "*.a" -o -name "*.bin" -o -name "*.map")
rm -f EasyBoot
rm -rf $(TOPDIR)/includes/config.h