2006-09-15 02:57:07 -04:00
|
|
|
#-*- mode: makefile; tab-width: 4; -*-
|
|
|
|
# ex:ts=4
|
|
|
|
#
|
|
|
|
# $FreeBSD$
|
|
|
|
#
|
|
|
|
# bsd.lua.mk - Support for Lua based ports.
|
|
|
|
#
|
|
|
|
# Created by: Alejandro Pulver <alepulver@FreeBSD.org>
|
|
|
|
#
|
|
|
|
# Please view me with 4 column tabs!
|
|
|
|
#
|
|
|
|
# The following variables can be defined in a port that uses the Lua library,
|
|
|
|
# tolua, Ruby bindings or related components like .lua modules (with run
|
|
|
|
# and/or build dependencies). It can be used after and/or before
|
|
|
|
# bsd.port.pre.mk, but Ruby components will only work if Ruby variables (e.g.
|
|
|
|
# USE_RUBY) are defined before it (this is a bsd.ruby.mk limitation), at least
|
|
|
|
# it is manually included.
|
|
|
|
# USE_LUA - Set to the list of Lua versions that can be used by the
|
|
|
|
# port. The syntax allows the following elements:
|
|
|
|
# - Single version (e.g. "4.0").
|
|
|
|
# - Range of versions (e.g. "5.0-5.1"). Must be ascending.
|
|
|
|
# - Partial range: single version and upper (e.g. "5.0+").
|
|
|
|
# - Partial range: single version and lower (e.g. "5.1-").
|
|
|
|
# Multiple elements can be specified separated by spaces.
|
|
|
|
# USE_LUA_NOT - Set to the list of Lua versions that can't be used by the
|
|
|
|
# port. In other words, it removes some versions from USE_LUA.
|
|
|
|
# If the latter is not defined, it will have the value of all
|
|
|
|
# the possible versions. The syntax is like USE_LUA.
|
|
|
|
# LUA_COMPS - Set to the list of Lua components the port uses. Several
|
|
|
|
# components can be specified separated by spaces. By default
|
|
|
|
# it will have the value of "lua". Suffixes in the form ":xxx"
|
|
|
|
# may be added to the components to determine the dependency
|
|
|
|
# type.
|
|
|
|
# The available components are:
|
|
|
|
# lua - The Lua library.
|
2008-08-25 16:20:50 -04:00
|
|
|
# tolua - The tolua library (for 4.0-5.1).
|
|
|
|
# toluaxx - The tolua++ library (for 5.0-5.1).
|
2006-12-30 23:44:25 -05:00
|
|
|
# ruby - The Ruby bindings for Lua (for 4.0-5.0).
|
|
|
|
# Other components (modules):
|
|
|
|
# 5.0 - app, compat51, dfui, filename, gettext,
|
|
|
|
# posix, pty, socket.
|
2007-10-28 15:43:49 -04:00
|
|
|
# 5.1 - filename, gettext, posix, pty, socket.
|
2006-09-15 02:57:07 -04:00
|
|
|
# The available dependency types are:
|
|
|
|
# build - Requires component for building.
|
|
|
|
# lib - Requires component for building and running.
|
|
|
|
# run - Requires component for running.
|
|
|
|
# If no suffix is present then "lib" will be used for "lua"
|
|
|
|
# 4.0-5.0 and "ruby", "build" for lua 5.1 and "tolua" (they
|
|
|
|
# are static), all others default to "run".
|
|
|
|
# LUA_PREMK - Define to determine version and define variables after
|
|
|
|
# <bsd.port.pre.mk> (in case the port needs to manually run
|
|
|
|
# the Lua program or the like).
|
|
|
|
# WANT_LUA - Set to "yes" or a valid single version (no ranges, etc).
|
|
|
|
# In both cases it will detect the installed Lua components
|
|
|
|
# and add them to the variable HAVE_LUA. If a version is
|
|
|
|
# selected, HAVE_LUA will contain a list of components in the
|
|
|
|
# other case it will contain a list of "component-version"
|
|
|
|
# pairs (e.g. lua-4.0, tolua-5.1, etc).
|
|
|
|
# It has to be used before bsd.port.pre.mk.
|
|
|
|
# WANT_LUA_VER - Set to the prefered Lua version for the port. It must be
|
|
|
|
# present in USE_LUA or missing in USE_LUA_NOT. This is
|
|
|
|
# overriden by the user variable WITH_LUA_VER if set. It can
|
|
|
|
# contain multiple versions in order of preference (last ones
|
|
|
|
# are tried first).
|
|
|
|
#
|
|
|
|
# The following variables are intended for the user and can be defined in
|
|
|
|
# make.conf.
|
|
|
|
# WITH_LUA_VER - Define to the list of prefered versions in reverse order.
|
|
|
|
#
|
|
|
|
# The following variables are defined by this file, to be read from the port.
|
|
|
|
# HAVE_LUA - The list of Lua components installed, if WANT_LUA was
|
|
|
|
# defined. The components will have version suffix if it was
|
|
|
|
# set to "yes".
|
|
|
|
# LUA_VER - The Lua version that is going to be used (e.g. "5.1").
|
|
|
|
# LUA_VER_SH - The Lua shared library major version (e.g. "1").
|
|
|
|
# LUA_VER_STR - The Lua version without the dots (e.g. "51").
|
|
|
|
# LUA_PREFIX - The prefix where Lua (and components) is installed.
|
2008-02-18 13:41:26 -05:00
|
|
|
# NOTE: please see comments below about its double function.
|
2006-09-15 02:57:07 -04:00
|
|
|
# LUA_SUBDIR - The directory under bin/share/lib where Lua is installed.
|
2008-02-18 13:41:26 -05:00
|
|
|
# Also used by Lua ports (lang/lua*) to set LATEST_LINK.
|
2008-08-25 16:20:50 -04:00
|
|
|
# LUA_INCDIR - The directory where Lua, tolua and tolua++ header files are
|
|
|
|
# installed.
|
|
|
|
# LUA_LIBDIR - The directory where Lua, tolua and tolua++ libraries are
|
|
|
|
# installed.
|
2006-11-09 14:22:54 -05:00
|
|
|
# LUA_MODLIBDIR - The directory where Lua module libraries (.so) are installed.
|
2006-10-05 14:17:25 -04:00
|
|
|
# LUA_MODSHAREDIR
|
2006-11-09 14:22:54 -05:00
|
|
|
# - The directory where Lua modules (.lua) are installed.
|
2006-10-05 14:17:25 -04:00
|
|
|
# LUA_PKGNAMEPREFIX
|
|
|
|
# - The package name prefix used by Lua modules.
|
2006-11-12 09:23:12 -05:00
|
|
|
# LUA_CMD - The path to the Lua interpreter.
|
|
|
|
# LUAC_CMD - The path to the Lua compiler.
|
|
|
|
# TOLUA_CMD - The path to the tolua program.
|
2008-08-25 16:20:50 -04:00
|
|
|
# TOLUAXX_CMD - The path to the tolua++ program.
|
2006-09-15 02:57:07 -04:00
|
|
|
#
|
|
|
|
# Examples:
|
|
|
|
# - A port that needs Lua 4.0 and tolua (also 4.0) libraries (lua for building
|
2006-10-05 14:17:25 -04:00
|
|
|
# and running and tolua for building).
|
2006-09-15 02:57:07 -04:00
|
|
|
# USE_LUA= 4.0
|
|
|
|
# LUA_COMPS= lua tolua
|
|
|
|
# - A port that needs Ruby bindings for Lua 5.0 for building and running.
|
|
|
|
# USE_LUA= 5.0
|
|
|
|
# LUA_COMPS= ruby
|
|
|
|
# - A port that needs tolua 5.0 or 5.1 for building.
|
|
|
|
# USE_LUA= 5.0 5.1
|
|
|
|
# LUA_COMPS= tolua
|
|
|
|
# - A port that needs Lua version 5.0 or higher for building and running.
|
|
|
|
# USE_LUA= 5.0+
|
|
|
|
# - A port that needs Lua of any version other than 5.1 for building and
|
2006-10-05 14:17:25 -04:00
|
|
|
# running.
|
2006-09-15 02:57:07 -04:00
|
|
|
# USE_LUA_NOT=5.1
|
|
|
|
#
|
2008-08-10 15:29:43 -04:00
|
|
|
# Notes about the integration of lua related ports with bsd.lua.mk:
|
|
|
|
# (please read when updating ports referred here, see lang/lua[0-9]*)
|
|
|
|
#
|
|
|
|
# The lua/tolua ports have to be patched so they can coexist, as the internal
|
|
|
|
# application build infrastructure does not handle it automatically. Currently
|
|
|
|
# the framework provides variables to the lua ports themselves, so changing
|
|
|
|
# some things here won't require changes in lang/{lua,tolua}*.
|
|
|
|
#
|
|
|
|
# For lua ports: if they install a static library, use the same method for
|
|
|
|
# tolua ports, otherwise in addition the libraries have to be symlinked to the
|
|
|
|
# common library directory with a versioned name, and linked with the -soname
|
|
|
|
# parameter (so when a port links with -L/usr/local/lib/lua51 -llua, it stores
|
|
|
|
# the dynamic dependency as the name which figures under /usr/local/lib).
|
|
|
|
#
|
|
|
|
# For tolua ports: as it is a static library (.a), installing binaries,
|
|
|
|
# headers and libraries under a versioned directory is fine (binary has also a
|
|
|
|
# symlink).
|
|
|
|
#
|
|
|
|
# The lua modules install in a separate directory, so there is no problem.
|
|
|
|
#
|
2006-09-15 02:57:07 -04:00
|
|
|
|
|
|
|
LUA_Include_MAINTAINER= alepulver@FreeBSD.org
|
|
|
|
|
|
|
|
#
|
|
|
|
# Global definitions.
|
|
|
|
#
|
|
|
|
|
|
|
|
.if !defined(_LUA_Definitions_Done)
|
|
|
|
_LUA_Definitions_Done= yes
|
|
|
|
|
|
|
|
# Common variables:
|
|
|
|
# _LUA_COMPS_ALL - List of valid components.
|
|
|
|
# _LUA_DEP_TYPES_ALL - List of valid dependency types.
|
|
|
|
# _LUA_VERS_ALL - List of available Lua versions.
|
|
|
|
# _LUA_VERS_LISTS= - Reverse lists preference order.
|
|
|
|
# _LUA_PLIST_ALL - List of variables to be added to PLIST_SUB.
|
|
|
|
# _LUA_PLIST_DIR_ALL - List of path variables (relative to ${LUA_PREFIX})
|
|
|
|
# to be added to PLIST_SUB.
|
|
|
|
#
|
|
|
|
|
2008-08-25 16:20:50 -04:00
|
|
|
_LUA_COMPS_ALL= lua tolua toluaxx ruby \
|
2006-09-15 02:57:07 -04:00
|
|
|
app compat51 dfui filename gettext posix pty socket
|
|
|
|
_LUA_DEP_TYPES_ALL= build lib run
|
|
|
|
_LUA_VERS_ALL= 4.0 5.0 5.1
|
|
|
|
_LUA_PLIST_ALL= LUA_VER LUA_VER_SH LUA_VER_STR LUA_PREFIX LUA_SUBDIR
|
|
|
|
_LUA_PLIST_DIR_ALL= LUA_BINDIR LUA_INCDIR LUA_LIBDIR \
|
|
|
|
LUA_MODLIBDIR LUA_MODSHAREDIR
|
2006-12-30 23:44:25 -05:00
|
|
|
_LUA_VERS_LISTS= WANT_LUA_VER WITH_LUA_VER _LUA_VER_INSTALLED
|
2006-09-15 02:57:07 -04:00
|
|
|
|
|
|
|
#
|
|
|
|
# Variables used to determine what is needed.
|
|
|
|
# _LUA_PORT_comp_ver - Port directory.
|
|
|
|
# _LUA_LIB_comp_ver - Name of the shared library (optional).
|
|
|
|
# _LUA_SHVER_comp_ver - Shared library version (optional).
|
|
|
|
# _LUA_FILE_comp_ver - File installed by that component.
|
|
|
|
# _LUA_DEPTYPE_comp_ver - Default dependency type.
|
|
|
|
#
|
|
|
|
|
|
|
|
_LUA_PORT_lua_4.0= lang/lua4
|
|
|
|
_LUA_DEPTYPE_lua_4.0= lib
|
|
|
|
_LUA_PORT_tolua_4.0= lang/tolua4
|
|
|
|
_LUA_PORT_ruby_4.0= lang/ruby-lua4
|
|
|
|
|
|
|
|
_LUA_PORT_lua_5.0= lang/lua50
|
|
|
|
_LUA_DEPTYPE_lua_5.0= lib
|
2008-08-10 11:09:54 -04:00
|
|
|
_LUA_PORT_tolua_5.0= lang/tolua50
|
2008-08-25 16:20:50 -04:00
|
|
|
_LUA_PORT_toluaxx_5.0= lang/tolua++50
|
2006-09-15 02:57:07 -04:00
|
|
|
_LUA_PORT_ruby_5.0= lang/ruby-lua
|
|
|
|
|
|
|
|
_LUA_PORT_app_5.0= devel/lua50-app
|
|
|
|
_LUA_PORT_compat51_5.0= devel/lua50-compat51
|
|
|
|
_LUA_FILE_compat51_5.0= ${LUA_MODSHAREDIR}/compat-5.1.lua
|
|
|
|
_LUA_PORT_dfui_5.0= devel/lua50-dfui
|
|
|
|
_LUA_PORT_filename_5.0= devel/lua50-filename
|
|
|
|
_LUA_PORT_gettext_5.0= devel/lua50-gettext
|
|
|
|
_LUA_PORT_posix_5.0= devel/lua50-posix
|
|
|
|
_LUA_PORT_pty_5.0= devel/lua50-pty
|
2007-10-28 15:43:49 -04:00
|
|
|
_LUA_PORT_socket_5.0= net/lua50-luasocket
|
2006-09-15 02:57:07 -04:00
|
|
|
|
|
|
|
_LUA_PORT_lua_5.1= lang/lua
|
2008-08-10 15:29:43 -04:00
|
|
|
_LUA_DEPTYPE_lua_5.1= lib
|
2006-09-15 02:57:07 -04:00
|
|
|
|
2007-04-09 13:24:21 -04:00
|
|
|
_LUA_PORT_filename_5.1= devel/lua-filename
|
|
|
|
_LUA_PORT_gettext_5.1= devel/lua-gettext
|
|
|
|
_LUA_PORT_posix_5.1= devel/lua-posix
|
2006-12-05 17:51:12 -05:00
|
|
|
_LUA_PORT_pty_5.1= devel/lua-pty
|
2007-10-28 15:43:49 -04:00
|
|
|
_LUA_PORT_socket_5.1= net/luasocket
|
2008-08-10 11:09:54 -04:00
|
|
|
_LUA_PORT_tolua_5.1= lang/tolua
|
2008-08-25 16:20:50 -04:00
|
|
|
_LUA_PORT_toluaxx_5.1= lang/tolua++
|
2006-11-30 16:51:05 -05:00
|
|
|
|
2006-12-30 23:44:25 -05:00
|
|
|
. for comp in ${_LUA_COMPS_ALL}
|
2006-09-15 02:57:07 -04:00
|
|
|
_LUA_COMP= ${comp}
|
2006-12-30 23:44:25 -05:00
|
|
|
. for ver in ${_LUA_VERS_ALL}
|
2007-04-09 13:23:20 -04:00
|
|
|
# XXX The hardcoded values here have to match LUA_* variables (later), and
|
|
|
|
# are here only to allow autodetection of installed versions.
|
2006-12-30 23:44:25 -05:00
|
|
|
. if ${_LUA_COMP} == "lua"
|
2007-04-09 13:23:20 -04:00
|
|
|
_LUA_LIB_${comp}_${ver}= lua-${ver}.${_LUA_SHVER_${comp}_${ver}}
|
|
|
|
_LUA_SHVER_${comp}_${ver}= ${ver:C/[[:digit:]]\.([[:digit:]])/\1/}
|
|
|
|
_LUA_FILE_${comp}_${ver}= ${LOCALBASE}/lib/lua${ver:S/.//g}/liblua.a
|
2006-12-30 23:44:25 -05:00
|
|
|
. elif ${_LUA_COMP} == "tolua"
|
2007-04-09 13:23:20 -04:00
|
|
|
_LUA_FILE_${comp}_${ver}= ${LOCALBASE}/lib/lua${ver:S/.//g}/libtolua.a
|
2006-09-15 02:57:07 -04:00
|
|
|
_LUA_DEPTYPE_${comp}_${ver}=build
|
2008-08-25 16:20:50 -04:00
|
|
|
. elif ${_LUA_COMP} == "toluaxx"
|
|
|
|
_LUA_FILE_${comp}_${ver}= ${LOCALBASE}/lib/lua${ver:S/.//g}/libtolua++.so
|
|
|
|
_LUA_DEPTYPE_${comp}_${ver}=lib
|
2006-12-30 23:44:25 -05:00
|
|
|
. elif ${_LUA_COMP} == "ruby"
|
2007-04-09 13:23:20 -04:00
|
|
|
_LUA_FILE_${comp}_${ver}= ${RUBY_SITEARCHLIBDIR}/lua-${ver}.so
|
2006-09-15 02:57:07 -04:00
|
|
|
_LUA_DEPTYPE_${comp}_${ver}=lib
|
2007-04-09 13:23:20 -04:00
|
|
|
. elif !defined(_LUA_FILE_${comp}_${ver})
|
|
|
|
_LUA_FILE_${comp}_${ver}= ${LOCALBASE}/share/lua/${ver}/${comp}.lua
|
2006-12-30 23:44:25 -05:00
|
|
|
. endif
|
2007-04-10 23:22:34 -04:00
|
|
|
. if !defined(_LUA_DEPTYPE_${comp}_${ver})
|
2007-04-09 13:23:20 -04:00
|
|
|
_LUA_DEPTYPE_${comp}_${ver}=run
|
2007-04-10 23:22:34 -04:00
|
|
|
. endif
|
2006-12-30 23:44:25 -05:00
|
|
|
. endfor
|
2006-09-15 02:57:07 -04:00
|
|
|
. endfor
|
2006-12-30 23:44:25 -05:00
|
|
|
.endif
|
2006-09-15 02:57:07 -04:00
|
|
|
|
2006-12-30 23:44:25 -05:00
|
|
|
#
|
|
|
|
# Check if we are going to determine the version.
|
|
|
|
#
|
|
|
|
|
|
|
|
.if !defined(_LUA_Version_Done) && (defined(_POSTMKINCLUDED) || \
|
|
|
|
(defined(LUA_PREMK) && defined(BEFOREPORTMK) && \
|
|
|
|
(defined(USE_LUA) || defined(USE_LUA_NOT))))
|
|
|
|
_LUA_Need_Version= yes
|
2006-09-15 02:57:07 -04:00
|
|
|
.endif
|
|
|
|
|
|
|
|
#
|
|
|
|
# Check for present components.
|
|
|
|
#
|
|
|
|
|
2006-12-30 23:44:25 -05:00
|
|
|
# Requested by the user.
|
|
|
|
|
2006-09-15 02:57:07 -04:00
|
|
|
.if defined(WANT_LUA) && defined(BEFOREPORTMK)
|
2006-12-30 23:44:25 -05:00
|
|
|
_WANT_LUA= ${WANT_LUA}
|
|
|
|
.endif
|
|
|
|
|
|
|
|
# Used for autodetection of installed versions.
|
|
|
|
|
|
|
|
.if defined(_LUA_Need_Version)
|
|
|
|
_WANT_LUA= yes
|
|
|
|
.endif
|
|
|
|
|
|
|
|
.if defined(_WANT_LUA)
|
2007-01-04 21:56:47 -05:00
|
|
|
. undef _HAVE_LUA
|
2006-12-30 23:44:25 -05:00
|
|
|
. for __WANT_LUA in ${_WANT_LUA}
|
|
|
|
# Check if _WANT_LUA contains more than one word.
|
|
|
|
. if defined(_HAVE_LUA)
|
|
|
|
IGNORE?= selected multiple values for WANT_LUA: ${_WANT_LUA}
|
2006-09-15 02:57:07 -04:00
|
|
|
. endif
|
2006-12-30 23:44:25 -05:00
|
|
|
_HAVE_LUA= #
|
2006-09-15 02:57:07 -04:00
|
|
|
# Check for all versions.
|
2006-12-30 23:44:25 -05:00
|
|
|
. if ${_WANT_LUA:L} == "yes"
|
2006-09-15 02:57:07 -04:00
|
|
|
. for comp in ${_LUA_COMPS_ALL}
|
|
|
|
. for ver in ${_LUA_VERS_ALL}
|
|
|
|
_LUA_COMP= _LUA_FILE_${comp}_${ver}
|
|
|
|
. if defined(${_LUA_COMP}) && exists(${${_LUA_COMP}})
|
2006-12-30 23:44:25 -05:00
|
|
|
_HAVE_LUA+= ${comp}-${ver}
|
2006-09-15 02:57:07 -04:00
|
|
|
. endif
|
|
|
|
. endfor
|
|
|
|
. endfor
|
|
|
|
# Check for a specific version.
|
|
|
|
. elif ${_LUA_VERS_ALL:M${__WANT_LUA}} != ""
|
|
|
|
. for comp in ${_LUA_COMPS_ALL}
|
|
|
|
. if exists(${_LUA_FILE_${comp}_${__WANT_LUA}})
|
2006-12-30 23:44:25 -05:00
|
|
|
_HAVE_LUA+= ${comp}
|
2006-09-15 02:57:07 -04:00
|
|
|
. endif
|
|
|
|
. endfor
|
|
|
|
. else
|
|
|
|
IGNORE?= selected an invalid value for WANT_LUA: ${__WANT_LUA}
|
|
|
|
. endif
|
|
|
|
. endfor
|
2006-12-30 23:44:25 -05:00
|
|
|
.endif # _WANT_LUA
|
|
|
|
|
|
|
|
# Requested by the user.
|
|
|
|
|
|
|
|
.if defined(WANT_LUA) && defined(BEFOREPORTMK)
|
|
|
|
HAVE_LUA:= ${_HAVE_LUA}
|
|
|
|
.endif
|
|
|
|
|
|
|
|
# Used for autodetection of installed versions.
|
|
|
|
|
2007-04-09 13:23:20 -04:00
|
|
|
.if defined(_LUA_Need_Version)
|
2006-12-31 12:51:22 -05:00
|
|
|
_LUA_VER_INSTALLED:= ${_HAVE_LUA:Mlua-*:S/lua-//}
|
2006-12-30 23:44:25 -05:00
|
|
|
.endif
|
2006-09-15 02:57:07 -04:00
|
|
|
|
|
|
|
#
|
|
|
|
# Select Lua version.
|
|
|
|
#
|
|
|
|
|
2006-12-30 23:44:25 -05:00
|
|
|
.if defined(_LUA_Need_Version)
|
2006-09-15 02:57:07 -04:00
|
|
|
_LUA_Version_Done= yes
|
|
|
|
|
2006-12-31 20:10:42 -05:00
|
|
|
#
|
|
|
|
# Basic component parsing (ignores dependency types).
|
|
|
|
#
|
|
|
|
# The variables used are:
|
|
|
|
# _LUA_COMP - Component part.
|
|
|
|
# _LUA_COMPS_FINAL - Final list of components.
|
|
|
|
#
|
|
|
|
|
|
|
|
# Detect duplicated components.
|
|
|
|
|
|
|
|
_LUA_COMPS_FINAL= #
|
|
|
|
.for comp in ${LUA_COMPS}
|
|
|
|
_LUA_COMP= ${comp:C/:([[:alpha:]]+)$//}
|
|
|
|
. for __LUA_COMP in ${_LUA_COMP}
|
|
|
|
. if ${_LUA_COMPS_ALL:M${__LUA_COMP}} == ""
|
|
|
|
IGNORE?= selected an invalid Lua component: ${__LUA_COMP}
|
|
|
|
. endif
|
|
|
|
. endfor
|
|
|
|
. for newcomp in ${_LUA_COMP}
|
|
|
|
. if ${_LUA_COMPS_FINAL:M${newcomp}} == ""
|
|
|
|
_LUA_COMPS_FINAL+= ${newcomp}
|
|
|
|
. endif
|
|
|
|
. endfor
|
|
|
|
.endfor
|
|
|
|
|
2006-09-15 02:57:07 -04:00
|
|
|
# Set defaults (if one isn't present).
|
|
|
|
|
|
|
|
USE_LUA?= ${_LUA_VERS_ALL}
|
|
|
|
USE_LUA_NOT?= #
|
|
|
|
|
|
|
|
#
|
|
|
|
# Make lists of valid and invalid versions.
|
|
|
|
#
|
|
|
|
# The following variables are used:
|
|
|
|
# _LUA_VER_CHECK - If the version is a single one, express in a range.
|
|
|
|
# _LUA_VER_MIN - Lower version of the range.
|
|
|
|
# _LUA_VER_MAX - Higher version of the range.
|
|
|
|
# _LUA_VER_LIST - List of requested versions.
|
|
|
|
# _LUA_VER_NOT_LIST - List of disallowed versions.
|
|
|
|
# _LUA_VER_FINAL - List of requested version without disallowed ones.
|
|
|
|
#
|
|
|
|
|
|
|
|
.for list in VER VER_NOT
|
|
|
|
_LUA_${list}_LIST= #
|
|
|
|
. for ver in ${USE_LUA${list:C/VER//}}
|
|
|
|
_LUA_VER_CHECK:= ${ver:C/^([[:digit:]]+(\.[[:digit:]]+)*)$/\1-\1/}
|
|
|
|
_LUA_VER_MIN:= ${_LUA_VER_CHECK:C/([[:digit:]]+(\.[[:digit:]]+)*)[-+].*/\1/}
|
|
|
|
_LUA_VER_MAX:= ${_LUA_VER_CHECK:C/.*-([[:digit:]]+(\.[[:digit:]]+)*)/\1/}
|
|
|
|
# Minimum version not specified.
|
|
|
|
. if ${_LUA_VER_MIN} == ${_LUA_VER_CHECK}
|
|
|
|
. undef _LUA_VER_MIN
|
|
|
|
. for v in ${_LUA_VERS_ALL}
|
|
|
|
_LUA_VER_MIN?= ${v}
|
|
|
|
. endfor
|
|
|
|
. endif
|
|
|
|
# Maximum version not specified.
|
|
|
|
. if ${_LUA_VER_MAX} == ${_LUA_VER_CHECK}
|
|
|
|
. for v in ${_LUA_VERS_ALL}
|
|
|
|
_LUA_VER_MAX= ${v}
|
|
|
|
. endfor
|
|
|
|
. endif
|
|
|
|
# Expand versions and add valid ones to each list.
|
|
|
|
. for v in ${_LUA_VERS_ALL}
|
|
|
|
. if ${_LUA_VER_MIN} <= ${v} && ${_LUA_VER_MAX} >= ${v} && \
|
|
|
|
${_LUA_${list}_LIST:M${v}} == ""
|
|
|
|
_LUA_${list}_LIST+= ${v}
|
|
|
|
. endif
|
|
|
|
. endfor
|
|
|
|
. endfor
|
|
|
|
.endfor
|
|
|
|
|
|
|
|
# Merge the lists into a single list of valid versions.
|
|
|
|
|
|
|
|
_LUA_VER_FINAL= #
|
|
|
|
.for ver in ${_LUA_VER_LIST}
|
|
|
|
. if ${_LUA_VER_NOT_LIST:M${ver}} == ""
|
|
|
|
_LUA_VER_FINAL+= ${ver}
|
|
|
|
. endif
|
|
|
|
.endfor
|
|
|
|
|
2006-12-30 23:44:25 -05:00
|
|
|
# Remove unusable installed versions.
|
|
|
|
|
|
|
|
.for ver in ${_LUA_VER_INSTALLED}
|
|
|
|
. if ${_LUA_VER_FINAL:M${ver}} == ""
|
|
|
|
_LUA_VER_INSTALLED:= ${_LUA_VER_INSTALLED:N${ver}}
|
|
|
|
. endif
|
|
|
|
.endfor
|
|
|
|
|
2006-09-15 02:57:07 -04:00
|
|
|
# Check for a null version.
|
|
|
|
|
|
|
|
.if empty(_LUA_VER_FINAL)
|
|
|
|
IGNORE?= selected a null or invalid Lua version
|
|
|
|
.endif
|
|
|
|
|
2006-12-31 20:10:42 -05:00
|
|
|
# Avoid versions which have unavailable components.
|
|
|
|
|
|
|
|
.for ver in ${_LUA_VER_FINAL}
|
|
|
|
. for comp in ${_LUA_COMPS_FINAL}
|
|
|
|
. if !defined(_LUA_PORT_${comp}_${ver})
|
|
|
|
_LUA_WRONG_COMPS+= ${comp}
|
|
|
|
_LUA_WRONG_VERS+= ${ver}
|
|
|
|
_LUA_VER_FINAL:= ${_LUA_VER_FINAL:N${ver}}
|
|
|
|
. endif
|
|
|
|
. endfor
|
|
|
|
.endfor
|
|
|
|
|
|
|
|
.if empty(_LUA_VER_FINAL)
|
|
|
|
IGNORE?= selected Lua versions (${_LUA_WRONG_VERS}) which do not have the selected components (${_LUA_WRONG_COMPS})
|
|
|
|
.endif
|
|
|
|
|
2006-09-15 02:57:07 -04:00
|
|
|
#
|
|
|
|
# Choose final version.
|
|
|
|
#
|
|
|
|
|
|
|
|
#
|
|
|
|
# Check for the following (in order):
|
|
|
|
# 1) WITH_LUA_VER - User preference.
|
|
|
|
# 2) WANT_LUA_VER - Port preference.
|
2006-12-30 23:44:25 -05:00
|
|
|
# 3) _LUA_VER_INSTALLED - Installed versions.
|
|
|
|
# 4) _LUA_VER_FINAL - Available versions.
|
2006-09-15 02:57:07 -04:00
|
|
|
#
|
|
|
|
|
2007-04-09 13:23:20 -04:00
|
|
|
.for list in _LUA_VER_FINAL ${_LUA_VERS_LISTS}
|
2006-09-15 02:57:07 -04:00
|
|
|
. if defined(${list})
|
|
|
|
. for ver in ${${list}}
|
|
|
|
. if ${_LUA_VER_FINAL:M${ver}} != ""
|
|
|
|
_LUA_VER= ${ver}
|
|
|
|
. endif
|
|
|
|
. endfor
|
|
|
|
. endif
|
|
|
|
.endfor
|
|
|
|
|
|
|
|
#
|
|
|
|
# Set variables.
|
|
|
|
#
|
|
|
|
|
|
|
|
# Version.
|
2006-11-12 09:23:12 -05:00
|
|
|
LUA_VER?= ${_LUA_VER}
|
2006-09-15 02:57:07 -04:00
|
|
|
LUA_VER_SH?= ${LUA_VER:C/[[:digit:]]\.([[:digit:]])/\1/}
|
|
|
|
LUA_VER_STR?= ${LUA_VER:S/.//g}
|
|
|
|
|
2008-02-18 13:41:26 -05:00
|
|
|
# Package name.
|
|
|
|
LUA_PKGNAMEPREFIX?= lua${LUA_VER_STR}-
|
2006-09-15 02:57:07 -04:00
|
|
|
LUA_SUBDIR?= lua${LUA_VER_STR}
|
2008-02-18 13:41:26 -05:00
|
|
|
|
|
|
|
# Currently Lua ports (those which install Lua and modules) must either:
|
|
|
|
# 1. Have PORTNAME=lua and LATEST_LINK=${LUA_SUBDIR} (currently Lua ports).
|
|
|
|
# 2. Have PKGNAMEPREFIX=${LUA_PKGNAMEPREFIX} (currently Lua modules).
|
|
|
|
# 3. Have LUA_PREFIX?=${PREFIX} (currently none).
|
|
|
|
#
|
|
|
|
# FIXME: the correct solution to this problem could be either:
|
|
|
|
# 1. Create a lua*-config script, and make dependent ports use it.
|
|
|
|
# 2. Set in each port if it's a "Lua module", or just requires Lua.
|
|
|
|
#
|
|
|
|
|
|
|
|
.if (defined(PKGNAMEPREFIX) && ${PKGNAMEPREFIX} == ${LUA_PKGNAMEPREFIX}) || \
|
|
|
|
(${PORTNAME} == "lua" && defined(LATEST_LINK) && \
|
|
|
|
${LATEST_LINK} == ${LUA_SUBDIR})
|
|
|
|
# For Lua and modules, which need to install in LUA_*DIR, respect PREFIX.
|
|
|
|
LUA_PREFIX?= ${PREFIX}
|
|
|
|
.else
|
|
|
|
# For dependencies using LUA_{INC,LIB}DIR, use LOCALBASE as expected.
|
|
|
|
LUA_PREFIX?= ${LOCALBASE}
|
|
|
|
.endif
|
|
|
|
|
|
|
|
# Paths.
|
2006-09-15 02:57:07 -04:00
|
|
|
LUA_BINDIR?= ${LUA_PREFIX}/bin/${LUA_SUBDIR}
|
|
|
|
LUA_INCDIR?= ${LUA_PREFIX}/include/${LUA_SUBDIR}
|
|
|
|
LUA_LIBDIR?= ${LUA_PREFIX}/lib/${LUA_SUBDIR}
|
|
|
|
LUA_MODLIBDIR?= ${LUA_PREFIX}/lib/lua/${LUA_VER}
|
|
|
|
LUA_MODSHAREDIR?= ${LUA_PREFIX}/share/lua/${LUA_VER}
|
|
|
|
|
2006-11-12 09:23:12 -05:00
|
|
|
# Programs.
|
|
|
|
LUA_CMD?= ${LUA_PREFIX}/bin/lua-${LUA_VER}
|
|
|
|
LUAC_CMD?= ${LUA_PREFIX}/bin/luac-${LUA_VER}
|
|
|
|
TOLUA_CMD?= ${LUA_PREFIX}/bin/tolua-${LUA_VER}
|
2008-08-25 16:20:50 -04:00
|
|
|
TOLUAXX_CMD?= ${LUA_PREFIX}/bin/tolua++-${LUA_VER}
|
2006-11-12 09:23:12 -05:00
|
|
|
|
2006-12-30 23:44:25 -05:00
|
|
|
.endif # _LUA_Need_Version
|
2006-09-15 02:57:07 -04:00
|
|
|
|
|
|
|
#
|
|
|
|
# Process components list and add dependencies, variables, etc.
|
|
|
|
#
|
|
|
|
|
|
|
|
.if defined(_POSTMKINCLUDED)
|
|
|
|
|
|
|
|
#
|
|
|
|
# Component parsing.
|
|
|
|
#
|
|
|
|
# The variables used are:
|
|
|
|
# _LUA_COMP - Component part.
|
|
|
|
# _LUA_DEP_TYPE - Dependency type part.
|
|
|
|
# _LUA_COMP_NEW - Component + dependency type.
|
|
|
|
# _LUA_COMPS_FINAL - Final list of components with dependency types.
|
|
|
|
#
|
|
|
|
|
|
|
|
# Default components.
|
|
|
|
|
|
|
|
LUA_COMPS?= lua
|
|
|
|
|
|
|
|
# Detect invalid and duplicated components.
|
|
|
|
|
|
|
|
_LUA_COMPS_FINAL= #
|
|
|
|
.for comp in ${LUA_COMPS}
|
|
|
|
_LUA_COMP= ${comp:C/:([[:alpha:]]+)$//}
|
|
|
|
. if ${_LUA_COMP} == ${comp}
|
|
|
|
_LUA_DEP_TYPE= ${_LUA_DEPTYPE_${comp}_${_LUA_VER}}
|
|
|
|
. else
|
|
|
|
_LUA_DEP_TYPE= ${comp:C/.+:([[:alpha:]]+)$/\1/}
|
|
|
|
. endif
|
|
|
|
_LUA_COMP_NEW= ${_LUA_COMP}_${_LUA_DEP_TYPE}
|
|
|
|
. for __LUA_COMP in ${_LUA_COMP}
|
|
|
|
. if ${_LUA_COMPS_ALL:M${__LUA_COMP}} == ""
|
|
|
|
IGNORE?= selected an invalid Lua component: ${__LUA_COMP}
|
|
|
|
. endif
|
|
|
|
. endfor
|
|
|
|
. for __LUA_DEP_TYPE in ${_LUA_DEP_TYPE}
|
|
|
|
. if ${_LUA_DEP_TYPES_ALL:M${__LUA_DEP_TYPE}} == ""
|
|
|
|
IGNORE?= selected an invalid Lua dependency type: ${__LUA_DEP_TYPE}
|
|
|
|
. endif
|
|
|
|
. endfor
|
|
|
|
. if !defined(_LUA_PORT_${_LUA_COMP}_${_LUA_VER})
|
|
|
|
IGNORE?= selected a Lua component (${_LUA_COMP}) which is not available for the selected version (${_LUA_VER})
|
|
|
|
. endif
|
|
|
|
. for newcomp in ${_LUA_COMP_NEW}
|
2006-12-31 20:10:42 -05:00
|
|
|
. if ${_LUA_COMPS_FINAL:M${newcomp}} == "" && !defined(IGNORE)
|
2006-09-15 02:57:07 -04:00
|
|
|
_LUA_COMPS_FINAL+= ${newcomp}
|
|
|
|
. endif
|
|
|
|
. endfor
|
|
|
|
.endfor
|
|
|
|
|
|
|
|
# Add dependencies.
|
|
|
|
#
|
|
|
|
# The variable used are:
|
|
|
|
# _LUA_COMP - - Component part.
|
|
|
|
# _LUA_DEP_TYPE - Dependency type part.
|
|
|
|
|
|
|
|
.for comp in ${_LUA_COMPS_FINAL}
|
|
|
|
_LUA_DEP_TYPE= ${comp:C/.+_([[:alpha:]]+)$/\1/}
|
|
|
|
_LUA_COMP= ${comp:C/_([[:alpha:]]+)$//}
|
|
|
|
# XXX Need a .for loop here so the variable is expanded before the assignment.
|
|
|
|
. for comp_part in ${_LUA_COMP}
|
|
|
|
. if ${_LUA_DEP_TYPE} == "lib"
|
|
|
|
. if defined(_LUA_LIB_${comp_part}_${_LUA_VER})
|
|
|
|
LIB_DEPENDS+= ${_LUA_LIB_${comp_part}_${_LUA_VER}}:${PORTSDIR}/${_LUA_PORT_${comp_part}_${_LUA_VER}}
|
|
|
|
. else
|
|
|
|
BUILD_DEPENDS+= ${_LUA_FILE_${comp_part}_${_LUA_VER}}:${PORTSDIR}/${_LUA_PORT_${comp_part}_${_LUA_VER}}
|
|
|
|
RUN_DEPENDS+= ${_LUA_FILE_${comp_part}_${_LUA_VER}}:${PORTSDIR}/${_LUA_PORT_${comp_part}_${_LUA_VER}}
|
|
|
|
. endif
|
|
|
|
. else
|
|
|
|
${_LUA_DEP_TYPE:U}_DEPENDS+= ${_LUA_FILE_${comp_part}_${_LUA_VER}}:${PORTSDIR}/${_LUA_PORT_${comp_part}_${_LUA_VER}}
|
|
|
|
. endif
|
|
|
|
. endfor
|
|
|
|
.endfor
|
|
|
|
|
|
|
|
# Packaging list variables.
|
|
|
|
.for var in ${_LUA_PLIST_ALL}
|
|
|
|
PLIST_SUB+= ${var}="${${var}}"
|
|
|
|
.endfor
|
|
|
|
.for var in ${_LUA_PLIST_DIR_ALL}
|
|
|
|
PLIST_SUB+= ${var}="${${var}:S/${LUA_PREFIX}\///}"
|
|
|
|
.endfor
|
|
|
|
.for var in ${_LUA_PLIST_ALL} ${_LUA_PLIST_DIR_ALL}
|
|
|
|
MAKE_ENV+= ${var}="${${var}}"
|
|
|
|
.endfor
|
|
|
|
|
|
|
|
.endif # _POSTMKINCLUDED
|