djyos: djyos for mini2440/qq2440
[djyos.git] / makefile
blob4fbc7e761560f9e220546654e002d3ac31f735dd
1 export topdir =$(shell pwd)
2 include ./djyos/port/arch.def
4 #在此列出所有包含源文件的子目录名,子目录的子目录不必列出
5 subdir = djyos app
7 #'('和$之间不能有空格
8 ifeq ($(MAKECMDGOALS),boot_rom) #编译初始化硬件部分,适合仿真器调试
9 target = boot_rom
10 op =
11 dbg = -gdwarf-2 -Dboot
12 endif
14 #'('和'$'之间不能有空格
15 ifeq ($(MAKECMDGOALS),)
16 target = debug
17 op =
18 dbg = -gdwarf-2 -Ddebug
19 endif
21 #加载和运行都在ram,但必须有boot_rom支持。先编译boot_rom,再
22 #编译debug_ram,把boot_rom写入flash后,上电执行,然后用仿真器调入debug_ram.elf调试。
23 ifeq ($(MAKECMDGOALS),debug)
24 target = debug
25 op =
26 dbg = -gdwarf-2 -Ddebug
27 endif
29 #烧录到flash中,运行时内置bootloader把代码cp到ram中运行
30 #'('和$之间不能有空格
31 ifeq ($(MAKECMDGOALS),run_inram)
32 target = run_inram
33 op =-O2
34 dbg =
35 endif
37 #烧录到flash中,并且直接在flash中运行
38 #'('和$之间不能有空格
39 ifeq ($(MAKECMDGOALS),run_inflash) #加载和运行都在flash
40 target = run_inflash
41 op =-O2
42 dbg =
43 endif
45 export target
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
57 debug \
58 run_inram \
59 run_inflash \
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文件中,这里删除之,以便重新生成该文件
65 .PHONY: rm_obj_list
66 rm_obj_list:
67 rm -f ld_obj_list
69 #进入各子目录编译,子目录中除编译该目录下的源文件成.o外,还按该目录下各文件的
70 #加载属性生成ld_obj文件
71 .PHONY: $(subdir)
72 $(subdir) :
73 $(sub_make) -C $@ $(MAKECMDGOALS)
75 .PHONY: clean
76 clean:$(subdir)
77 rm -f *.ld ld_obj_list