diff options
author | Pietro Cerutti <gahr@FreeBSD.org> | 2013-09-19 09:49:52 +0000 |
---|---|---|
committer | Pietro Cerutti <gahr@FreeBSD.org> | 2013-09-19 09:49:52 +0000 |
commit | c8209f84b4ca26ff7fd774b864408375dcac320c (patch) | |
tree | c4559c1a0e4f6c9d0100ce186a8e4e8dc55266df /Mk/Uses/tcl.mk | |
parent | Do not recommand to drop ltverhack because it needs to be done with cautious, (diff) |
- Implement USES+=tcl and USES+=tk
- Use bsd.default-versions.mk to specify the default Tcl/Tk version (8.6)
- Add warnings about the now deprecated use of USE_TCL, USE_TK, ...
Notes:
* USES+=tcl and USES+=tk take the following optional arguments
- either a version in the form of XY or XY+, or 'wrapper' to depend on
lang/tcl-wrapper or x11-toolkits/tk-wrapper
- either 'build' (bring in build depend) or 'run' (bring in run depend)
* it is an error to specify both 'tcl' and 'tk' in USES.
* The functionality currently implemented via INVALID_TCL_VER and
INVALID_TK_VER is not yet available.
Approved by: bapt (portmgr)
Notes
Notes:
svn path=/head/; revision=327607
Diffstat (limited to 'Mk/Uses/tcl.mk')
-rw-r--r-- | Mk/Uses/tcl.mk | 161 |
1 files changed, 161 insertions, 0 deletions
diff --git a/Mk/Uses/tcl.mk b/Mk/Uses/tcl.mk new file mode 100644 index 000000000000..1112b4441a30 --- /dev/null +++ b/Mk/Uses/tcl.mk @@ -0,0 +1,161 @@ +# $FreeBSD$ +# +# vim: ts=8 noexpandtab +# +# Provide support to use Tcl/Tk +# +# MAINTAINER: tcltk@FreeBSD.org +# +# +# Variables set by this file: +# +# TCL_VER - Major.Minor version of Tcl +# +# TCLSH - Set to full path of the Tcl interpreter +# +# TCL_LIBDIR - Path where the Tcl libraries can be found +# +# TCL_INCLUDEDIR - Path where the Tcl C headers can be found +# +# +# TK_VER - Major.Minor version of Tk +# +# WISH - Set to full path of the Tk interpreter +# +# TK_LIBDIR - Path where the Tk libraries can be found +# +# TK_INCLUDEDIR - Path where the Tk C headers can be found +# +# +# +# Usage: +# +# USES+= PORT[:(VERSION|wrapper),build,run] +# +# where PORT is one of: +# +# - tcl - Depend on Tcl +# - tk - Depend on both Tk and Tk (Tk itself depends on Tcl) +# +# and VERSION is in one of the following formats: +# +# - (empty) - Depend on any installed version of PORT. If none +# is installed, bring in the default version. See +# ${_TCLTK_DEFAULT_VERSION} below. +# +# - 84, 85, 86 - Depend on a specific version series of PORT. +# +# - 84+, 85+, 86+ - Depend on any installed version greater or equal to +# the specified version. +# +# If wrapper is specified, an additional dependency on tcl-wrapper or +# tk-wrapper is added. It is NOT possible to select a specific version of +# Tcl/Tk when using the wrapper. +# +# Build-time / Run-time only dependencies can be specified with build or run. +# + +.if !defined(_INCLUDE_USES_TCL_MK) +_INCLUDE_USES_TCL_MK= yes + +_TCLTK_VALID_VERSIONS= 84 85 86 + +.include "${PORTSDIR}/Mk/bsd.default-versions.mk" +_TCLTK_DEFAULT_VERSION= ${TCLTK_DEFAULT:S/.//} + +.if ! ${_TCLTK_VALID_VERSIONS:M${_TCLTK_WANTED_VERSION}} +IGNORE= Invalid tcltk version ${TCLTK_DEFAULT} +.endif + +# _TCLTK_PORT might be set to tk if USES+= tk was used +_TCLTK_PORT?= tcl + +# Parse arguments +_TCL_ARGS= ${tcl_ARGS:S/,/ /g} + +.if ${_TCL_ARGS:M*+} +# using the ver+ variant +_TCLTK_MIN_VERSION:= ${_TCL_ARGS:M*+:S/+//} +_TCLTK_WANTED_VERSION:= ${_TCLTK_DEFAULT_VERSION} +.endif + +.if ${_TCL_ARGS:M8[4-6]} +# assume we specified a version +_TCLTK_WANTED_VERSION:= ${_TCL_ARGS:M8[4-6]} +.endif + +.if ${_TCL_ARGS:Mwrapper} && defined(_TCLTK_WANTED_VERSION) +IGNORE= USES=${_TCLTK_PORT}: it is not possible to specify both a version and the wrapper: ${tcl_ARGS} +.endif + +.if !defined(_TCLTK_WANTED_VERSION) +_TCLTK_WANTED_VERSION= ${_TCLTK_DEFAULT_VERSION} +.endif + +# check that the specified ver+ is valid +.if ! ${_TCLTK_VALID_VERSIONS:M${_TCLTK_WANTED_VERSION}} +IGNORE= USES=${_TCLTK_PORT}: incorrect ${_TCLTK_PORT} version specified: ${_TCLTK_WANTED_VERSION} +.endif + +.if defined(_TCLTK_MIN_VERSION) +. for _v in ${_TCLTK_VALID_VERSIONS} +. if ${_v} >= ${_TCLTK_MIN_VERSION} && exists(${LOCALBASE}/lib/lib${_TCLTK_PORT}${_v}.so) +_TCLTK_WANTED_VERSION= ${_v} +. endif +. endfor +.endif + +# +# Exported variables +# +TCL_VER:= ${_TCLTK_WANTED_VERSION:S/8/8./} +TCL_SHLIB_VER:= ${_TCLTK_WANTED_VERSION} +TCLSH:= ${LOCALBASE}/bin/tclsh${TCL_VER} +TCL_LIBDIR:= ${LOCALBASE}/lib/tcl${TCL_VER} +TCL_INCLUDEDIR:=${LOCALBASE}/include/tcl${TCL_VER} + +.if ${_TCLTK_PORT} == "tk" +TK_VER:= ${_TCLTK_WANTED_VERSION:S/8/8./} +TK_SHLIB_VER:= ${_TCLTK_WANTED_VERSION} +WISH:= ${LOCALBASE}/bin/wish${TCL_VER} +TK_LIBDIR:= ${LOCALBASE}/lib/tcl${TK_VER} +TK_INCLUDEDIR:= ${LOCALBASE}/include/tcl${TK_VER} +.endif + +# +# Dependencies +# +_TCLTK_BUILD_DEPENDS= +_TCLTK_RUN_DEPENDS= +_TCLTK_LIB_DEPENDS= + +# Construct the correct dependency lines (wrapper) +.if ${_TCL_ARGS:Mwrapper} +. if ${_TCLTK_PORT} == "tcl" +_TCLTK_WRAPPER_PORT= tclsh:${PORTSDIR}/lang/tcl-wrapper +. elif ${_TCLTK_PORT} == "tk" +_TCLTK_WRAPPER_PORT= wish:${PORTSDIR}/x11-toolkits/tk-wrapper +. endif +.endif + +# Construct the correct dependency lines (Tcl/Tk) +. if ${_TCLTK_PORT} == "tcl" +_TCLTK_EXE_LINE= tclsh${TCL_VER}:${PORTSDIR}/lang/tcl${_TCLTK_WANTED_VERSION} +_TCLTK_LIB_LINE= libtcl${TCL_SHLIB_VER}.so:${PORTSDIR}/lang/tcl${_TCLTK_WANTED_VERSION} +. elif ${_TCLTK_PORT} == "tk" +_TCLTK_EXE_LINE= wish${TK_VER}:${PORTSDIR}/x11-toolkits/tk${_TCLTK_WANTED_VERSION} +_TCLTK_LIB_LINE= libtk${TK_SHLIB_VER}.so:${PORTSDIR}/x11-toolkits/tk${_TCLTK_WANTED_VERSION} +.endif + +.if ${_TCL_ARGS:Mbuild} +BUILD_DEPENDS+= ${_TCLTK_WRAPPER_PORT} \ + ${_TCLTK_EXE_LINE} +.elif ${_TCL_ARGS:Mrun} +RUN_DEPENDS+= ${_TCLTK_WRAPPER_PORT} \ + ${_TCLTK_EXE_LINE} +.else +RUN_DEPENDS+= ${_TCLTK_WRAPPER_PORT} +LIB_DEPENDS+= ${_TCLTK_LIB_LINE} +.endif + +.endif # defined(_INCLUDE_USES_TCL_MK) |