何故glewは色々な環境でmake一発なのか
Autoconfで使われているconfig.guessというのを使っているのね。
config.guessは実行した環境についての情報を返してくれます。
ちなみにMinGWで実行すると、i686-pc-mingw32 て表示されます。
SHELL = /bin/sh SYSTEM = $(shell config/config.guess | cut -d - -f 3 | sed -e 's/[0-9\.]//g;')
まずシェルからconfig/config.guessを実行して、"-"を区切り文字にして3個目の文字列を取ってきます。MinGWならばmingw32になりますね。
で最後は数字と.を消す...と。
SYSTEM.SUPPORTED = $(shell test -f config/Makefile.$(SYSTEM) && echo 1)
後はSYSTEMに入っている値から指定のファイルが存在するか調べます。
MinGWだとconfig/Makefile.mingwがあるか確認するわけですね。で存在するならSYSTEM.SUPPORTEDには1を入れると。
ifeq ($(SYSTEM.SUPPORTED), 1) include config/Makefile.$(SYSTEM) else $(error "Platform '$(SYSTEM)' not supported") endif
SYSTEM.SUPPORTEDに1が入っていればconfig/Makefile.mingwを読み込み、そうでないならerrorメッセージを表示して終了。
問題はconfig/Makefile.mingwとかは自分で作らないといけないところなのですが、glewがCygwin, Darwin, FreeBSD, irix, Linux, MinGW, Solaris用は作ってくれているので、まあ困らないかなと。
Autotoolsを使うよりはシンプルで私は好きですね。
ちなみにconfig.guessは基本的にGPLなので注意。
本体がGPL以外のライセンスならば、パッケージング時に明確にしておかないとね。