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

REM //--------------------------------------------------------------------------
REM // * Tue Apr 25 23:28:44 JST 2017 Naoyuki Sawa
REM // - 1st リリース。MkVslDef.batをベースにしました。

REM //--------------------------------------------------------------------------
REM //■使い方
REM //│CALL MkRgnMap.bat 領域マップスクリプト [[領域マップスクリプト] ...]
REM //│(領域マップスクリプトの書式は、dRgnMapC.exeの説明を参照してください。)

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

REM //--------------------------------------------------------------------------
REM //□「領域マップコンパイラ」を実行します。
dRgnMapC.exe -e -uEnmRgnMap.tmp -rRegRgnMap.tmp %TMPNAM%
IF ERRORLEVEL 1 GOTO L_ERR
DEL %TMPNAM%

REM //--------------------------------------------------------------------------
REM //□列挙定義スクリプトに、タブ文字を追加して列幅を揃えます。
TabAlign.exe EnmRgnMap.tmp > EnmRgnMap.txt
IF ERRORLEVEL 1 GOTO L_ERR
DEL EnmRgnMap.tmp

REM //--------------------------------------------------------------------------
REM //□レジストリスクリプトに、タブ文字を追加して列幅を揃えます。
TabAlign.exe RegRgnMap.tmp > RegRgnMap.txt
IF ERRORLEVEL 1 GOTO L_ERR
DEL RegRgnMap.tmp

REM //--------------------------------------------------------------------------
REM //ECHO 完了しました。
REM //PAUSE
EXIT /B

REM //--------------------------------------------------------------------------
:L_ERR
REM //□不完全な最終出力ファイルを確実に削除します。
IF EXIST EnmRgnMap.txt DEL EnmRgnMap.txt
IF EXIST RegRgnMap.txt DEL RegRgnMap.txt
ECHO ###エラーが発生しました。
REM //PAUSE
EXIT /B 1
