[sugj-tech:7640] Re: 日本語版makefileの不備(仕切り直し)

Michio Matsuyama michio_matsuyama @ yahoo.co.jp
2017年 6月 17日 (土) 19:28:20 JST


matsuand です。

日本語版 makefile の問題点として長々と報告をあげております。
開発各位の了解を頂きたくお願いしたいことを1点に絞って申し上げます。

> 1. makefileの根本的な作りとして Makefile.setting を $(MAKE) により
> 作り出すのは、autoconf や configure の通常処理から見て危うい。実際に
> 警告エラーを出している。make が一度失敗し makeの自動再処理により
> なんとかつじつまが合う処理結果になっている。Makefile.setting.in を
> 日本語版ソース内に事前に含めていないことが原因。

結論として、私は Makefile.settings を $(MAKE) から生成する方式をやめに
して configure スクリプトに任せる方式への改変を行いたいと思います。
この理由は一言でいえば、それが自然であると考えるからであり、現状の方式
は ./configure の局面(つまりビルド前の環境設定の"静的"局面)と make
の局面(環境設定後に実際にビルドする"動的"な局面)を混同しているため
です。Makefile.settings に関する警告エラーはその混同が原因で発生します。

Makefile.settings ファイルは元々 Makefile.settings.in ファイルに基づいて
生成されるものであり、一般に *.in ファイルというものは configure 
スクリプトがその処理時に .in の拡張子を取り除いたファイルを生成する
ものです。生成局面が configure 時にあり make 時ではありません。

オリジナルソースは docs-xml をビルドする際にいきなり make コマンドを
実行しますが、その実は make ターゲットの中に autoconf && ./configure
の実行が含まれていて、オリジナルがそもそも ./configure を実行する形式
になっています。オリジナルは make さえ実行すれば後は全自動でやって
あげます、という方式をとっているわけです。日本語版もやはり make 実行を
行うことを初めに行いますが、コピーしたオリジナルの Makefile を利用して
いることから、結局は autoconf && ./configure を呼び出すことになります。

Makefile.settings の警告エラーが発生するのは、事細かく書きませんが、
オリジナル Makefile 内に記述された Include Makefile.settings の読み込み
時点で、まだ Makefile.settings.in からこのファイルを生成する処理が為さ
れていないためです。configure処理が完了していないのに
$(MAKE) -f Makefile Makefile.settings を呼び出してしまっているからです。

この警告エラーを出さないように、現状の makefile を改変することを考えて
みてください。と申し上げたいのですが、考えてみるのはしんどいですし、
無駄か思います。方式がよろしくないからであり、自然と思われる方式、
つまりは ./configure に処理を委ねる方式に変えてしまえば、一気に改変は
片付きます。

--------

長文は皆様にとっても鬱陶しいものかと思います。
今後極力、手短にしていきたいと思ってはいるのですが・・・
メールだけではなかなか説明が尽きません。

現状 makefile の開発にご尽力された開発者の皆様、
どうぞご意見をお聞かせください。よろしくお願い致します。

matsuand

---
Michio Matsuyama
michio_matsuyama AT yahoo DOT co DOT jp


sugj-tech メーリングリストの案内