📄 makefile
字号:
#**************************************************************************
# *
# PROJECT : ARM port for uC/OS-II *
# *
# MODULE : MAKEFILE *
# *
# AUTHOR : Michael Anburaj *
# URL : http://geocities.com/michaelanburaj/ *
# EMAIL: michaelanburaj@hotmail.com *
# *
# SPONSORS : Thanks to Martin Li (mli00@yahoo.com) & Don Williams *
# (donw@clearblu.net) for sponsoring hardware. *
# *
# PROCESSOR : LPC2xxx (32 bit ARM7TDMI-S RISC core from Philips) *
# *
# TOOL-CHAIN : GCC *
# *
# DESCRIPTION : *
# Make file for Ex2 ARM_UCOS builds. Use GNU's make utility to *
# build using this file. *
# Command options: *
# make [IMAGE=<RAM,ROM>] -- Make image (default RAM) *
# make depend -- Make dependencies *
# make clean -- Remove all object files *
# make clean_all -- Remove all object & binary files *
# *
#*************************************************************************/
#**************************************************************************
#* Build Configuration
#**************************************************************************
#### Project name ####
IMAGENAME = ex2
#### Endian ####
# possible values: EL (for Little), little endian only
ENDIAN = EL
#### Debug ####
# possible values: gdb, enable, disable
DEBUG = disable
#### Task Mode ####
# Possible values: arm, thumb
TASK = thumb
#### Target Mode ####
# Possible values: arm, armthumb
ifeq ($(TASK),thumb)
TARGET = armthumb
else
TARGET = arm
endif
#### Development platform ####
# possible values: win, linux, cygwin
DEVPLF = cygwin
#### LPC variant ####
# Possible values: LPC2104/5/6, LPC2131/2/4/6/8
LPCVAR = LPC2138
#### ARM tool Definition ####
GCC = arm-elf-gcc
GLD = arm-elf-ld
OBJCOPY = arm-elf-objcopy
OBJDUMP = arm-elf-objdump
ifeq ($(DEVPLF),win)
REMOVEFILE = del
else
REMOVEFILE = rm -f
endif
# **********************************************
# Directories
# **********************************************
ROOT = ./../..
UCOSROOT = $(ROOT)/..
AUP_COMMONROOT = $(UCOSROOT)/arm_ucos/common
AUP_LPCROOT = $(UCOSROOT)/arm_ucos/lpc2xxx
ARM_COMMONDIR = $(AUP_COMMONROOT)/arm
SRCDIR = $(ROOT)/src $(AUP_COMMONROOT)/src $(AUP_COMMONROOT)/src/gcc $(AUP_LPCROOT)/src $(AUP_LPCROOT)/src/gcc
INCDIR = $(ROOT)/inc
BINDIR = $(ROOT)/bin
LINKDIR = $(AUP_LPCROOT)/bin/gcc
VPATH = $(SRCDIR) $(ARM_COMMONDIR)
# **********************************************
# Image file names and map file
# **********************************************
IMAGE_ELF_ROM = $(IMAGENAME)_rom.elf
IMAGE_HEX_ROM = $(IMAGENAME)_rom.hex
IMAGE_MAP_ROM = $(IMAGENAME)_rom.map
IMAGE_ELF_RAM = $(IMAGENAME)_ram.elf
IMAGE_HEX_RAM = $(IMAGENAME)_ram.hex
IMAGE_SREC_RAM= $(IMAGENAME)_ram.rec
IMAGE_MAP_RAM = $(IMAGENAME)_ram.map
# **********************************************
# Compiler/Assembler and linker options
# **********************************************
ifeq ($(DEBUG),gdb)
DEBUGFLAGS = -g -O0 -DUNDEF_EXCEP_GDB
else
ifeq ($(DEBUG),enable)
DEBUGFLAGS = -g -O2 -DUNDEF_EXCEP_APP
else
DEBUGFLAGS = -O2 -DUNDEF_EXCEP_APP
endif
endif
ifeq ($(IMAGE),ROM)
IMAGE_FLAG= -DROM_IMAGE
else
IMAGE_FLAG= -DRAM_IMAGE
endif
ifeq ($(TASK),thumb)
CC = $(GCC) -mthumb
else
CC = $(GCC)
endif
ACC = $(GCC)
AS = $(GCC)
LD = $(GCC)
INCLUDE = -I$(INCDIR) -I$(AUP_COMMONROOT)/inc -I$(AUP_LPCROOT)/inc -I$(UCOSROOT)/SOURCE
ifeq ($(TARGET),armthumb)
THUMB_IW = -mthumb-interwork
else
THUMB_IW =
endif
ifeq ($(TASK),thumb)
T_FLAGS = -DTHUMB_CSTART -DTHUMB_TASKS -DTHUMB_INTERWORK
else
T_FLAGS =
endif
ifeq ($(LPCVAR),LPC2014)
ifndef LD_SCRIPT_ROM
LD_SCRIPT_ROM = $(LINKDIR)/link2104_rom.ld
endif
ifndef LD_SCRIPT_RAM
LD_SCRIPT_RAM = $(LINKDIR)/link2104_ram.ld
endif
else
ifeq ($(LPCVAR),LPC2015)
ifndef LD_SCRIPT_ROM
LD_SCRIPT_ROM = $(LINKDIR)/link2105_rom.ld
endif
ifndef LD_SCRIPT_RAM
LD_SCRIPT_RAM = $(LINKDIR)/link2105_ram.ld
endif
else
ifeq ($(LPCVAR),LPC2016)
ifndef LD_SCRIPT_ROM
LD_SCRIPT_ROM = $(LINKDIR)/link2106_rom.ld
endif
ifndef LD_SCRIPT_RAM
LD_SCRIPT_RAM = $(LINKDIR)/link2106_ram.ld
endif
else
ifeq ($(LPCVAR),LPC2131)
ifndef LD_SCRIPT_ROM
LD_SCRIPT_ROM = $(LINKDIR)/link2131_rom.ld
endif
ifndef LD_SCRIPT_RAM
LD_SCRIPT_RAM = $(LINKDIR)/link2131_ram.ld
endif
else
ifeq ($(LPCVAR),LPC2132)
ifndef LD_SCRIPT_ROM
LD_SCRIPT_ROM = $(LINKDIR)/link2132_rom.ld
endif
ifndef LD_SCRIPT_RAM
LD_SCRIPT_RAM = $(LINKDIR)/link2132_ram.ld
endif
else
ifeq ($(LPCVAR),LPC2134)
ifndef LD_SCRIPT_ROM
LD_SCRIPT_ROM = $(LINKDIR)/link2134_rom.ld
endif
ifndef LD_SCRIPT_RAM
LD_SCRIPT_RAM = $(LINKDIR)/link2134_ram.ld
endif
else
ifeq ($(LPCVAR),LPC2136)
ifndef LD_SCRIPT_ROM
LD_SCRIPT_ROM = $(LINKDIR)/link2136_rom.ld
endif
ifndef LD_SCRIPT_RAM
LD_SCRIPT_RAM = $(LINKDIR)/link2136_ram.ld
endif
else
ifeq ($(LPCVAR),LPC2138)
ifndef LD_SCRIPT_ROM
LD_SCRIPT_ROM = $(LINKDIR)/link2138_rom.ld
endif
ifndef LD_SCRIPT_RAM
LD_SCRIPT_RAM = $(LINKDIR)/link2138_ram.ld
endif
else
ifndef LD_SCRIPT_ROM
LD_SCRIPT_ROM = $(LINKDIR)/link2106_rom.ld
endif
ifndef LD_SCRIPT_RAM
LD_SCRIPT_RAM = $(LINKDIR)/link2106_ram.ld
endif
endif
endif
endif
endif
endif
endif
endif
endif
CPU = arm7tdmi
W_OPTS = -Wall -Wcast-align -Wcast-qual -Wimplicit -Wmissing-declarations \
-Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wswitch \
-Wredundant-decls -Wreturn-type -Wshadow -Wstrict-prototypes -Wunused
OPTS = -mcpu=$(CPU) $(THUMB_IW)
CA_OPTS = $(OPTS) $(DEBUGFLAGS) -c $(INCLUDE) -D$(ENDIAN) -DGCC $(T_FLAGS) $(IMAGE_FLAG) -D$(LPCVAR)
CC_OPTS = $(CA_OPTS) $(W_OPTS)
ACC_OPTS = $(CA_OPTS) $(W_OPTS)
AS_OPTS = $(CA_OPTS) -D_ASSEMBLER_ -x assembler-with-cpp
LD_OPTS_ROM = $(OPTS) -nostartfiles -T $(LD_SCRIPT_ROM) -Wl,-Map=$(IMAGE_MAP_ROM),--cref -o $(IMAGE_ELF_ROM)
LD_OPTS_RAM = $(OPTS) -nostartfiles -T $(LD_SCRIPT_RAM) -Wl,-Map=$(IMAGE_MAP_RAM),--cref -o $(IMAGE_ELF_RAM)
# **********************************************
# Files to be compiled
# **********************************************
SRC_C = $(foreach dir, $(SRCDIR), $(wildcard $(dir)/*.c))
SRC_AC = $(ARM_COMMONDIR)/ac_halt.c
SRC_S = $(foreach dir, $(SRCDIR), $(wildcard $(dir)/*.S))
SRC = $(SRC_C) $(SRC_AC) $(SRC_S)
OBJ_C = $(notdir $(patsubst %.c, %.o, $(SRC_C)))
OBJ_AC = $(notdir $(patsubst %.c, %.o, $(SRC_AC)))
OBJ_S = $(notdir $(patsubst %.S, %.o, $(SRC_S)))
OBJ = $(OBJ_C) $(OBJ_AC) $(OBJ_S)
# **********************************************
# Rules
# **********************************************
IMAGES_RAM = $(IMAGE_HEX_RAM) $(IMAGE_SREC_RAM)
IMAGES_ROM = $(IMAGE_HEX_ROM)
ifeq ($(IMAGE),ROM)
IMAGES = $(IMAGES_ROM)
else
IMAGES = $(IMAGES_RAM)
endif
.PHONY : all
all : $(IMAGES)
$(IMAGE_HEX_ROM) : $(IMAGE_ELF_ROM)
$(OBJCOPY) -O ihex $(IMAGE_ELF_ROM) $(IMAGE_HEX_ROM)
$(IMAGE_HEX_RAM) : $(IMAGE_ELF_RAM)
$(OBJCOPY) -O ihex $(IMAGE_ELF_RAM) $(IMAGE_HEX_RAM)
$(IMAGE_SREC_RAM): $(IMAGE_ELF_RAM)
$(OBJCOPY) -O srec $(IMAGE_ELF_RAM) $(IMAGE_SREC_RAM)
$(IMAGE_ELF_ROM) : $(OBJ) $(LD_SCRIPT_ROM)
$(LD) $(OBJ) $(LD_OPTS_ROM)
$(IMAGE_ELF_RAM) : $(OBJ) $(LD_SCRIPT_RAM)
$(LD) $(OBJ) $(LD_OPTS_RAM)
$(OBJ_C) : %.o : %.c
$(CC) $(CC_OPTS) -o $@ $<
$(OBJ_AC) : %.o : %.c
$(ACC) $(ACC_OPTS) -o $@ $<
$(OBJ_S) : %.o : %.S
$(AS) $(AS_OPTS) -o $@ $<
$(OBJ) : ./makefile
.PHONY : clean clean_all depend
clean :
@$(REMOVEFILE) *.o
clean_all :
$(REMOVEFILE) *.o
$(REMOVEFILE) *.map
$(REMOVEFILE) *.elf
$(REMOVEFILE) *.hex
$(REMOVEFILE) *.rec
$(REMOVEFILE) depend.mk
depend :
$(CC) $(CC_OPTS) -M $(SRC) > depend.mk
-include depend.mk
#**************************************************************************
#* End
#**************************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -