* Sat Apr 23 21:04:30 JST 2016 Naoyuki Sawa
- libyamlは、YAML(http://yaml.org/)パーサーライブラリのデファクトスタンダードです。
  libyamlのサイト(http://pyyaml.org/wiki/LibYAML)からダウンロードしたライブラリを、オリジナル版保存/yaml-0.1.5.tar.gzに保存しておきました。
  2016/04/23時点のライブラリバージョンとダウンロードリンクは、以下の通りです:
  │The current release of LibYAML: 0.1.5 (2014-02-04)
  │Download the source package: http://pyyaml.org/download/libyaml/yaml-0.1.5.tar.gz
- Windows用ライブラリをビルドするために、VC++6.0のプロジェクトを作成しました。
  yaml-0.1.5.tar.gzには元々、VC++6.0用のプロジェクトも含まれているのですが、使用せずに自分で作成する事にしました。
  そうした理由は、yaml-0.1.5.tar.gzに含まれているVC++6.0用のプロジェクトは、フォルダ階層が特殊だったり、テストプログラム一式もワークスペースに含まれていたりして、使い辛かったからです。
  プロジェクトを作成した手順は、以下の通りです。
  ①VC++6.0を実行し、「ファイル」→「新規作成」→「プロジェクト」→「Win32 Static Library」を選択して、プロジェクトを作成しました。
    │プロジェクト名: yaml
    │位置:           C:\HOME\SHARE\PIECE\CLIP\
  ②プロジェクトの設定を、以下のように変更しました。
  ・「プロジェクト」→「設定」→「設定の対象=Win32 Debug」→「C/C++」→「カテゴリ=コード生成」→「使用するランタイムライブラリ」:
    │【変更前】シングルスレッド(デバッグ)
    │【変更後】マルチスレッド(デバッグ)
  ・「プロジェクト」→「設定」→「設定の対象=Win32 Release」→「C/C++」→「カテゴリ=コード生成」→「使用するランタイムライブラリ」:
    │【変更前】シングルスレッド
    │【変更後】マルチスレッド
  ・「プロジェクト」→「設定」→「設定の対象=Win32 Debug」→「C/C++」→「カテゴリ=プリプロセッサ」→「プリプロセッサの定義」:
    │【変更前】WIN32,_DEBUG,_MBCS,_LIB
    │【変更後】WIN32,_DEBUG,_MBCS,_LIB,HAVE_CONFIG_H,YAML_DECLARE_STATIC
    │                                  ~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~ この二つを追加しました。
  ・「プロジェクト」→「設定」→「設定の対象=Win32 Release」→「C/C++」→「カテゴリ=プリプロセッサ」→「プリプロセッサの定義」:
    │【変更前】WIN32,NDEBUG,_MBCS,_LIB
    │【変更後】WIN32,NDEBUG,_MBCS,_LIB,HAVE_CONFIG_H,YAML_DECLARE_STATIC
    │                                  ~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~ この二つを追加しました。
  ・「プロジェクト」→「設定」→「設定の対象=すべての構成」→「C/C++」→「カテゴリ=プリプロセッサ」→「インクルードファイルのパス」:
    │【変更前】(空)
    │【変更後】.
  ・「プロジェクト」→「設定」→「設定の対象=すべての構成」→「C/C++」→「カテゴリ=プリコンパイル済みヘッダー」:
    │【変更前】プリコンパイル済みヘッダーを自動的に使用
    │【変更後】プリコンパイル済みヘッダーを使用しない		//必須ではありませんが、安心のために…
  ③yaml-0.1.5.tar.gzを展開し、ライブラリのビルド必要なファイルだけを、プロジェクトフォルダの中にコピーしました。
    │/yaml-0.1.5/src/api.c          → C:\Home\Share\Piece\clip\yaml\api.c
    │/yaml-0.1.5/src/dumper.c       → C:\Home\Share\Piece\clip\yaml\dumper.c
    │/yaml-0.1.5/src/emitter.c      → C:\Home\Share\Piece\clip\yaml\emitter.c
    │/yaml-0.1.5/src/loader.c       → C:\Home\Share\Piece\clip\yaml\loader.c
    │/yaml-0.1.5/src/parser.c       → C:\Home\Share\Piece\clip\yaml\parser.c
    │/yaml-0.1.5/src/reader.c       → C:\Home\Share\Piece\clip\yaml\reader.c
    │/yaml-0.1.5/src/scanner.c      → C:\Home\Share\Piece\clip\yaml\scanner.c
    │/yaml-0.1.5/src/writer.c       → C:\Home\Share\Piece\clip\yaml\writer.c
    │/yaml-0.1.5/src/yaml_private.h → C:\Home\Share\Piece\clip\yaml\yaml_private.h
    │/yaml-0.1.5/include/yaml.h     → C:\Home\Share\Piece\clip\yaml\ude/yaml.h
    │/yaml-0.1.5/win32/config.h     → C:\Home\Share\Piece\clip\yaml\2/config.h	//これ忘れないように!!
  ④上記のファイルを全て、プロジェクトに追加しました。
  ⑤「Win32 Debug」と「Win32 Release」をビルドしました。
  ⑥不要なファイルを削除しました。具体的には以下の通りです。
    │C:\Home\Share\Piece\clip\yaml\Debugフォルダの中の、yaml.libとvc60.pdbを残して、それ以外を削除しました。	//vc60.pdbを残す理由は、/clip/libclip/README.TXTの「Wed Feb 24 21:12:31 JST 2016 Naoyuki Sawa」のコメントを参照して下さい。
    │C:\Home\Share\Piece\clip\yaml\Releaseフォルダの中の、yaml.libを残して、それ以外を削除しました。
    │C:\Home\Share\Piece\clip\yaml\yaml.ncb,yaml.opt,yaml.plgを削除しました。
  以上です。
- P/ECE用ライブラリをビルドする方法は、このフォルダで:
    │make
  を実行して下さい。ちなみに、
    │make clean
  を実行すると、Windows用ライブラリビルド時の不要なファイルを消し、P/ECE用ライブラリビルド時の中間ファイルは残します。
  そうした理由は、/clip/parson/README.TXTの同日のコメントを参照して下さい。

* Fri Sep 02 21:28:22 JST 2016 Naoyuki Sawa
- ライブラリをバージョンアップしました。
  2016/09/02時点のライブラリバージョンとダウンロードリンクは、以下の通りです:
  │The current release of LibYAML: 0.1.7 (2016-08-28). 
  │Download the source package: http://pyyaml.org/download/libyaml/yaml-0.1.7.tar.gz.
  libyamlのサイト(http://pyyaml.org/wiki/LibYAML)からダウンロードしたライブラリを、オリジナル版保存/yaml-0.1.7.tar.gzに保存しておきました。
- Windows用ライブラリも、P/ECE用ライブラリも、ビルド手順は前回と変わっていません。
  ビルド手順は、'Sat Apr 23 21:04:30 JST 2016'の説明を参照して下さい。

* Sat Sep 03 21:12:23 JST 2016 Naoyuki Sawa
- x64用のVS2015プロジェクトを追加しました。
  64ビット版のコンパイルに使用した、コンパイラのバージョンは、以下の通りです。
  │Microsoft Visual Studio Community 2015 Version 14.0.25425.01 Update 3
- プロジェクトを作成した手順は、以下の通りです。
  ①VS2015を実行し、「ファイル」→「新規作成」→「プロジェクト」→「インストール済み」→「Visual C++」→「Windows」→「全般」→「空のプロジェクト」を選択して、プロジェクトを作成しました。
    │プロジェクト名:                     yaml
    │位置:                               C:\Home\Share\Piece\clip\yaml\
    │ソリューションのディレクトリを作成: オフ
    │新しいGitリポジトリの作成:          オフ
  ②一旦VS2015を終了して、以下の操作を行いました。
    │「C:\Home\Share\Piece\clip\yaml\yaml\yaml.sln」を「C:\Home\Share\Piece\clip\yaml\yaml.sln」へ移動する。
    │「C:\Home\Share\Piece\clip\yaml\yaml\yaml.vcxproj」を「C:\Home\Share\Piece\clip\yaml\yaml.vcxproj」へ移動する。
    │「C:\Home\Share\Piece\clip\yaml\yaml\yaml.filters」を「C:\Home\Share\Piece\clip\yaml\yaml.filters」へ移動する。
    │「C:\Home\Share\Piece\clip\yaml\yaml\」フォルダを、残っているファイルごと削除する。
    本当は①の時点で「C:\Home\Share\Piece\clip\yaml\」にプロジェクトを作成したいのですが、VS2015がVC++6.0用のプロジェクトファイル(yaml.dsp,yaml.dsw)が存在する事を検出して、同じフォルダにプロジェクトを作成してくれません。
    そこで、①②の方法を使えば、「C:\Home\Share\Piece\clip\yaml\」フォルダに、VC++6.0用とVS2015用のフォルダを共存させられます。
  ③「C:\Home\Share\Piece\clip\yaml\yaml.sln」をダブルクリックして、再度VS2015を実行しました。
  ④以下のファイルを全て、プロジェクトに追加します。(VC++6.0の時と同じです。)
    │C:\Home\Share\Piece\clip\yaml\api.c
    │C:\Home\Share\Piece\clip\yaml\dumper.c
    │C:\Home\Share\Piece\clip\yaml\emitter.c
    │C:\Home\Share\Piece\clip\yaml\loader.c
    │C:\Home\Share\Piece\clip\yaml\parser.c
    │C:\Home\Share\Piece\clip\yaml\reader.c
    │C:\Home\Share\Piece\clip\yaml\scanner.c
    │C:\Home\Share\Piece\clip\yaml\writer.c
    │C:\Home\Share\Piece\clip\yaml\yaml_private.h
    │C:\Home\Share\Piece\clip\yaml\ude/yaml.h
    │C:\Home\Share\Piece\clip\yaml\2/config.h
    尚、VC++6.0の時は、プロジェクトの設定を変更した後にファイルを追加したのですが、VS2015では、ファイルを追加してからプロジェクトの設定を変更します。
    VC++6.0ではどちらの順序でも構わないのですが、VS2015ではファイルを追加しないと現れない「構成プロパティ」→「C/C++」の設定項目が現れないからです。
  ⑤プロジェクトの設定を、以下のように変更しました。
  ・「プロジェクト」→「プロパティ」→「構成=すべての構成、プラットフォーム=すべてのプラットフォーム」→「構成プロパティ=全般」→「構成の種類」:
    │【変更前】アプリケーション (.exe)
    │【変更後】スタティック ライブラリ (.lib)
  ・「プロジェクト」→「プロパティ」→「構成=すべての構成、プラットフォーム=すべてのプラットフォーム」→「構成プロパティ=VC++ディレクトリ」→「インクルードディレクトリ」:
    │【変更前】$(VC_IncludePath);$(WindowsSDK_IncludePath);
    │【変更後】.;$(IncludePath)												//<編集...>を開いて「.」を追加すれば、自動的にこうなります。
  ・「プロジェクト」→「プロパティ」→「構成=すべての構成、プラットフォーム=すべてのプラットフォーム」→「構成プロパティ=C/C++」→「プリプロセッサ」→「プリプロセッサの定義」:
//{{2016/09/04変更:プリプロセッサの定義に「_NO_CRT_STDIO_INLINE」を追加しました。
//  │【変更前】_MBCS;%(PreprocessorDefinitions)
//  │【変更後】_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;_NO_CRT_STDIO_INLINE;HAVE_CONFIG_H;YAML_DECLARE_STATIC;%(PreprocessorDefinitions)	//<編集...>を開いて「_CRT_SECURE_NO_WARNINGS」「_CRT_NONSTDC_NO_WARNINGS」「HAVE_CONFIG_H」「YAML_DECLARE_STATIC」を一行づつ追加すれば、自動的にこうなります。
//↓2016/09/04変更:プリプロセッサの定義に「_NO_CRT_STDIO_INLINE」を追加しました。
//↓ * Sun Sep 04 21:41:17 JST 2016 Naoyuki Sawa
//↓ - プリプロセッサの定義に「_NO_CRT_STDIO_INLINE」を追加しました。
//↓   この変更を行う前はの当ライブラリとアプリケーションをリンクした時に、当ライブラリとlibclip.x64とで'sprintfが重複している'旨のエラーが発生する事が有ったからです。
//↓   リビルドすると直ったりするので、原因ははっきりしていません。
//↓   しかし、/clip/libclip.x64/ には「_NO_CRT_STDIO_INLINE」を定義しており、当ライブラリには「_NO_CRT_STDIO_INLINE」を定義していない事の不一致が原因ではないかと推測して、当ライブラリにも「_NO_CRT_STDIO_INLINE」を追加する事にしました。
//↓   これで解決するかどうかは判らないのですが、少なくとも悪影響は無いと思います。	⇒{{2016/09/07追記:_NO_CRT_STDIO_INLINEの追加では解決しませんでした。上記のリンクエラーは、ライブラリ内で独自に定義した非inline関数の定義と、VS2015のinlineの関数によって生成された実体(?)が衝突するのが原因であるみたいです。そんな訳で_NO_CRT_STDIO_INLINEは関係無かったのですが、やっぱり標準入出力関数がインライン化されるのは何となく気持ちが悪いので、引き続き_NO_CRT_STDIO_INLINEは定義したままにしておく事にしました。}}
//↓ - 尚、2016/09/04現在、/clip/tool/gc/gc_x64.libと、/clip/tool/pthreads/pthreadVC2_x64[d].libにも、「_NO_CRT_STDIO_INLINE」は定義していません。
//↓   もし今後、同様の'sprintfが重複している'等のエラーが発生した場合は、上記のライブラリにも「_NO_CRT_STDIO_INLINE」を追加してビルドしてみて下さい。
    │【変更前】_MBCS;%(PreprocessorDefinitions)
    │【変更後】_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;_NO_CRT_STDIO_INLINE;HAVE_CONFIG_H;YAML_DECLARE_STATIC;%(PreprocessorDefinitions)	//<編集...>を開いて「_CRT_SECURE_NO_WARNINGS」「_CRT_NONSTDC_NO_WARNINGS」「_NO_CRT_STDIO_INLINE」「HAVE_CONFIG_H」「YAML_DECLARE_STATIC」を一行づつ追加すれば、自動的にこうなります。
//}}2016/09/04変更:プリプロセッサの定義に「_NO_CRT_STDIO_INLINE」を追加しました。
  ・「プロジェクト」→「プロパティ」→「構成=Debug、プラットフォーム=すべてのプラットフォーム」→「構成プロパティ=C/C++」→「コード生成」→「ランタイムライブラリ」:
    │【変更前】マルチスレッド デバッグ DLL (/MDd)
    │【変更後】マルチスレッド デバッグ (/MTd)
  ・「プロジェクト」→「プロパティ」→「構成=Release、プラットフォーム=すべてのプラットフォーム」→「構成プロパティ=C/C++」→「コード生成」→「ランタイムライブラリ」:
    │【変更前】マルチスレッド DLL (/MD)
    │【変更後】マルチスレッド (/MT)
  ⑥Debug x64」と「Release x64」をビルドしました。
    たくさん警告が出ますが、とりあえず無視しました。(無視して問題無いかどうか、使いながら検証しようと思います。)
    尚、x86の設定も一応残してありますが、このVS2015プロジェクトではx86をビルドしてはいけません。
    まだ当面の間、x86のライブラリは、VC++6.0でビルドして下さい。
    x86の設定を残している理由は、今後、x86もVS2015に移行する時のためです。(当分先だと思います。)
  ⑦不要なファイルを削除しました。具体的には以下の通りです。
    │C:\Home\Share\Piece\clip\yaml\x64\Debugフォルダの中の、yaml.libとyaml.pdbを残して、それ以外を削除しました。	//yaml.pdbを残す理由は、/clip/yaml/Makefileの「clean:」のコメントを参照して下さい。
    │C:\Home\Share\Piece\clip\yaml\Releaseフォルダの中の、yaml.libを残して、それ以外を削除しました。
    │C:\Home\Share\Piece\clip\yaml\.vs\フォルダ,及び,C:\Home\Share\Piece\clip\yaml\yaml.VC.dbファイルを削除しました。
    不要なファイルの削除は、make cleanでも行う事が出来ます。
  以上です。
