15.6 在bsd.port.mk之后添加...

你不能在.include<bsd.port.mk>之后添加任何内容,如果你一定要作,可以在Makefile的中间包含bsd.port.pre.mk,然后写一些东西,最后在Makefile的结尾包含bsd.port.post.mk.

注意: 或者在你的Makefile中使用bsd.port.mk或者使用bsd.port.pre.mk和bsd.port.post.mk这一对,两者不能同时出现在Makefile中.

bsd.port.pre.mk只是定义了很少的变量,可以用于测试.bsd.port.post.mk定义了剩余的一些.

这里是bsd.port.pre.mk中定义的一些变量(并不是全部,请参看实际文件)

变量 描述
ARCH uname -m返回的硬件架构,如i386
OPSYS uname -s返回的操作系统类型,如FreeBSD.
OSREL 操作系统的版本发布号 如2.2.7
OSVERSION BSD的版本(类似于内核版本) 参看__FreeBSD_version.
PORTOBJFORMAT 系统的对象类型(aout或elf)
LOCALBASE local目录的目录树根,一般为/usr/local
X11BASE X11目录的目录树根,一般为/usr/X11R6
PREFIX port安装在那里 (参看more on PREFIX).
注意:如果你需要定义USE_IMAKE,USE_X_PREFIX或MASTERDIR,一定要在包含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