16.8. bsd.port.mk の後に書くこと

.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 を参照してください)。

変数名解説
ARCHuname -m で返されるアーキテクチャ。(例、i386)。
OPSYSuname -s で返されるオペレーティングシステム (例、FreeBSD)。
OSRELオペレーティングシステムのリリースバージョン (例、2.1.5, 2.2.7)。
OSVERSION数字形式のオペレーティングシステムのバージョン、 上記の __FreeBSD_version と同じです。
PORTOBJFORMATシステムのオブジェクトフォーマット (elf あるいは aout ただし、最近の FreeBSD のバージョンでは aout は廃止予定になっています)。
LOCALBASElocal ツリーのベース。 (例、/usr/local/)。
X11BASEX11 ツリーのベース。 (例、/usr/X11R6/)。
PREFIXports のインストール先 ( 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= の後にスペースではなくタブを使うことを覚えていましたか? :-)

本文書、および他の文書は ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/ からダウンロードできます。

FreeBSD に関する質問がある場合には、 ドキュメント を読んだ上で <questions@FreeBSD.org> まで (英語で) 連絡してください。

本文書に関する質問については、 <doc@FreeBSD.org> まで電子メールを (英語で) 送ってください。