すべてがコアモジュールに依存するたくさんの (例えば 200 近くの) モジュールがあるとします。すべてAutotoolsを使用しています。
core モジュールは、従属モジュールが既にさまざまなことに使用している core.m4 ファイルをインストールします。
すべての依存関係には、いくつかのスクリプトを生成してインストールするための install-data-local ルールにもいくつかの行があります。
core_stuffdir=$(prefix)/share/core/stuff/
install-data-local:
generate-stuff stuff.xml
test -d $(DESTDIR)$(core_stuffdir) || mkdir $(DESTDIR)$(core_stuffdir)
stuff=`xmllint --xpath '//stuff[@install="yes"]/@name' stuff.xml`; \
$(INSTALL_DATA) $$stuff $(DESTDIR)$(core_stuffdir); \
rm $$stuff
…
$(INSTALL_DATA) other-module-specific-stuff …
…
現在、約 200 ファイルにわたって冗長に複製されているこれらの 5 行を削除し、代わりに core.m4 で行を定義したいと思います。依存関係は、次のようなことSOMEVAR: somevalue
(または同様に短いもの、最悪でも install-data-local の 1 行のこと) を言って、make install 中にそれらの行を実行できるようにする必要があります。
これらの行を core.m4 で定義し、Makefile.am で利用できるようにする良い方法はありますか? ネット上で同様の例を見つけることができません。
今考えられる唯一の解決策は、m4 が install-data-local から呼び出すことができるシェル スクリプトを吐き出すことですが、それが最善の (または最も自動ツール的な) 方法であるかどうかはわかりません。
fragment.am
または、コア モジュールからautomake ファイルを配布する簡単な方法はありますか? (これは、たとえば Python のコンパイル規則が定義されている方法のようです。)