次: Command Variables, 前: Makefile Basics, 上: Makefile Conventions
Makefileのコマンド(そしてconfigure
のようなシェル・スクリプト)を、
csh
ではなく、sh
で走るように書きなさい。ksh
や
bash
の特別な機能を一切使ってはいけない。
configure
スクリプトと構築とインストールのためのMakefileの規則は次
のものを除いて、どんなユーティリティも直接使うべきではない。
cat cmp cp diff echo egrep expr false grep install-info ln ls mkdir mv pwd rm rmdir sed sleep sort tar test touch true
圧縮プログラムのgzip
はdist
規則で使って良い。
これらのプログラムに対して、一般的にサポートされているオプションを守りな さい。例えば、あったら便利な、`mkdir -p'はほとんどのシステムでサポー トしていないので使ってはいけない。
少数のシステムではサポートしていないので、makefileではシンボリック・リン クを作らないようにするのは良い考えだ。
構築とインストールのためのMakefileの規則はまたコンパイラや関連したプログ
ラムを使っていいが、ユーザが代わりのものと換えられるようにmake
変
数を通して使うべきだ。我々が言っているプログラムをここでいくつか挙げる。
ar bison cc flex install ld ldconfig lex make makeinfo ranlib texi2dvi yacc
これらのプログラムを走らせるのに次のmake
変数を使いなさい。
$(AR) $(BISON) $(CC) $(FLEX) $(INSTALL) $(LD) $(LDCONFIG) $(LEX) $(MAKE) $(MAKEINFO) $(RANLIB) $(TEXI2DVI) $(YACC)
ranlib
やldconfig
を使うとき、システムが当のプログラムを持っ
ていなくても悪いことが何も起きないようにするべきだ。そのコマンドからのエ
ラーを無視するように調整し、そのコマンドの前にユーザにこのコマンドの失敗
が問題ではないことを伝えるメッセージを出力しなさい。(Autoconfの
`AC_PROG_RANLIB'マクロはこれを助けることができる。)
もしシンボリック・リンクを使うなら、シンボリック・リンクを持たないシステ ム用に別手段を実装するべきだ。
Make変数を通して使って良い別のユーティリティには次のものがある。
chgrp chmod chown mknod
他のユーティリティを使うことは、あなたがそれらのユーティリティが存在する と知っている特定のシステムのためだけに、Makefileの一部(やスクリプト)が意 図されているなら使って良い。