================================================================================
* Mon Nov 23 21:30:44 JST 2015 Naoyuki Sawa
- 「PDCurses」のライブラリを追加しました。
  以下、ライブラリのビルド手順を記録しておきます。

■下記のファイルをダウンロードする。
「Public Domain Curses」(http://pdcurses.sourceforge.net/)
⇒「Downloads」(http://sourceforge.net/projects/pdcurses/files/)
⇒「pdcurs34.zip」(http://sourceforge.net/projects/pdcurses/files/pdcurses/3.4/pdcurs34.zip/download)
ダウンロードした'pdcurs34.zip'を、'keep/pdcurs34.7z'に保存しておきました。

■/Home/Share/Piece/clip/tool/pdcurses/フォルダを作成し、その中にpdcurs34.zipを展開する。
下記のフォルダ構成になる。
/Home/Share/Piece/clip/tool/pdcurses/
├…
├win32/
├…
├curses.h
├curspriv.h
├panel.h
├term.h
└…

■DOS窓を開いて、/Home/Share/Piece/clip/tool/pdcurses/win32/フォルダへ移動する。
＞CD /D \Home\Share\Piece\clip\tool\pdcurses\win32

■Visual Studio 6.0 の環境変数を設定する。
＞"C:\Program Files\Microsoft Visual Studio\VC98\Bin\VCVARS32.BAT"

■ライブラリをビルドする。
＞nmake -f vcwin32.mak pdcurses.lib
※メモ
'nmake -f vcwin32.mak'でも構わないが、デモプログラムもビルドされてしまい無駄である。
※メモ
もしかしたら'nmake -f vcwin32.mak WIDE=1 pdcurses.lib'とすべきかも知れないが、まずは単純な設定でビルドして勉強する事にした。	─┬→{{2018/04/13コメント追記:WIDEはマルチバイト文字ではなくUnicodeを使うためのオプションでした(pdcurs36.zip/wincon/README.mdより)。無用です。}}
もしマルチバイト文字の対応が必要になったら、その時に'WIDE=1'を検討しようと思います。						─┘
尚、'WIDE=1'を付ける場合は、'pdcurses.lib'のターゲット指定が必須です。
'WIDE=1'を付けると、一部のデモプログラムが、コンパイルエラーになってしまうからです。

■生成されたライブラリを、一つ上のフォルダへ移動する。
＞MOVE pdcurses.lib ..
※メモ
ちなみに、panel.libというライブラリも生成されるが、これは不要なので、この後削除します。
panel.libは、互換性のためだけに生成されるファイルで、内容はpdcurses.libと全く同じです。
詳細は、'pdcurses/HISTORY'の、「PDCurses 3.2 - 2007/06/06」のコメントを参照して下さい。

■DOS窓のカレントフォルダを一つ上へ移動する。
＞CD ..

■不要なファイルを削除する。
以下のファイルを残して、それ以外のファイルとフォルダを全て削除して下さい。
/Home/Share/Piece/clip/tool/pdcurses/
├curses.h
├panel.h
├term.h
└pdcurses.lib

以上です。
Win32プロジェクトにインクルードパス,ライブラリパス,インクルードファイル,ライブラリファイルを追加する設定は一般的な方法と同じなので、説明を省略します。
本日既に、Win32雛形プロジェクト('/Home/Share/Piece/clip/test.win/')に、「PDCurses」を使用する設定を追加しておきました。

================================================================================
* Thu Sep 08 22:20:43 JST 2016 Naoyuki Sawa

- 64ビット版のライブラリをビルドしました。
  バージョンは変更しておらず、前回と同じ pdcurs34.zip です。(2016/09/08現時点でもこれが最新です。)
- 64ビット版のコンパイルに使用した、コンパイラのバージョンは、以下の通りです。
  │Microsoft Visual Studio Community 2015 Version 14.0.25425.01 Update 3
- 64ビット版のビルド手順は、以下の通りです。
  □参考資料
  │「Stack Overflow - pdcurses linkage using Visual Studio 2010」
  │(http://stackoverflow.com/questions/13883130/pdcurses-linkage-using-visual-studio-2010)

■下記のファイルをダウンロードする。
～32ビット版と同じなので省略します。～

■/Home/Share/Piece/clip/tool/pdcurses/フォルダを作成し、その中にpdcurs34.zipを展開する。
～32ビット版と同じなので省略します。～

■DOS窓を開いて、/Home/Share/Piece/clip/tool/pdcurses/win32/フォルダへ移動する。
～32ビット版と同じなので省略します。～

■Visual Studio 2015 の環境変数を設定する。
＞"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64		…VS2015 x64 Native Tools コマンド プロンプト

■vcwin32.mak を、以下のように変更する。
(56行目)
│【変更前】LIBCURSES	= pdcurses.lib
│【変更後】LIBCURSES	= pdcurses_x64.lib
(109行目)
│【変更前】cvtres /MACHINE:IX86 /NOLOGO /OUT:pdcurses.obj pdcurses.res
│【変更後】cvtres /MACHINE:X64 /NOLOGO /OUT:pdcurses.obj pdcurses.res			…実際にはこれはDLLをビルドする時にしか実行されないアクションであり、この手順(LIBをビルドする)では実行されないのでIX86のままでも構わないのですが、やっぱり気持ちが悪いので確実のために変更しておく事にしました。

■ライブラリをビルドする。
＞nmake -f vcwin32.mak pdcurses_x64.lib

■生成されたライブラリを、一つ上のフォルダへ移動する。
＞MOVE pdcurses_x64.lib ..

■DOS窓のカレントフォルダを一つ上へ移動する。
～32ビット版と同じなので省略します。～

■不要なファイルを削除する。
～32ビット版と同じなので省略します。～

以上です。

「PDCurses」が64ビットに対応しているのかどうか判らないのですが、少なくともコンパイル時には警告は出ませんでした。
また、上述の参考資料のスレッドによると、その人の環境では、64ビットアプリから利用して問題無く動いているそうです。
引き続き、自分の64ビットアプリに組み込んで、動作検証しようと思います。

================================================================================
* Fri Apr 13 23:59:59 JST 2018 Naoyuki Sawa
- 「PDCurses」を、3.4⇒3.6にバージョンアップしました。
  約10年ぶりのバージョンアップであるにもかかわらず、さほど大きくは変わっていないようで、概ねこれまでと近い手順でビルド出来ました。
- ただし、いくつか変更点があり、ビルド手順も変更しました。
  具体的には、以下の二点です。
  　①ソースのアーカイブ内の、Windowsプラットフォーム用のフォルダ名が変わりました。
  　│PDCurses 3.4では「win32/」でしたが、PDCurses 3.6では「wincon/」になりました。
  　│また、Makefileの名前が、PDCurses 3.4では「vcwin32.mak」でしたが、PDCurses 3.6では「Makefile.vc」になりました。
  　②VC++6.0ではビルド出来なくなりました。
  　│VC++6.0では対応していないWindows SDKの型(PCONSOLE_SCREEN_BUFFER_INFOEXなど)が使用されているようで、VC++6.0ではコンパイルエラーになりました。
- ②の変更のために、今回からVS2017を使ってPDCursesのライブラリをビルドする事にしました。
  また、前回までは、PDCursesのライブラリをスタティックライブラリとしてビルドしていましたが、今回からはDLLとしてビルドするようにしました。
  なぜなら、VS2017を使ってビルドしたスタティックライブラリを、VC++6.0で使おうとすると、VS2017特有のランタイム関数のためにリンクエラーになってしまって使えないからです。
  DLLならば、VS2017特有のランタイム関数もDLL内に含まれるので、VC++6.0も使えます。(VS2017でビルドした32ビットDLLをVC++6.0で使う方法は、既に、ssbpLibやSofdecHelperで実績が有ります。)
- 今回の変更も反映して、あらためて、ライブラリのビルド手順を記録しておきます。

■下記のファイルをダウンロードする。
「Public Domain Curses」(https://pdcurses.sourceforge.io/)
⇒「Downloads」(https://sourceforge.net/projects/pdcurses/files/)
⇒「pdcurs36.zip」(https://sourceforge.net/projects/pdcurses/files/pdcurses/3.6/pdcurs36.zip/download)
ダウンロードした'pdcurs36.zip'を、'keep/pdcurs36.7z'に保存しておきました。

■/Home/Share/Piece/clip/tool/pdcurses/フォルダを作成し、その中にpdcurs36.zipを展開する。
下記のフォルダ構成になる。
/Home/Share/Piece/clip/tool/pdcurses/
├…
├wincon/
├…
├curses.h
├curspriv.h
├panel.h
├term.h
└…

～～～32ビット版ライブラリをビルドする～～～

■DOS窓を開いて、/Home/Share/Piece/clip/tool/pdcurses/wincon/フォルダへ移動する。
＞CD /D \Home\Share\Piece\clip\tool\pdcurses\wincon

■Visual Studio 2017 の環境変数を設定する。
＞"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars32.bat"

■ライブラリをビルドする。
＞nmake -f Makefile.vc DLL=Y pdcurses.dll
※前回まではここで、panel.libという不要なライブラリも生成されていたのですが、今回からは生成されなくなったようです。

■生成されたインポートライブラリを、一つ上のフォルダへ移動する。
＞MOVE pdcurses.lib ..

■生成されたDLLを、二つ上のパスの通ったフォルダ(/Home/Share/Piece/clip/tool/)へ移動する。
＞MOVE pdcurses.dll ..\..

■中間ファイルをクリーンアップする。
＞nmake -f Makefile.vc clean
中間ファイルをクリーンアップせずに64ビット版ライブラリをビルドしようとすると、32ビット版の中間ファイルがそのまま使用されてエラーになってしまいます。
かならず一旦、中間ファイルをクリーンアップして下さい。

■DOS窓を閉じる。
DOS窓閉じずにそのまま64ビット版ライブラリをビルドしようとすると、Visual Studio 2017 の環境変数の設定が32ビット版と64ビット版とで混在してしまいます。
かならず一旦、DOS窓を閉じて下さい。

～～～64ビット版ライブラリをビルドする～～～

■DOS窓を開いて、/Home/Share/Piece/clip/tool/pdcurses/wincon/フォルダへ移動する。
＞CD /D \Home\Share\Piece\clip\tool\pdcurses\wincon

■Visual Studio 2017 の環境変数を設定する。
＞"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat"

■Makefile.vc を、以下のように変更する。
(41行目)
│【変更前】SHL_LD = link $(LDFLAGS) /NOLOGO /DLL /MACHINE:$(PLATFORM) /OUT:pdcurses.dll
│【変更後】SHL_LD = link $(LDFLAGS) /NOLOGO /DLL /MACHINE:$(PLATFORM) /OUT:pdcurses_x64.dll
(51行目)
│【変更前】LIBCURSES	= pdcurses.lib
│【変更後】LIBCURSES	= pdcurses_x64.lib
(52行目)
│【変更前】CURSESDLL	= pdcurses.dll
│【変更後】CURSESDLL	= pdcurses_x64.dll

■ライブラリをビルドする。
＞nmake -f Makefile.vc DLL=Y pdcurses_x64.dll
※前回まではここで、panel.libという不要なライブラリも生成されていたのですが、今回からは生成されなくなったようです。

■生成されたインポートライブラリを、一つ上のフォルダへ移動する。
＞MOVE pdcurses_x64.lib ..

■生成されたDLLを、二つ上のパスの通ったフォルダ(/Home/Share/Piece/clip/tool/)へ移動する。
＞MOVE pdcurses_x64.dll ..\..

～～～不要なファイルを削除する～～～

■DOS窓のカレントフォルダを一つ上へ移動する。
＞CD ..

■不要なファイルを削除する。
以下のファイルを残して、それ以外のファイルとフォルダを全て削除して下さい。
/Home/Share/Piece/clip/tool/pdcurses/
├curses.h
├panel.h
├term.h
├pdcurses.lib
└pdcurses_x64.lib

～～～アプリケーション側にも、PDCursesのDLLを使用する設定を追加する～～～

<curses.h>をインクルードする前に、「PDC_DLL_BUILD」を定義しておく必要が有ります。
/Home/Share/Piece/clip/libclip/extclip.h と /Home/Share/Piece/clip/libclip.x64/extclip.h の、同日のコメントを参照して下さい。
(本日、既に上記の変更を行ったので、今後は、個々のアプリケーションで設定する必要は有りません。)

【補足】──────────────────────────────────────────────────────────────────────────────────────
ちなみに今回、PDCursesを3.4⇒3.6にバージョンアップした事で何が変わったかと言うと、機能的な大きな変更は特に無いみたいです。(まだ詳しく調べていませんが…)
10年前から現在までに、WindowsやVisual Studioのバージョンが変わった事で、動作の問題が生じていた点の対策が取られたようです。
気付いた点としては、これまでPDCurses 3.4を使っていて、雛形プロジェクト(test.win)でBison/Flexを使うと、それ以降PDCursesの画面が出なくなっていたのですが、その問題が直りました。
上記の問題は標準入出力のリダイレクトが影響しているようで、Windows 7では発生しておらず、Windows 10で発生するようになった問題だったのですが、PDCurses 3.6では発生しなくなりました。
今の所気付いた改善点としてはその一点だけなのですが、ともかく、機能的な大きな変更は無く、最新の環境での安定性の向上が図られたようで、PDCurses 3.6は使いやすいバージョンだと思います。
──────────────────────────────────────────────────────────────────────────────────────────
