pkgsrc/mk/tools.mk

180 lines
6 KiB
Makefile
Raw Normal View History

2003-08-02 07:07:35 +02:00
# $NetBSD: tools.mk,v 1.3 2003/08/02 05:07:35 grant Exp $
#
# handle platforms with broken tools in the base system, such as sed
# and awk.
#
# symlink the suitable versions of tools into .buildlink/bin (if they
# exist in the base system) and allow packages to force the use of
# pkgsrc GNU tools when they are not present in the base system by
# defining e.g. USE_GNU_TOOLS+="awk sed". version numbers are not
# considered.
#
# this functionality is buildlink2 only.
#
# packages should always use eg.
#
# USE_GNU_TOOLS+= grep
#
# to be sure not to override the setting passed by the user.
#
.if !defined(TOOLS_MK)
TOOLS_MK= # defined
.if empty(USE_BUILDLINK2:M[nN][oO])
_TOOLS= awk grep sed
# define which platforms already have GNU tools, so no need to pull in
# the pkgsrc versions.
_TOOLS_OPSYS_HAS_GNU.awk+= FreeBSD-*-* Linux-*-* NetBSD-*-* OpenBSD-*-*
_TOOLS_OPSYS_HAS_GNU.grep+= Darwin-*-* FreeBSD-*-* Linux-*-*
_TOOLS_OPSYS_HAS_GNU.grep+= NetBSD-*-* OpenBSD-*-*
_TOOLS_OPSYS_HAS_GNU.sed+= Linux-*-*
# where said tool is completely unusable, and no suitable replacement
# is available.
_TOOLS_OPSYS_INCOMPAT.awk+= # empty
_TOOLS_OPSYS_INCOMPAT.grep+= # empty
# Solaris includes a less broken sed in /usr/xpg4/bin, which is mostly
# adequate for pkgsrc internal use, but pkg builds have shown they
# demand more, so mark it incompatible.
_TOOLS_OPSYS_INCOMPAT.sed+= SunOS-*-*
# a suitable alternative version is available in the base system, as
# eg. ${AWK}, ${SED}, ... refer to defs.*.mk for the definitions.
_TOOLS_REPLACE_OPSYS.awk+= SunOS-*-*
_TOOLS_REPLACE_OPSYS.grep+= SunOS-*-*
_TOOLS_REPLACE_OPSYS.sed+= # empty
# what GNU tools did the package or user ask for, and does the OS
# already have it?
.for _tool_ in ${USE_GNU_TOOLS}
_TOOLS_NEED_GNU.${_tool_}= YES
. for _pattern_ in ${_TOOLS_OPSYS_HAS_GNU.${_tool_}}
. if !empty(MACHINE_PLATFORM:M${_pattern_})
_TOOLS_NEED_GNU.${_tool_}= NO
. endif
. endfor
.endfor
# default to not requiring GNU tools.
.for _tool_ in ${_TOOLS}
_TOOLS_NEED_GNU.${_tool_}?= NO
_TOOLS_REPLACE.${_tool_}?= NO
# do we know it's broken?
. for _pattern_ in ${_TOOLS_OPSYS_INCOMPAT.${_tool_}}
. if !empty(MACHINE_PLATFORM:M${_pattern_})
_TOOLS_NEED_GNU.${_tool_}= YES
. endif
. endfor
# are we replacing it with a better version?
. for _pattern_ in ${_TOOLS_REPLACE_OPSYS.${_tool_}}
. if !empty(MACHINE_PLATFORM:M${_pattern_})
_TOOLS_REPLACE.${_tool_}= YES
. endif
. endfor
.endfor # ${_TOOLS}
.if ${_TOOLS_NEED_GNU.awk} == "YES" && empty(PKGPATH:Mlang/gawk)
_TOOLS_PROGNAME.gawk= ${LOCALBASE}/bin/${GNU_PROGRAM_PREFIX}awk
# catch the case where we are in between package installs, thus don't
# have gawk available yet.
. if exists(${_TOOLS_PROGNAME.gawk})
AWK= ${_TOOLS_PROGNAME.gawk}
. endif
BUILDLINK_DEPENDS.gawk?= gawk>=3.1.1
BUILDLINK_PKGSRCDIR.gawk?= ../../lang/gawk
BUILDLINK_DEPMETHOD.gawk?= build
BUILDLINK_PACKAGES+= gawk
BUILDLINK_PREFIX.gawk_DEFAULT= ${LOCALBASE}
BUILDLINK_FILES.gawk= bin/${GNU_PROGRAM_PREFIX}awk
EVAL_PREFIX+= BUILDLINK_PREFIX.gawk=gawk
.endif
.if ${_TOOLS_NEED_GNU.awk} == "YES" || ${_TOOLS_REPLACE.awk} == "YES"
BUILDLINK_TARGETS+= gawk-buildlink gawk-buildlink-bin
.endif
.if ${_TOOLS_NEED_GNU.grep} == "YES" && empty(PKGPATH:Mtextproc/grep)
_TOOLS_PROGNAME.grep= ${LOCALBASE}/bin/${GNU_PROGRAM_PREFIX}grep
. if exists(${_TOOLS_PROGNAME.grep})
GREP= ${_TOOLS_PROGNAME.grep}
. endif
2003-08-02 07:07:35 +02:00
BUILDLINK_DEPENDS.grep?= grep>=2.5.1
BUILDLINK_PKGSRCDIR.grep?= ../../textproc/grep
BUILDLINK_DEPMETHOD.grep?= build
BUILDLINK_PACKAGES+= grep
BUILDLINK_PREFIX.grep= ${LOCALBASE}
BUILDLINK_FILES.grep= bin/${GNU_PROGRAM_PREFIX}grep
EVAL_PREFIX+= BUILDLINK_PREFIX.grep=grep
.endif
.if ${_TOOLS_NEED_GNU.grep} == "YES" || ${_TOOLS_REPLACE.grep} == "YES"
BUILDLINK_TARGETS+= grep-buildlink grep-buildlink-bin
.endif
.if ${_TOOLS_NEED_GNU.sed} == "YES" && empty(PKGPATH:Mtextproc/gsed)
_TOOLS_PROGNAME.gsed= ${LOCALBASE}/bin/${GNU_PROGRAM_PREFIX}sed
. if exists(${_TOOLS_PROGNAME.gsed})
SED= ${_TOOLS_PROGNAME.gsed}
. endif
BUILDLINK_DEPENDS.gsed?= gsed>=3.0.2
BUILDLINK_PKGSRCDIR.gsed?= ../../textproc/gsed
BUILDLINK_DEPMETHOD.gsed?= build
BUILDLINK_PACKAGES+= gsed
BUILDLINK_PREFIX.gsed_DEFAULT= ${LOCALBASE}
BUILDLINK_FILES.gsed= bin/${GNU_PROGRAM_PREFIX}sed
EVAL_PREFIX+= BUILDLINK_PREFIX.gsed=gsed
.endif
.if ${_TOOLS_NEED_GNU.sed} == "YES" || ${_TOOLS_REPLACE.sed} == "YES"
BUILDLINK_TARGETS+= gsed-buildlink gsed-buildlink-bin
.endif
gawk-buildlink: _BUILDLINK_USE
gawk-buildlink-bin:
.if ${_TOOLS_NEED_GNU.awk} == "YES" && empty(PKGPATH:Mlang/gawk)
${_PKG_SILENT}${_PKG_DEBUG} \
[ ! -f ${BUILDLINK_DIR}/bin/awk ] && \
${LN} -fs ${LOCALBASE}/bin/${GNU_PROGRAM_PREFIX}awk \
${BUILDLINK_DIR}/bin/awk
.elif ${_TOOLS_REPLACE.awk} == "YES"
${_PKG_SILENT}${_PKG_DEBUG} \
[ ! -f ${BUILDLINK_DIR}/bin/awk ] && \
${LN} -fs ${AWK} ${BUILDLINK_DIR}/bin/awk
.endif
grep-buildlink: _BUILDLINK_USE
grep-buildlink-bin:
.if ${_TOOLS_NEED_GNU.grep} == "YES" && empty(PKGPATH:Mtextproc/grep)
${_PKG_SILENT}${_PKG_DEBUG} \
[ ! -f ${BUILDLINK_DIR}/bin/grep ] && \
${LN} -fs ${LOCALBASE}/bin/${GNU_PROGRAM_PREFIX}grep \
${BUILDLINK_DIR}/bin/grep
.elif ${_TOOLS_REPLACE.grep} == "YES"
${_PKG_SILENT}${_PKG_DEBUG} \
[ ! -f ${BUILDLINK_DIR}/bin/grep ] && \
${LN} -fs ${GREP} ${BUILDLINK_DIR}/bin/grep
.endif
gsed-buildlink: _BUILDLINK_USE
gsed-buildlink-bin:
.if ${_TOOLS_NEED_GNU.sed} == "YES" && empty(PKGPATH:Mtextproc/gsed)
${_PKG_SILENT}${_PKG_DEBUG} \
[ ! -f ${BUILDLINK_DIR}/bin/sed ] && \
${LN} -fs ${LOCALBASE}/bin/${GNU_PROGRAM_PREFIX}sed \
${BUILDLINK_DIR}/bin/sed
.elif ${_TOOLS_REPLACE.sed} == "YES"
${_PKG_SILENT}${_PKG_DEBUG} \
[ ! -f ${BUILDLINK_DIR}/bin/sed ] && \
${LN} -fs ${SED} ${BUILDLINK_DIR}/bin/sed
.endif
.endif # USE_BUILDLINK2
.endif # TOOLS_MK