ctr_mcu/trunk/OMakefile
N2614 33530594f5 OMakeでビルドが通るように
git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_mcu@366 013db118-44a6-b54f-8bf7-843cb86687b1
2011-08-18 00:34:58 +00:00

160 lines
4.9 KiB
Plaintext

############################################################
# 環境設定
############################################################
# マイコン開発環境のインストール先を環境変数で指定する
NECEL_ROOT =
if $(defined-env NECEL_ROOT)
value $(absname $"$(getenv NECEL_ROOT)")
else
value "C:\Program Files (x86)\NEC Electronics Tools"
# cygwinのインストール先を環境変数で指定する
CYGWIN_ROOT =
if $(defined-env CYGWIN_ROOT)
value $(absname $"$(getenv CYGWIN_ROOT)")
else
value "C:\cygwin"
# GCCバージョンを環境変数で指定する
CYGWIN_GCC =
if $(defined-env CYGWIN_GCC)
value $(CYGWIN_ROOT)/bin/$"$(getenv CYGWIN_GCC)"
else
value $(CYGWIN_ROOT)/bin/gcc-4
#デバイスファイルは NECEL_ROOT/dev に置くこと
#自己アップデート用ライブラリは CC_LIBS_ROOT/以下に置くこと
SUBDIR_INTER_ASM = $(dir inter_asm)
CC_ROOT = $(NECEL_ROOT)/CC78K0R
CC_VER = W2.13
CC = $(CC_ROOT)/$(CC_VER)/bin/cc78k0r.exe
RA = $(NECEL_ROOT)/RA78K0R/W1.33/bin/ra78k0r.exe
LK = $(NECEL_ROOT)/RA78K0R/W1.33/bin/lk78k0r.exe
OC = $(NECEL_ROOT)/RA78K0R/W1.33/bin/oc78k0r.exe
LCNV = $(NECEL_ROOT)/RA78K0R/W1.33/bin/lc78k0r.exe
DEVFILE_ROOT = $(NECEL_ROOT)/dev
CC_LIBS_ROOT = $(CC_ROOT)/$(CC_VER)/lib78k0r
CC_INCLUDES_ROOT = $(CC_ROOT)/$(CC_VER)/inc78k0r
S0RM = s0rm.rel
# セキュリティID
GIVALUE = 1B339499E033F240BFAAh
# ユーザオプションバイト
GBValue = 7EFBFFh
DEVICE_NAME = 9F0104
FSL_LIB = fsl.lib
TARGET_NAME = bsr
TARGET_LMF = $(TARGET_NAME).lmf
TARGET_HEX = $(TARGET_NAME).hex
# ここまで
############################################################
############################################################
# ソースを追加したら編集する箇所
############################################################
SRC_FILES[] =
loader
pm
i2c_ctr
main
magic
WDT
i2c_mcu
i2c_twl
led
rtc
vreg_ctr
vreg_twl
adc
renge\renge
accero
self_flash
sw
task_debug
task_misc
task_sys
pedo_alg_thre_det2
ini_VECT
task_status
led_cam
led_pow
hal
batt_params
voltable
pedo_lpf_coeff
INCLUDES[] =
./
renge
# ここまで
############################################################
.PHONY: clean BeforeBuild
AddRel(files) =
file_names = $(addsuffix .rel, $(files))
return $(file_names)
# *.cからinter_asm/*.asmを作るための関数
AsmProgram(files) =
foreach(filename, $(files))
asm_name = $(addprefix $(SUBDIR_INTER_ASM)/, $(addsuffix .asm, $(basename $(filename))))
c_name = $(addsuffix .c, $(filename))
.SCANNER: $(asm_name): $(c_name)
$(CYGWIN_GCC) -MM -w -I$(CC_INCLUDES_ROOT) $(c_name) | sed 's/$(filename)\.o/$(SUBDIR_INTER_ASM)\/$(filename)\.asm/g'
$(asm_name): $(c_name)
$(CC) -c$(DEVICE_NAME) -y$(DEVFILE_ROOT) -_msgoff -irenge -i$(CC_INCLUDES_ROOT) -ms -qvjl2w -sa$(SUBDIR_INTER_ASM) -zpb -no $(c_name)
return $(addsuffix .c, $(files))
# inter_asm/*.asm から *.relを作るための関数
RelProgram(files) =
foreach(filename, $(files))
rel_name = $(addsuffix .rel, $(basename $(filename)))
asm_name = $(addprefix $(SUBDIR_INTER_ASM)/, $(addsuffix .asm, $(basename $(filename))))
asm_win_name = $(addprefix $(SUBDIR_INTER_ASM)\\, $(addsuffix .asm, $(basename $(filename))))
c_name = $(addsuffix .c, $(filename))
.SCANNER: $(rel_name): $(asm_win_name)
$(CYGWIN_GCC) -MM -w -I$(CC_INCLUDES_ROOT) $(c_name) | sed 's/\.o/\.rel/g'
$(rel_name): $(asm_name)
$(RA) -c$(DEVICE_NAME) -y$(DEVFILE_ROOT) -_msgoff $(asm_win_name)
return $(addsuffix .rel, $(basename $(files)))
$(TARGET_LMF): $(RelProgram $(SRC_FILES)) $(AsmProgram $(SRC_FILES))
$(LK) -y$(DEVFILE_ROOT) -_msgoff -o$(TARGET_LMF) $(CC_LIBS_ROOT)/$(S0RM) -gi$(GIVALUE) -pbsr_k0r.map -nkd -gb$(GBValue) -b$(CC_LIBS_ROOT)/$(FSL_LIB) -bcl0rdm.lib -bcl0rm.lib -bcl0rmf.lib -i$(CC_LIBS_ROOT) -dbsr_mcu.dr -s -w0 $(AddRel $(basename $(SRC_FILES)))
$(TARGET_HEX) : $(TARGET_LMF)
$(OC) -y$(DEVFILE_ROOT) -_msgoff -o.\\$(TARGET_HEX) -nu -ki $(TARGET_LMF)
BeforeBuild:
# ビルド前に必ず実行したい処理
# OMakeがタイムスタンプではなくMD5でファイルの状態を管理しているので
# 残念ながら cleanしてからビルドしなおす必要がある
C:\Windows\system32\cmd.exe /c $(CYGWIN_ROOT)\bin\touch magic.c
if $(not $(file-exists $(SUBDIR_INTER_ASM)))
mkdir $(SUBDIR_INTER_ASM)
hoge.bin: BeforeBuild $(TARGET_HEX)
C:\Windows\system32\cmd.exe /c ruby nec_s_2_bsrbin2.rb $(TARGET_HEX)
clean:
rm -rf *.prn *.rel $(SUBDIR_INTER_ASM)/*.asm *.omc .omakedb .omakedb.lock
.DEFAULT: hoge.bin