[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[freewnn:00561] Re: cvs server for freewnn.org
- To: freewnn@tomo.gr.jp
- Subject: [freewnn:00561] Re: cvs server for freewnn.org
- From: YABUKI Youichi <yabuki@XXXX>
- Date: Wed, 16 May 2001 18:37:04 +0900
- In-Reply-To: Your message of "Wed, 16 May 2001 14:08:56 JST." <20010516.140856.125104004.hamajima@nagoya.ydc.co.jp>
- Reply-To: freewnn@tomo.gr.jp
- User-Agent: EMH/1.10.0 SEMI/1.13.7 (粟津
)CLIME/1.13.6 (中ノ庄
) Emacs/20.7(i386-vine-linux-gnu) MULE/4.1 (葵
)
議論をちゃんと追っていないし,Wnn のアーキテクチャも
良く理解していないので,外してたらごめんなさい.
> 濱嶋です。
>
> Wed, 16 May 2001 13:31:16 +0900 に
> YABUKI Youichi <yabuki@sranhm.sra.co.jp> さんが書かれた
> <200105160431.NAA30898@sranhm.sra.co.jp> を引用しています
>
> >> Tue, 15 May 2001 21:37:04 +0900 に
> >> Hiroaki Abe <h-abe@pc.highway.ne.jp> さんが書かれた
> >> <15105.8944.674067.26482Z@dorothea.nishihara.homeip.net> を引用しています
> >>
> >>> 前にmakeしたときのlogを思い出してみると、FreeWnnでのCPPの使い方には、
> >>> 辞書を作るためのものもあったように思います。この場合、$CC -E(gcc -E)で
> >>> は(少なくともBeOS版では)まともに動かなかったので、(BeOSでは)CPPを指定
> >>> するように直しました。
> >>
> >> 確かcc -Eでは拡張子が限定されるので、単純に置き換えると辞書の作成に支
> >> 障がでます。辞書のソースの拡張子をccが要求するものに変更する必要があっ
> >> たと思います。
> >
> > FYI ということで.
> >
> > gcc であれば,-x c とか -x c-header を合わせて指定すれば,
> > ファイル名末尾が .c や .h でなくても,C のソースファイルと
> > 思ってくれます.
>
> 私はautoconfのことわからないんですが、これはAC_PROG_CPPマクロで
> "gcc -E"でなく"gcc -x c -E"がつかえて、いまみたいに直接cppを指定しなく
> てもできるようになるということでしょうか?
そのままではならないです.
> これができるならせっかくautoconfを使っているのだから、AC_PROG_CPPマク
> ロを使った方が良いと私は思います。
現状(FreeWnn-1.1.1-a017)でも実は AC_PROG_CPP を使っています.
ただし,Xsi/configure.in の AC_PROG_CPP の現れる直前で,
プラットフォーム毎に CPP やその他のマクロを定義している部分があります.
AC_PROG_CPP は,CPP が*定義されていなければ*,いくつかテストを
行ない,CPP の適切なコマンドを見つけようとします.
ここで行なわれるテストは,C の小さなコードを使って行なわれるので,
やはり,C のソースコード以外に適用することは考慮されていません.
FreeWnn-1.1.1-a017 の各 Makefile.in での CPP の使われ方を見ると
以下のようになっています.
% find . -name Makefile.in -print | xargs grep CPP
./Wnn/pubdicplus/Makefile.in: $(CPP) $(FZK_FLAG) fzk.master | egrep -v '^(# |#line |$$)' | $(ATOF) -h $(HINSI) $@
./cWnn/cdic/Makefile.in: $(CPP) $(FZK_FLAG) con.master | egrep -v '^(# |#line |$$)' | $(ATOF) -h $(HINSI) $@
./cWnn/cdic/Makefile.in: $(CPP) $(FZK_FLAG) con.masterR | egrep -v '^(# |#line |$$)' | $(ATOF) -h $(HINSI) $@
./cWnn/tdic/Makefile.in: $(CPP) $(FZK_FLAG) con.master | egrep -v '^(# |#line |$$)' | $(ATOF) -h $(HINSI) $@
./cWnn/tdic/Makefile.in: $(CPP) $(FZK_FLAG) con.masterR | egrep -v '^(# |#line |$$)' | $(ATOF) -h $(HINSI) $@
./kWnn/kdic/Makefile.in: $(CPP) $(FZK_FLAG) fzk.master | egrep -v '^(# |#line |$$)' | $(ATOF) -h $(HINSI) $@
%
で,この,辞書ファイルの生成(という理解で良いのかどうか実は
知らないのですが)に使われる cpp をどうするかに限っていうと,
対処方法としては,以下のようなものが思いつきますが,いかがでしょうか?
(1) 現状のように,configure.in で必要なプラットフォーム毎に CPP を設定する
cc -E で駄目な場合は,cpp コマンドのパスを書く.
(gcc が使える場合は,gcc -x c -E を書いてもよい)
(2) AC_PROG_CPP に代わるマクロ AC_PROG_CPP_NOT_FOR_C みたいなものを
書いて,gcc が使える場合には CPP に gcc -x c -E を設定するようにする.
(3) 生成される辞書ファイルは多分プラットフォームには依存しないだろうか
ら(本当?),make 時に生成するのではなく,ディストリビューションにあらかじ
め生成したものを入れておく.こうすれば,これの生成担当者の人が,
自分の環境の CPP の心配だけすれば良い.
(4) そもそも cpp は C 言語向けなので,他のファイルに使うといらぬ
副作用があるやもしれないので,もっと別の方法で辞書ファイルの
生成を行なうようにする.
--
矢吹洋一@SRA Linux ソリューション部