ファイルからコンテンツを読み取り、それを CFLAGS に渡す Makefile.in を作成しました。./configure ... を呼び出すと、Makefile が生成され、すべてが正常に機能します。
Makefile.in:
...
MY_REVISION_FILE=my-revision.txt
MY_REVISION=$(shell cat $(top_srcdir)/$(MY_REVISION_FILE))
AM_CFLAGS = -I$(EXTRAS_INCLUDE_DIR) -I$(top_srcdir) -DMY_REVISION=$(MY_REVISION)
...
Makefile.inコードをMakefile.amに移動してMakefile.inの自動生成を許可すると、問題が発生します。autoreconf -i --force を呼び出すと、次のエラーで停止します。
server/Makefile.am:9: cat $(top_srcdir: non-POSIX variable name
server/Makefile.am:9: (probably a GNU make extension)
autoreconf: automake failed with exit status: 1
この問題は、かなり前から私を悩ませています。どこでも検索しましたが、その解決策を見つけるのに役立つものは見つかりませんでした。つまり、必要なのは、"$(shell cat $(top_srcdir)/$(MY_REVISION_FILE))" のような未解釈のテキストを Makefile.am から Makefile.in にコピーする方法だけです。
何か案が?
ありがとう、オリバー