@ECHO OFF
SETLOCAL
SET BATDIR=%~dp0

REM //--------------------------------------------------------------------------
REM // * Tue Feb 24 21:00:20 JST 2015 Naoyuki Sawa
REM // - dRudSeqC.exe自身がラベルを扱うようになったことに伴い、MkRudDef.batを変更しました。
REM //   変更前のMkRudDef.batは、「clip/keep/15_MkRudDefNo_bat_MkRudDefNo_awk_削除前保存.20150224」に保存しておきました。
REM // * Wed Feb 25 21:01:46 JST 2015 Naoyuki Sawa
REM // - 環境変数'RUDDEF_BIN'によって、テキスト形式とバイナリ形式の出力を選択できるようにしました。
REM //   環境変数'RUDDEF_BIN'が定義されていなければ、テキスト形式で出力します。出力ファイル=RudDef.h,RudDef.c
REM //   環境変数'RUDDEF_BIN'が定義されていたら、バイナリ形式で出力します。出力ファイル=RudDef.h,%RUDDEF_BIN%

REM //--------------------------------------------------------------------------
REM //■使い方
REM //│CALL MkRudDef.bat 台形制御シーケンサスクリプト [[台形制御シーケンサスクリプト] ...]
REM //│(台形制御シーケンサスクリプトの書式は、dRudSeqC.exeの説明を参照してください。)

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

REM //--------------------------------------------------------------------------
REM //□「パルスモーターの台形制御シーケンサコンパイラ用プリプロセッサ」を実行します。
REM //環境変数'RUDDEF_BIN'が定義されていなければ、テキスト形式で出力します。
IF "%RUDDEF_BIN%" EQU "" (
  CALL dRudSeqP.bat %* > RudDef.c
  IF ERRORLEVEL 1 EXIT /B 1
  REM //RudDef.cから、ラベル定義の行を抽出して、RudDef.hを作成します。
  onigsed.exe -n -e "/^#define RudSeqNo_/p" ^
                 -e "/^\(const int TBL_RudSeqNo\[[1-9][0-9]*\]\)={$/{s//extern \1;/;p}" ^
                 -e "/^\(const unsigned short TBL_RudSeq\[[1-9][0-9]*\]\)={$/{s//extern \1;/;p}" ^
   < RudDef.c > RudDef.h
  IF ERRORLEVEL 1 EXIT /B 1
REM //環境変数'RUDDEF_BIN'が定義されてたら、バイナリ形式で出力します。
) ELSE (
  CALL dRudSeqP.bat %* > RudDef.h
  IF ERRORLEVEL 1 EXIT /B 1
)
