.include <bsd.port.mk> の行の後には何も書かないようにしてください。 大抵の場合は Makefile の中程のどこかで bsd.port.pre.mk をインクルードして、 最後に bsd.port.pre.mk をインクルードすることによって避けることができます。
注意: bsd.port.pre.mk/bsd.port.post.mk のペアか bsd.port.mk だけのどちらかだけをインクルードし、二つを混ぜないでください。
前者はいくつかの変数の定義だけをして Makefile でのテストに使用し、後者は残りを定義します。
以下は bsd.port.pre.mk で定義される重要な変数です (これは、すべてではありません。 完全なリストは bsd.port.mk を参照してください)。
変数名 | 解説 |
---|---|
ARCH | uname -m で返されるアーキテクチャ。(例、i386)。 |
OPSYS | uname -s で返されるオペレーティングシステム (例、FreeBSD)。 |
OSREL | オペレーティングシステムのリリースバージョン (例、2.1.5, 2.2.7)。 |
OSVERSION | 数字形式のオペレーティングシステムのバージョン、 上記の __FreeBSD_version と同じです。 |
PORTOBJFORMAT | システムのオブジェクトフォーマット (elf あるいは aout ただし、``最近の'' FreeBSD のバージョンでは aout は廃止予定になっています)。 |
LOCALBASE | ``local'' ツリーのベース。 (例、/usr/local/)。 |
X11BASE | ``X11'' ツリーのベース。 (例、/usr/X11R6/)。 |
PREFIX | ports のインストール先 ( PREFIXについてを参照)。 |
注意: USE_IMAKE, USE_X_PREFIX あるいは MASTERDIR などの変数を定義する必要がある場合には、 bsd.port.pre.mk をインクルード前に定義してください。 他のものは bsd.port.pre.mk の前でも後でもかまいません。
以下は bsd.port.pre.mk の後に書けるものの例です。
# no need to compile lang/perl5 if perl5 is already in system .if ${OSVERSION} > 300003 BROKEN= perl is in system .endif # only one shlib version number for ELF .if ${PORTOBJFORMAT} == "elf" TCL_LIB_FILE= ${TCL_LIB}.${SHLIB_MAJOR} .else TCL_LIB_FILE= ${TCL_LIB}.${SHLIB_MAJOR}.${SHLIB_MINOR} .endif # software already makes link for ELF, but not for a.out post-install: .if ${PORTOBJFORMAT} == "aout" ${LN} -sf liblinpack.so.1.0 ${PREFIX}/lib/liblinpack.so .endif
BROKEN= と TCL_LIB_FILE= の後にスペースではなくタブを使うことを覚えていましたか? :-)