📄 makefile
字号:
#**************************************************************************
# *
# PROJECT : MIPS port for UCOS-II *
# *
# MODULE : MakeFile *
# *
# AUTHOR : Michael Anburaj *
# URL : http://geocities.com/michaelanburaj/ *
# EMAIL: michaelanburaj@hotmail.com *
# *
# PROCESSOR : MIPS 4Kc (32 bit RISC) - ATLAS board *
# *
# Tool-chain : SDE & Cygnus *
# *
# DESCRIPTION : *
# Makefile used for building application. *
# *
# The default target (all) builds application in two formats : *
# *.elf : Image in ELF format. *
# *.rec : Image in S-record format. *
# *
# The linker also generates a MAP file "*.map". *
# *
# Other targets are : *
# clean : Deletes all files generated by makefile. *
# depend : Builds dependency file. *
# *
#*************************************************************************/
TOOLCHAIN = cygnus
ifeq ($(TOOLCHAIN),cygnus)
CC = mipsisa32-elf-gcc
LD = mipsisa32-elf-ld
OBJCOPY = mipsisa32-elf-objcopy
OBJDUMP = mipsisa32-elf-objdump
endif
ifeq ($(TOOLCHAIN),sde)
CC = sde-gcc
LD = sde-ld
OBJCOPY = sde-objcopy
OBJDUMP = sde-objdump
endif
CONVERT = c:\estii\convert
# **********************************************
# Endianness
# **********************************************
ENDIAN = EL
ifeq ($(ENDIAN),EL)
OFORMAT = elf32-littlemips
else
OFORMAT = elf32-bigmips
endif
# **********************************************
# Name of application
# **********************************************
IMAGENAME = ex1
# **********************************************
# Directories
# **********************************************
ROOT = ./../
UCOSROOT = ./../../
LIBROOT = $(UCOSROOT)/MIPS_UCOS/lib
MUP_COMMONROOT = $(UCOSROOT)/MIPS_UCOS/common
MUP_ATLASROOT = $(UCOSROOT)/MIPS_UCOS/Atlas
SRCDIR = $(ROOT)/src $(MUP_COMMONROOT)/src $(MUP_ATLASROOT)/src $(LIBROOT)/src
INCDIR = $(ROOT)/inc
BINDIR = $(ROOT)/bin
LINKDIR = $(BINDIR)/link
LIBINCDIR = $(LIBROOT)/inc
VPATH = $(SRCDIR)
# **********************************************
# Image file names and map file
# **********************************************
IMAGE_ELF = $(IMAGENAME).elf
IMAGE_REC = $(IMAGENAME).rec
MAP = $(IMAGENAME).map
# **********************************************
# Compiler and linker options
# **********************************************
INCLUDE = -I$(INCDIR) -I$(MUP_COMMONROOT)/inc -I$(MUP_ATLASROOT)/inc -I$(UCOSROOT)/Source -I$(LIBINCDIR)
W_OPTS = -Wimplicit -Wformat
#CC_OPTS = -g -c -O2 -$(ENDIAN) $(INCLUDE) -D$(ENDIAN) -mips32 $(W_OPTS)
CC_OPTS = -g -c -O2 -$(ENDIAN) $(INCLUDE) -D$(ENDIAN) -mips32 -fno-builtin $(W_OPTS)
ifeq ($(TOOLCHAIN),sde)
CC_OPTS_A = $(CC_OPTS) -D_ASSEMBLER_ -D_SDE_
else
CC_OPTS_A = $(CC_OPTS) -D_ASSEMBLER_
endif
LD_SCRIPT = $(ROOT)/bin/link/link.xn
LD_OPTS = -g -T $(LD_SCRIPT) -o $(IMAGE_ELF) -Map $(MAP) -oformat $(OFORMAT)
# **********************************************
# Files to be compiled
# **********************************************
SRC_C = $(foreach dir, $(SRCDIR), $(wildcard $(dir)/*.c))
SRC_S = $(foreach dir, $(SRCDIR), $(wildcard $(dir)/*.S))
SRC = $(SRC_C) $(SRC_S)
OBJ_C = $(notdir $(patsubst %.c, %.o, $(SRC_C)))
OBJ_S = $(notdir $(patsubst %.S, %.o, $(SRC_S)))
OBJ = $(OBJ_C) $(OBJ_S)
# **********************************************
# Rules
# **********************************************
.PHONY : all
all : $(IMAGE_REC)
$(IMAGE_REC) : $(IMAGE_ELF)
$(OBJCOPY) -O srec $(IMAGE_ELF) $(IMAGE_REC)
# cp $(IMAGE_REC) /tftpboot
$(IMAGE_ELF) : $(OBJ)
$(LD) $(LD_OPTS) $(OBJ)
$(OBJ_C) : %.o : %.c
$(CC) $(CC_OPTS) -o $@ $<
$(OBJ_S) : %.o : %.S
$(CC) $(CC_OPTS_A) -o $@ $<
$(IMAGE_ELF) : $(LD_SCRIPT)
$(OBJ) : ./makefile
.PHONY : clean depend
clean :
del *.o
del *.map
del *.elf
del *.rec
# rm -f $(BINDIR)/*.o $(BINDIR)/$(IMAGENAME).* $(BINDIR)/depend.mk
depend :
$(CC) $(INCLUDE) -M $(SRC) > depend.mk
-include depend.mk
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -