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

REM //--------------------------------------------------------------------------
REM // * Mon Jan 11 21:31:05 JST 2016 Naoyuki Sawa
REM // - 1st リリース。MkTexDef.batをベースにしました。
REM // - P/ECEプロジェクトから使用する場合は、環境変数'PIECE'を定義して実行して下さい。<例> env.exe PIECE=1 MkPhrDef.bat PhrDef.txt PhsDef.txt
REM //   Win32プロジェクトから使用する場合は、環境変数'WIN32'を定義して実行して下さい。<例> env.exe WIN32=1 MkPhrDef.bat PhrDef.txt PhsDef.txt
REM // - どちらの環境変数も指定しなければ、両方のプロジェクト用のファイルを全て生成します。これは、テスト用の動作です。
REM // * Wed Jan 13 21:47:42 JST 2016 Naoyuki Sawa
REM // - 環境変数'PIECE'が定義されている場合は、その値によって動作を変えるようにしました。
REM //   値が'1'ならば、これまでと同じく、P/ECE用のフレーズ定義ヘッダを生成し、汎用の列挙定義スクリプトとレジストリスクリプトを生成しません。
REM //   値が'2'ならば、P/ECE用のフレーズ定義ヘッダと汎用のレジストリスクリプトを生成し、汎用の列挙定義スクリプトを生成しません。
REM //   このように変更した理由は、P/ECEでもフレーズシーケンスをレジストリから取得したい事が有るからです。
REM // * Thu Jan 14 21:10:13 JST 2016 Naoyuki Sawa
REM // - dPhrDefC.exeの列挙定義スクリプトを生成するオプション名を'-m'⇒'-u'に変更した事に伴い、当バッチスクリプトも変更しました。
REM // * Sat Jan 23 21:37:38 JST 2016 Naoyuki Sawa
REM // - パイプライン実行に、pipefail.exeを使用するように変更しました。
REM //   処理内容には、変更は有りません。
REM // * Sat Aug 26 23:54:22 JST 2017 Naoyuki Sawa
REM // - 各種定義ヘッダをP/ECE専用の形式から汎用形式への切り替えを行いました。
REM //   もうP/ECEプロジェクトでもWin32プロジェクトでも同じ動作で良いので、環境変数'PIECE'と'WIN32'による切り替えを削除しました。
REM //   詳細は、/clip/test.pce/Makefileの、同日のコメントを参照して下さい。

REM //--------------------------------------------------------------------------
REM //■使い方
REM //│CALL MkPhrDef.bat フレーズ定義スクリプト [[フレーズ定義スクリプト] ...]
REM //│(フレーズ定義スクリプトの書式は、dPhrDefC.exeの説明を参照してください。)

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

REM //--------------------------------------------------------------------------
REM //□「フレーズ定義コンパイラ」を実行します。
REM //{{2017/08/26削除:各種定義ヘッダをP/ECE専用の形式から汎用形式への切り替えを行いました。
REM //REM //環境変数'PIECE'も'WIN32'も定義されていない場合は、P/ECE用のフレーズ定義ヘッダ,及び,汎用の列挙定義スクリプトとレジストリスクリプトを全て生成します。
REM //IF "%PIECE%%WIN32%" EQU "" (
REM //  dPhrDefC.exe -e -psound.h -uEnmPhrDef.tmp -rRegPhrDef.tmp %TMPNAM%
REM //  IF ERRORLEVEL 1 GOTO L_ERR
REM //  DEL %TMPNAM%
REM //  GOTO L_NEXT
REM //)
REM //REM //環境変数'PIECE'が定義されている場合は…
REM //IF "%WIN32%" EQU "" (
REM //  REM //環境変数'PIECE'の値が'1'ならば、P/ECE用のフレーズ定義ヘッダを生成し、汎用の列挙定義スクリプトとレジストリスクリプトを生成しません。
REM //  IF "%PIECE%" EQU "1" (
REM //    dPhrDefC.exe -e -psound.h %TMPNAM%
REM //    IF ERRORLEVEL 1 GOTO L_ERR
REM //    DEL %TMPNAM%
REM //    GOTO L_NEXT
REM //  )
REM //  REM //環境変数'PIECE'の値が'2'ならば、P/ECE用のフレーズ定義ヘッダと汎用のレジストリスクリプトを生成し、汎用の列挙定義スクリプトを生成しません。
REM //  IF "%PIECE%" EQU "2" (
REM //    dPhrDefC.exe -e -psound.h -rRegPhrDef.tmp %TMPNAM%
REM //    IF ERRORLEVEL 1 GOTO L_ERR
REM //    DEL %TMPNAM%
REM //    REM //フレーズシーケンスのレジストリスクリプトをP/ECEで使用する場合、Path定義の行は不要なので削除する事にしました。
REM //    REM //リソースフラグがオンのフレーズが有っても、リソースのファイル名はレジストリスクリプトからではなくSOUND_RESOURCE_()から取得するからです。
REM //    (onigsed.exe -e "/^[[:blank:]]*Path[[:blank:]]*=/d" -i~ RegPhrDef.tmp) && (DEL *~)
REM //    IF ERRORLEVEL 1 GOTO L_ERR
REM //    GOTO L_NEXT
REM //  )
REM //  REM //環境変数'PIECE'の値が'1',又は,'2'以外の場合は、エラーとします。
REM //  ECHO ###環境変数'PIECE'の値が'1',又は,'2'以外です。
REM //  GOTO L_ERR
REM //)
REM //REM //環境変数'WIN32'が定義されている場合は、汎用の列挙定義スクリプトとレジストリスクリプトを生成し、P/ECE用のフレーズ定義ヘッダを生成しません。
REM //IF "%PIECE%" EQU "" (
REM //}}2017/08/26削除:各種定義ヘッダをP/ECE専用の形式から汎用形式への切り替えを行いました。
  dPhrDefC.exe -e -uEnmPhrDef.tmp -rRegPhrDef.tmp %TMPNAM%
  IF ERRORLEVEL 1 GOTO L_ERR
  DEL %TMPNAM%
REM //{{2017/08/26削除:各種定義ヘッダをP/ECE専用の形式から汎用形式への切り替えを行いました。
REM //  GOTO L_NEXT
REM //)
REM //REM //環境変数'PIECE'と'WIN32'の両方が定義されていた場合は、エラーとします。
REM //ECHO ###環境変数'PIECE'と'WIN32'の両方が定義されています。
REM //GOTO L_ERR
REM //REM //上で処理が成功した場合のジャンプ位置
REM //:L_NEXT
REM //}}2017/08/26削除:各種定義ヘッダをP/ECE専用の形式から汎用形式への切り替えを行いました。

REM //--------------------------------------------------------------------------
REM //□列挙定義スクリプトが生成されていたら、タブ文字を追加して列幅を揃えます。
REM //{{2017/08/26削除:各種定義ヘッダをP/ECE専用の形式から汎用形式への切り替えを行いました。
REM //IF EXIST EnmPhrDef.tmp (
REM //}}2017/08/26削除:各種定義ヘッダをP/ECE専用の形式から汎用形式への切り替えを行いました。
  TabAlign.exe EnmPhrDef.tmp > EnmPhrDef.txt
  IF ERRORLEVEL 1 GOTO L_ERR
  DEL EnmPhrDef.tmp
REM //{{2017/08/26削除:各種定義ヘッダをP/ECE専用の形式から汎用形式への切り替えを行いました。
REM //)
REM //}}2017/08/26削除:各種定義ヘッダをP/ECE専用の形式から汎用形式への切り替えを行いました。

REM //--------------------------------------------------------------------------
REM //□レジストリスクリプトが生成されていたら、タブ文字を追加して列幅を揃えます。
REM //{{2017/08/26削除:各種定義ヘッダをP/ECE専用の形式から汎用形式への切り替えを行いました。
REM //IF EXIST RegPhrDef.tmp (
REM //}}2017/08/26削除:各種定義ヘッダをP/ECE専用の形式から汎用形式への切り替えを行いました。
  TabAlign.exe RegPhrDef.tmp > RegPhrDef.txt
  IF ERRORLEVEL 1 GOTO L_ERR
  DEL RegPhrDef.tmp
REM //{{2017/08/26削除:各種定義ヘッダをP/ECE専用の形式から汎用形式への切り替えを行いました。
REM //)
REM //}}2017/08/26削除:各種定義ヘッダをP/ECE専用の形式から汎用形式への切り替えを行いました。

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

REM //--------------------------------------------------------------------------
:L_ERR
REM //□不完全な最終出力ファイルを確実に削除します。
REM //{{2017/08/26削除:各種定義ヘッダをP/ECE専用の形式から汎用形式への切り替えを行いました。
REM //IF EXIST     sound.h   DEL     sound.h
REM //}}2017/08/26削除:各種定義ヘッダをP/ECE専用の形式から汎用形式への切り替えを行いました。
IF EXIST EnmPhrDef.txt DEL EnmPhrDef.txt
IF EXIST RegPhrDef.txt DEL RegPhrDef.txt
ECHO ###エラーが発生しました。
REM //PAUSE
EXIT /B 1
