Next: , Previous: Makefile Basics, Up: Makefile Conventions


7.2.2 Makefileのユーティリティ

Makefileのコマンド(そしてconfigureのようなシェル・スクリプト)を、 cshではなく、shで走るように書きなさい。kshbashの特別な機能を一切使ってはいけない。

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

圧縮プログラムのgzipdist規則で使って良い。

これらのプログラムに対して、一般的にサポートされているオプションを守りな さい。例えば、あったら便利な、‘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)

ranlibldconfigを使うとき、システムが当のプログラムを持っ ていなくても悪いことが何も起きないようにするべきだ。そのコマンドからのエ ラーを無視するように調整し、そのコマンドの前にユーザにこのコマンドの失敗 が問題ではないことを伝えるメッセージを出力しなさい。(Autoconfの ‘AC_PROG_RANLIB’マクロはこれを助けることができる。)

もしシンボリック・リンクを使うなら、シンボリック・リンクを持たないシステ ム用に別手段を実装するべきだ。

Make変数を通して使って良い別のユーティリティには次のものがある。

     chgrp chmod chown mknod

他のユーティリティを使うことは、あなたがそれらのユーティリティが存在する と知っている特定のシステムのためだけに、Makefileの一部(やスクリプト)が意 図されているなら使って良い。