	TECS Generator (Release 1.6.1)

TECS (TOPPERS Embedded Component System) は、組込みシステムに適したコ
ンポーネントシステムとして NPO 法人TOPPERS プロジェクトの TECS WG
(Working Group) により開発されました．

【利用条件】

TECS 参照実装の利用条件は，各ファイルの先頭に表示されているTOPPERSライ
センスによります．TECS 仕様については TOPPERS ライセンスとは異なるライ
センスにより提供されます．

【TECS リファレンスマニュアル】

組込みコンポーネントシステム TECS のリファレンスマニュアルは、以下を参
照してください．

	http://tecs-docs.readthedocs.io/ja/latest/

TECS ジェネレータ V1.6.0 以降の新機能については、以下を参照してください。

 ・実行時情報機能 TECSInfo について 
       doc/実行時情報機能TECSInfo.pdf
 ・TOPPERS/HRP3 での TECS の使い方について
       doc/TOPPERS_HRP3におけるTECSの使用方法.pdf

【質問・バグレポート・意見等の送付先】

TECS をより良いものにするためのご意見等を歓迎します．TECS に関する質問
やバグレポート，ご意見等は，TOPPERSプロジェクトの会員はコンポーネント
仕様 WG メーリングリスト（com-wg@toppers.jp）宛に，その他の方は 
TOPPERS ユーザーズメーリングリスト（users@toppers.jp）宛にお願いします．

TOPPERSユーザーズメーリングリストへの登録方法については，以下のページに
説明があります．

	http://www.toppers.jp/community.html

【準備】

TECS のインタフェースジェネレータ tecsgen を使用するためには、以下のも
のが必要になります．これらは配布パッケージに含まれていません．各自で準
備してください．

  Ruby  … スクリプト言語 (version 2.2.2p95)

() 内は試験を行ったバージョンです．version 1.9.2 以降であれば、使用で
きるはずです．
cygwin (cygwin1.dll version 2.0.4 64bit)で動作確認を行っていますが、
32bit 版 の他 Linux, MacOS X でも動作したことが確認されています．

【使用方法】

TOPPERS/ASP3 (以下 ASP3), TOPPERS/HRP3 (以下 HRP3) のビルドの際には、
そのパッケージに含まれるuser.txt の TECS に関する記載を参照してくださ
い．通常、本文書の、以下を参照する必要はありません。
なお ASP3, HRP3 で使用する場合、このファイルが置かれているディレクトリ
ではなく、teecsgen ディレクトリを ASP3, HRP3 のディレクトリ下に置く必
要があります．

TECS ジェネレータを使用するには、以下を行う必要があります．

1) 言語に関する設定

(この項は、実際に使ってみて、文字コードに関するトラブルがあった場合に
読み返してもよいはずです)
以下の環境変数などにより、言語、文字コードを判定します．これらは、コン
ソールに出力されるエラー、警告メッセージと、入出力ファイルに影響します．
言語に関する設定が誤っている場合、文字化けが生じる可能性があります。
以下の順で評価され、最後に有効であったものが採用されます．

 ・codepage (exerb 版のみ)
 ・LANG 環境変数 (非 exerb 版のみ)
 ・TECSGEN_LANG
 ・TECSGEN_FILE_LANG (ファイルの言語、文字コード)
 ・-k (ファイルの文字コードのみ)

最近では、環境変数 LANG に UTF-8 を指定する方がよい場合が多くなってい
ます．そのような場合に、ファイルの文字コードを EUC とする場合は、以下
のように設定します (例えば .bashrc に記述します) ．

   LANG=ja_JP.UTF-8
   export TECSGEN_FILE_LANG=ja_JP.eucJP     (-k で指定してもよい)

cygwin 環境で exerb 版を使用し、ファイルの文字コードを sjis とする場合
は、環境変数を特に設定する必要がありません．あるいは -k で文字コードを
指定することもできます(TECS パッケージでは、この方法が使用されています)。

現在のバージョンでは、ファイルの文字コードに UTF-8 を指定しない場合、
プラグインの生成するコメントが文字化けします（コンパイラが、すべてを 1 
バイト文字として扱うのであれば、その状態でコンパイルしても、問題はない
はずです）。

2) 環境変数を設定（b-shell 系）

PATH に tecsgen のあるディレクトリを追加します．
TECSPATH を tecsgen/tecs の存在するディレクトリに設定します．これは
MRubyBridgePlugin, *RPCPlugin を使用したアプリケーションをビルドする際
に必要になります．

以下の実行により上記の環境変数が設定されます．これは set_env.sh がある
ディレクトリで行う必要があります．

 % source set_env.sh

TECSPATH は mruby, RPC に関するプラグインを使用する場合、test ディレク
トリ下をビルドする場合に必要ですが、mruby, RPC に関するプラグインを使
用する場合でも、Makefile の　vpath で参照されるために必要となるもので、
他の方法でパスを指定すれば、必要ありません．

set_env.sh は bash など B shell 系で動作します．C shell 系の場合、
set_env.sh の内容を参考に PATH, TECSPATH の設定を行ってください．
set_env.sh のあるディレクトリで実行してください．.bashrc, .cshrc など
に記述すれば、一々設定する set_env.sh を読み込む必要はありません。

3) TECS ジェネレーターの生成

V1.1.0 以降 make は、必要ありません．racc により生成されたモジュールが
同梱されています．

4) ジェネレータの使用方法

 % tecsgen tecs.cdl

TECS ジェネレータは上記のように cdl ファイルを引数に取ります．
tecsgen を引数無しで実行すると、簡単な引数の説明が表示されます．

5) テストコードのビルド

 % cd test
 % make

TECS ジェネレータとテストコードのメークが実行されます．環境によっては
make や gcc のバージョンの相違によりテストコードのメークに失敗する可能
性があります．その場合でも TECS ジェネレータの動作には問題ありません。

【備考】

・tecsgen V1.3.1.2 以降 exerb 版はサポートされなくなりました．また、
  Ruby 1.9.2 よりも前のバージョンでは、正しく動作しない可能性がありま
  す．

・cygwin 環境で使用する場合、cygwin 版の Ruby を使用してください．
  cygwin 環境で MinGW 版等の Ruby を使用すると、動作しない可能性があり
  ます．

