@ECHO OFF
SETLOCAL
SET BATDIR=%~dp0
SET TMPNAM=%~n0.tmp

REM //--------------------------------------------------------------------------
REM // * Sun May 31 14:08:56 JST 2015 Naoyuki Sawa
REM // - 1st リリース。

REM //--------------------------------------------------------------------------
REM //■使い方
REM //│CALL MkEvtTmr.bat イベントタイマスクリプト [[イベントタイマスクリプト] ...]
REM //│(イベントタイマスクリプトの書式は、dEvtTmrC.exeの説明を参照してください。)

REM //--------------------------------------------------------------------------
REM //□EvtTmr.hとEvtTmr.cが既に有れば、確実に削除しておきます。
IF EXIST EvtTmr.h DEL EvtTmr.h
IF EXIST EvtTmr.c DEL EvtTmr.c

REM //--------------------------------------------------------------------------
REM //□'cpp.exe'を通しているので、イベントタイマスクリプト内でCプリプロセッサの疑似命令も使えます。
REM //│'cpp.exe'に'-P'を指定していないので'# 行番号 "ファイル名"'が生成されますが、dLedSeqC.exeがコメントとして無視するので問題ありません。
REM //│'cpp.exe'に'-P'を指定してもしなくても同じ結果になるはずです。
dpesc5c.exe %* | cpp.exe > %TMPNAM%
IF ERRORLEVEL 1 EXIT /B 1

REM //--------------------------------------------------------------------------
REM //□「イベントタイマコンパイラ」を実行します。
REM //環境変数'EVTTMR_BIN'が定義されていなければ、テキスト形式で出力します。
IF "%EVTTMR_BIN%" EQU "" (
  dEvtTmrC.exe -e -pEvtTmrNo_                %TMPNAM% > EvtTmr.c
  IF ERRORLEVEL 1 EXIT /B 1
  REM //EvtTmr.cから、ラベル定義の行を抽出して、EvtTmr.hを作成します。
  onigsed.exe -n -e "/^#define EvtTmrNo_/p" ^
                 -e "/^\(const int TBL_EvtTmrNo\[[1-9][0-9]*\]\)={$/{s//extern \1;/;p}" ^
                 -e "/^\(const unsigned short TBL_EvtTmr\[[1-9][0-9]*\]\[2\]\)={$/{s//extern \1;/;p}" ^
   < EvtTmr.c > EvtTmr.h
  IF ERRORLEVEL 1 EXIT /B 1
REM //環境変数'EVTTMR_BIN'が定義されてたら、バイナリ形式で出力します。
) ELSE (
  dEvtTmrC.exe -e -pEvtTmrNo_ -o%EVTTMR_BIN% %TMPNAM% > EvtTmr.h
  IF ERRORLEVEL 1 EXIT /B 1
)
DEL %TMPNAM%
