Makefile でも分岐

Adium のログファイルを全部失いました・・・

~/Library/Application Support/Adium 2.0/ に格納されているので、むやみに削除しないようにしましょうね。

1年分の会話ログを失うと、どうせあとからみないとわかっていながらも悲しくなります。

ログと言えばパソコン通信草の根BBS時代のものも私のコンピュータには残っていません。まぁ、今読み返したら目から火が出るほど恥ずかしいものなのでしょうが、やっぱり何かもの寂しいです。(1996年頃)

さて、gcc であらかじめ定義されているフラグ(マクロ)を調べる にかきましたように、工夫すると結構いろんな環境でコンパイルできるコードが書けるわけですが、肝心の Makefile の LDFLAGS とかは相変わらず手で修正してあげないといけません。

そんなときには ifeq という便利なものが利用できます。


# Sun
ifeq ($(shell uname),SunOS)
CC = /opt/SUNWspro/bin/cc
CFLAGS = -fast -g -KPIC -mt -xtarget=native -xO4 -v -Xa -xipo=2 -xipo_archive=writeback -xparallel -xreduction -DHAVE_POLL -DHAVE_STRLCAT -DHAVE_STRLCPY
endif

# Linux
ifeq ($(shell uname),Linux)
CC = gcc
CFLAGS = -g -O2 -Wall -Werror -Wpointer-arith -Wcast-qual -Wcast-align -Waggregate-return -Wstrict-prototypes -Wmissing-declarations -Wredundant-decls -Wnested-externs -Winline -fPIC -finline-functions -DHAVE_POLL
endif

# MacOS X
ifeq ($(shell uname),Darwin)
CC = gcc
CFLAGS = -g -Wall -Werror -Wpointer-arith -Wcast-qual -Wcast-align -Waggregate-return -Wstrict-prototypes -Wmissing-declarations -Wredundant-decls -Wnested-externs -Winline -fPIC -finline-functions -DHAVE_POLL -DHAVE_VASPRINTF -DHAVE_STRLCAT -DHAVE_STRLCPY
endif

こんな感じでかき分けられます。

この例では uname を呼んでその結果を定義した文字列と比較していますが、このコマンドをもっときちんとしたシステムを区別できるものに変更すればさらに応用がききそうですね。

本当に簡単なプログラムなら configure いらずですね。