天天看點

一個簡單的makefile,使用ADS1.2編譯器

################################################################################

# Copyright (c) 2008 XuYizhu([email protected])

# All rights reserved.

################################################################################

# Description: makefile模闆,使用ADS1.2編譯器

# Data   : 2008.4.29

# Author  : 徐亦朱

# Version    : 1.1

##################################################

# Modify  : 2008.4.30, XuYizhu

# Decription : 修正了指令區排列方式

# Version    : 1.2

############################## 宏變量區 ########################################

PAT = /C/ADSv1_2/Bin

AR  = $(PAT)/armar

AS  = $(PAT)/armasm

CC  = $(PAT)/armcc

#CXX

CPP = gcc

LD  = $(PAT)/armlink

RM  = rm -f

PS  = c

OBJTOOL = $(PAT)/fromelf

#ARFLAGS

ASFLAGS = -keep -g

CFLAGS  = -apcs //nointerwork/noropi/norwpi/noswstackcheck -ansic -cpu ARM7TDMI -g+ -O1 -Ono_known_library /

       -zo -littleend

#CXXFLAGS

CPPFLAGS= 

LDFLAGS = -info totals -entry 0x80000000 -scatter ./mem_a.scf

DESTINATION := test

SOURCES  := $(wildcard *.$(PS))

OBJS  := $(patsubst %.$(PS),%.o,$(SOURCES))

DEPS  := $(patsubst %.$(PS),%.d,$(SOURCES))

############################## 搜尋路徑 ########################################

############################## 規則 ############################################

%.bin: %.axf

 @echo "### 生成BIN檔 ..."

 $(OBJTOOL) -c -bin -output $@ $<

%.hex: %.axf

 @echo "### 生成HEX檔案 ..."

 $(OBJTOOL) -c -i32 -output $@ $<

%.d: %.c

 @echo "### 生成自動依賴關系 ...";/

 set -e; $(RM) $@;/

 $(CPP) -MM $(CPPFLAGS) $< > $@.$$$$;/

 sed 's,/($*/)/.o[ :]*,/1.o $@ :,g'< $@.$$$$ > $@;/

 $(RM) $@.$$$$

%.o: %.s

 @echo "### 彙編中 ..."

 $(AS) $(ASFLAGS) -o $@ $<

%.o: %.c

 @echo "### 編譯中 ..."

 $(CC) $(CFLAGS) -c -o $@ $<

############################## 指令區 ##########################################

.PHONY: all bin hex deps objs clean rebuild

all: $(DESTINATION).axf $(DESTINATION).bin $(DESTINATION).hex

$(DESTINATION).axf: $(OBJS) Startup.o IRQ.o

 @echo "### 連接配接中 ..."

 $(LD) $(LDFLAGS) -o $@ $^

deps: $(DEPS)

-include $(DEPS)

objs: $(OBJS) Startup.o IRQ.o

clean:

 @echo "### 清除中間檔案 ..."

 $(RM) *.o *.d

clean_all:

 $(RM) *.o *.d $(DESTINATION).axf $(DESTINATION).bin $(DESTINATION).hex

rebuild: clean_all all

############################## END #############################################

繼續閱讀