From: WATANABE Hirofumi Date: 2003-09-30T15:40:35+09:00 Subject: [ruby-dev:21437] Re: Makefile.inのlex.c わたなべです。 Yukihiro Matsumoto writes: > |Makefileでgperfが実行される可能性がある以上、configure.inで > |gperfをチェックすべきだと思います。 > |で、gperfがなければlex.c: keywordsの関係をMakefileから削除し > |てしまえばよさそうな気がします。 > > ううむ。ちょっとだけ面倒。 win32/Makefile.subもlex.c: keywordsがないですし、これが一番 現実的だと思います。 楽な方法を考えました。今は parse.@OBJEXT@: parse.c ruby.h config.h defines.h intern.h missing.h \ env.h node.h st.h regex.h util.h lex.c のようにparse.oがlex.cに依存してますが、gperfがない場合は lex.cを依存関係から外すだけでよさそうです。 > これらのルールは、私(autoconfもgperfも持っていることは保証済 > み)の利便性のためなので、できれば削りたくないです。configure > やlex.cの入っていないソースパッケージは配布していないはずで > すし、これらのルールがあっても問題ないと考えていたのですが。 とりあえずconfigure関係はそのままいじらないとして、lex.cのほ うはgperfが存在してるときだけ有効にすれば、たぶんみんなhappy になります。 > あ、でも、もとのケースではなにか問題が起きたんですよね。どう > するのが一番いいんだろう? 今のままだとビルドディレクトリを別にしたときに、OpenBSDでは gperfが必須になります(FreeBSDではデフォルトでインストールさ れる)。 あ、でもlex.cがカレントにあればいいので、コピーすればいいと も言えるか…。 lex.c: keywords if test "$(srcdir)" = "."; then \ gperf -p -j1 -i 1 -g -o -t -N rb_reserved_word -k1,3,$$ $> > $@; \ else \ cp $(srcdir)/lex.c .; \ fi -- わたなべひろふみ