guowenxue
2020-08-21 cdf2904404c7510832f173a696e7f7c4febfded1
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
 
# ***********************************************************************
# *        File:  makefile
# *     Version:  1.0.0
# *   Copyright:  2011 (c) Guo Wenxue <guowenxue@gmail.com>
# * Description:  Makefile used to cross compile the ASM source code
# *   ChangeLog:  1, Release initial version on "Sun Mar 20 18:41:04 CST 2011"
# *
# ***********************************************************************
#
 
APP_NAME=bootstrap
INST_PATH=/tftp
SRC_TOP=$(CURDIR)
 
OBJS_MAIN := bootstrap.o start.o 
OBJS_BSP += ${SRC_TOP}/bsp/*.o
OBJS_COMMON += ${SRC_TOP}/common/*.o
OBJS_YAFFS2 += ${SRC_TOP}/yaffs2/*.o
 
CFLAGS+=-I${SRC_TOP}/common
CFLAGS+=-I${SRC_TOP}/bsp
CFLAGS+=-I${SRC_TOP}/yaffs2 
 
# Set the stack top base address here
TEXT_BASE=0x31000000
STACK_BASE=0x31010000
MALLOC_SIZE=0x100000
CFLAGS+=-DTEXT_BASE=$(TEXT_BASE) -DSTACK_BASE=${STACK_BASE} -DCONFIG_SYS_MALLOC_LEN=${MALLOC_SIZE}
 
CFLAGS+=-DDEBUG
 
gccincdir := $(shell $(CC) -print-file-name=include)
CFLAGS += -ffreestanding -nostdinc -isystem $(gccincdir) -pipe 
CFLAGS+= -fno-strict-aliasing  -fno-common -ffixed-r8 -msoft-float 
CFLAGS+=-march=armv4t -Wall -Wno-unused -Wstrict-prototypes -fno-stack-protector
CFLAGS += -fno-builtin  
LDFLAGS=-Bstatic -T$(APP_NAME).lds -Ttext $(TEXT_BASE)
AFLAGS := $(CFLAGS) -D__ASSEMBLY__
export CFLAGS
export AFLAGS
 
#CFLAGS+=-Os -D__KERNEL__ -DCONFIG_ARM -D__ARM__ 
PLATFORM_LIBS += -L $(shell dirname `$(CC) $(CFLAGS) -print-libgcc-file-name`) -lgcc
#PLATFORM_LIBS += -L/opt/buildroot-2011.11/arm920t/usr/arm-unknown-linux-uclibcgnueabi/sysroot/usr/lib/ -lc 
 
CROSS_COMPILE=/opt/xtools/arm920t/bin/arm-linux-
AS  = $(CROSS_COMPILE)as
LD  = $(CROSS_COMPILE)ld
CC  = $(CROSS_COMPILE)gcc
CPP = $(CC) -E
AR  = $(CROSS_COMPILE)ar
NM  = $(CROSS_COMPILE)nm
LDR = $(CROSS_COMPILE)ldr
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 CFLAGS
 
ALL: clean bsp_lib common_lib yaffs2_lib ${OBJS_MAIN} 
    echo ${OBJS_BSP}
    cd $(SRC_TOP) 
    ${LD} $(LDFLAGS) \
    --start-group ${OBJS_BSP} ${OBJS_COMMON} ${OBJS_YAFFS2} $(OBJS_MAIN) \
    --end-group $(PLATFORM_LIBS) \
    -Map $(APP_NAME).map  -o $(APP_NAME).elf
    ${OBJCOPY} -O binary $(APP_NAME).elf $(APP_NAME).bin
    @chmod 777 $(APP_NAME).bin
    @rm -f *.elf *.o
    @make install
 
bsp_lib:
    @make -C bsp
 
common_lib:
    @make -C common
 
yaffs2_lib:
    @make -C yaffs2
 
%.o: %.S
     $(CC) $(AFLAGS) -c -o $@ $<
 
%.o: %.c
     $(CC) $(CFLAGS) -c -o $@ $<
 
install: $(APP_NAME).bin
    cp $(APP_NAME).bin $(INST_PATH) -f 
 
clean:
    @find $(OBJTREE) -type f \
            \( -name 'core' -o -name '*.bak' -o -name '*~' -o -name .depend \
            -o -name '*.o'  -o -name '*.a' -o -name '*.elf' \) -print \
            | xargs rm -f
    @rm -f $(APP_NAME).bin
    @rm -f $(APP_NAME).map
    @make clean -C yaffs2
 
distclean clear: clean
    @rm -f cscope.* tags