1 export topdir
=$(shell pwd
)
2 include .
/djyos
/port
/arch.def
4 #在此列出所有包含源文件的子目录名,子目录的子目录不必列出
8 ifeq ($(MAKECMDGOALS
),boot_rom
) #编译初始化硬件部分,适合仿真器调试
11 dbg
= -gdwarf-2
-Dboot
15 ifeq ($(MAKECMDGOALS
),)
18 dbg
= -gdwarf-2
-Ddebug
21 #加载和运行都在ram,但必须有boot_rom支持。先编译boot_rom,再
22 #编译debug_ram,把boot_rom写入flash后,上电执行,然后用仿真器调入debug_ram.elf调试。
23 ifeq ($(MAKECMDGOALS
),debug
)
26 dbg
= -gdwarf-2
-Ddebug
29 #烧录到flash中,运行时内置bootloader把代码cp到ram中运行
31 ifeq ($(MAKECMDGOALS
),run_inram
)
37 #烧录到flash中,并且直接在flash中运行
39 ifeq ($(MAKECMDGOALS
),run_inflash
) #加载和运行都在flash
46 export CC
= arm-elf-gcc
47 export AS
= arm-elf-gcc
48 export objcopy
= arm-elf-objcopy
-I elf32-littlearm
-O binary
49 export size
= arm-elf-size
50 export incdir
=-I
$(topdir
)/djyos
/include -I
$(topdir
)/djyos
/port
/include
52 export sub_make
= @make
--no-print-directory
53 export CFLAGS
= -c
-mcpu
=$(CPU
) -Wall
$(dbg
) $(op
) -nostartfiles
-std
=gnu99
#-pedantic
54 export ASFLAGS
= -c
-mcpu
=$(CPU
) -Wall
$(dbg
) $(op
) #-feliminate-dwarf2-dups
55 export LDFLAGS
= -mcpu
=$(CPU
) -Wall
-nostartfiles
-lm
-lc
60 boot_rom
: rm_obj_list
$(subdir
) #rm_obj_list $(subdir)的书写顺序不能颠倒
61 $(sub_make
) -f make_ld
$(MAKECMDGOALS
)
63 #rom_obj、preload_obj、sysload_obj、critical_obj这几个连接指示用的变量在各子目录
64 #中生成并保存在ld_obj文件中,这里删除之,以便重新生成该文件
69 #进入各子目录编译,子目录中除编译该目录下的源文件成.o外,还按该目录下各文件的
73 $(sub_make
) -C
$@
$(MAKECMDGOALS
)
77 rm -f
*.
ld ld_obj_list