Objective-C with Autotools
当然あると思ってたんだけど、AC_PROG_OBJCって無いんだね。autoscanはCと見なしてAC_PROG_CCを入れてくるが、automakeはちゃんとソースのsuffixを見てOBJCが無いよと言ってくる。半端な対応だ。
ここからメモ。MacOSXで一番簡単に、無理矢理通すならconfigure.ac(configure.in)に以下を足す。
(OBJC, OBJCFLAGS, OBJCLDFLAGSは適当に定義した状態で) AC_PROG_CC _AM_DEPENDENCIES([OBJC]) AC_SUBST(OBJC) AC_SUBST(OBJCFLAGS) AC_SUBST(OBJCLDFLAGS)
_AM_DEPENDENCIESはアンダースコアの通り、本当はconfigure.acで使うべきではないが、am__fastdepOBJCとか言うのがAM_CONDITIONALに無い、と出るのを回避する。AC_PROG_CCが残っているのは、オブジェクトファイルのsuffixであるOBJEXTを置換するため。AC_OBJEXTがAC_PROG_*内に取り込まれちゃって、何もしなくなってしまったらしい。
毎回これをやるのも面倒だから誰かちゃんとマクロファイル書いてないかと探したら、libFoundation(http://www.opendarwin.org/projects/libFoundation/)のソースにAC_PROG_CXXを基にしてAC_PROG_OBJCを作ったobjc.m4があった。これならAC_PROG_CCもAC_SUBSTも全部要らないだろ。しかしこれはaclocal.m4でincludeしてて、手元でも楽にやりたいんだが、"aclocal -I"ではparse errorになってしまった。おかしいなあ。
まあXcodeがあるのにターミナルでautotoolsなんて使うなってことかもしらんが。それにしてもコンピュータネタの久しぶりなこと。