pkgsrc/lang/ruby/rubyversion.mk

364 lines
10 KiB
Makefile
Raw Normal View History

# $NetBSD: rubyversion.mk,v 1.48 2009/06/16 15:08:38 taca Exp $
#
.if !defined(_RUBYVERSION_MK)
_RUBYVERSION_MK= # defined
.include "../../mk/bsd.prefs.mk"
# current supported Ruby's version
RUBY18_VERSION= 1.8.7
# patch
RUBY18_PATCHLEVEL= 174
# RUBY_VERSION_DEFAULT defines default version for Ruby related
# packages and user can define in mk.conf. (1.6 or 1.8)
#
RUBY_VERSION_DEFAULT?= 1.8
# RUBY_VERSION defines the specific Ruby's version which is supported
# by the package. It should be defined by packages whose distfiles
# are contained by Ruby's release distribution.
#
# Default value is set to ${RUBY_VERSION_DEFAULT}
#
2005-11-03 08:23:41 +01:00
.if ${RUBY_VERSION_DEFAULT} == "1.8"
RUBY_VERSION?= ${RUBY18_VERSION}
RUBY_PATCH_LEVEL?= ${RUBY18_PATCHLEVEL}
.endif
.if !empty(RUBY_PATCH_LEVEL)
RUBY_VERSION_SUFFIX= ${RUBY_VERSION}.${RUBY_PATCH_LEVEL}
.else
RUBY_VERSION_SUFFIX= ${RUBY_VERSION}
.endif
# RUBY_VERSION_SUPPORTED defines the list of ${RUBY_VER} which is
# supported by the package. It should be defined by the packages
# for specific Ruby versions.
#
2005-11-03 08:23:41 +01:00
RUBY_VERSION_SUPPORTED?= 18
# RUBY_VERSION_LIST defines the list of ${RUBY_VER} which is known to
# this framework.
#
2005-11-03 08:23:41 +01:00
RUBY_VERSION_LIST= 18
# RUBY_NOVERSION should be set to "Yes" if the package dosen't depend on
# any specific version of ruby command. In this case, package's
# name begin with "ruby-".
# If RUBY_NOVERSION is "No" (default), the package's name is begin
2005-11-03 08:23:41 +01:00
# with ${RUBY_NAME}; "ruby18", "ruby19", and so on.
#
# It also affects to RUBY_DOCDIR, RUBY_EXAMPLESDIR...
#
RUBY_NOVERSION?= No
# _RUBY_VER_MAJOR, _RUBY_VER_MINOR, _RUBY_VER_TEENY and _RUBY_PATCHLEVEL
# is defined from version of Ruby. It should not be used in packages'
# Makefile.
#
_RUBY_VER= ${RUBY_VERSION:C/(-.*)//}
_RUBY_VER_MAJOR= ${_RUBY_VER:C/([0-9]+)\.([0-9]+)\.([0-9]+)/\1/}
_RUBY_VER_MINOR= ${_RUBY_VER:C/([0-9]+)\.([0-9]+)\.([0-9]+)/\2/}
_RUBY_VER_TEENY= ${_RUBY_VER:C/([0-9]+)\.([0-9]+)\.([0-9]+)/\3/}
.if !empty(RUBY_PATCH_LEVEL)
_RUBY_PATCHLEVEL= ${RUBY_VERSION:C/(.*-)//}
.endif
# RUBY_VER defines Ruby base release.
#
RUBY_VER= ${_RUBY_VER_MAJOR}${_RUBY_VER_MINOR}
#
# RUBY_HAS_ARCHLIB This package contains machine dependent binaries.
# RUBY_REQD Minimum required Ruby's version
#
.if defined(RUBY_HAS_ARCHLIB) && empty(RUBY_HAS_ARCHLIB:M[nN][oO])
2005-11-03 08:23:41 +01:00
.if ${RUBY_VER} == "18"
RUBY_REQD?= ${RUBY18_VERSION}
.endif
.else
2005-11-03 08:23:41 +01:00
.if ${RUBY_VER} == "18"
RUBY_REQD?= 1.8.1
.endif
.endif
# RUBY_SUFFIX is appended to Ruby's commands; ruby, irb and so on.
#
RUBY_SUFFIX?= ${RUBY_VER}
# RUBY_NAME defines executable's name of Ruby itself.
#
RUBY_NAME?= ruby${RUBY_SUFFIX}
# RUBY_BASE is base of ruby package's name
#
RUBY_BASE= ruby${RUBY_VER}-base
# RUBY_PKGPREFIX is prefix part for ruby based packages.
#
RUBY_PKGPREFIX?= ${RUBY_NAME}
# RUBY_VER_DIR is used as part of Ruby's library directories.
#
RUBY_VER_DIR?= ${_RUBY_VER_MAJOR}.${_RUBY_VER_MINOR}
# Simple check for package availability with Ruby's version.
#
.if empty(RUBY_VERSION_SUPPORTED:M${RUBY_VER})
PKG_FAIL_REASON+= "This package isn't supported by ${RUBY_NAME}."
.endif
# RUBY_NOVERSION specifies that package dosen't depends on any
# version of Ruby.
#
.if empty(RUBY_NOVERSION:M[nN][oO])
RUBY_SUFFIX=
RUBY_NAME= ruby
.endif
# RUBY related command's full pathname.
#
RUBY?= ${PREFIX}/bin/${RUBY_NAME}
RDOC?= ${PREFIX}/bin/rdoc${RUBY_VER}
#
2005-11-10 01:17:36 +01:00
# RUBY_ARCH is used as architecture-dependent directory name.
#
RUBY_ARCH?= ${LOWER_ARCH}-${LOWER_OPSYS}${APPEND_ELF}${LOWER_OPSYS_VERSUFFIX}
#
# Ruby shared library version handling.
#
RUBY_SHLIBMAJOR?= ${_RUBY_VER_MAJOR}
RUBY_SHLIBVER?= ${RUBY_VERSION}
.if ${OPSYS} == "NetBSD" || ${OPSYS} == "Interix"
RUBY_SHLIBMAJOR= ${RUBY_VER}
RUBY_SHLIBVER= ${RUBY_VER}.${_RUBY_VER_TEENY}
.elif ${OPSYS} == "FreeBSD" || ${OPSYS} == "DragonFly"
RUBY_SHLIBMAJOR= # unused
RUBY_SHLIBVER= ${RUBY_VER}
.elif ${OPSYS} == "OpenBSD"
RUBY_SHLIBMAJOR= # unused
RUBY_SHLIBVER= ${_RUBY_VER_MAJOR}.${_RUBY_VER_MINOR}${_RUBY_VER_TEENY}
.elif ${OPSYS} == "IRIX"
RUBY_SHLIBMAJOR= # unused
.elif ${OPSYS} == "Linux"
RUBY_SHLIBMAJOR= ${_RUBY_VER_MAJOR}.${_RUBY_VER_MINOR}
.endif
.if empty(RUBY_SHLIBMAJOR)
RUBY_NOSHLIBMAJOR= "@comment "
.else
RUBY_NOSHLIBMAJOR=
.endif
#
# RUBY_DLEXT is suffix of extention library.
#
.if ${OPSYS} == "Darwin"
RUBY_DLEXT= bundle
.else
RUBY_DLEXT= so
.endif
#
# Use pthread library with Ruby
#
.if ${OPSYS} == "NetBSD" && !empty(OS_VERSION:M1.[0-9].*)
RUBY_USE_PTHREAD?= no
.elif !empty(MACHINE_PLATFORM:MDarwin-9.*-powerpc)
# Workaround for Ruby Bug #193
# http://redmine.ruby-lang.org/issues/show/193
RUBY_USE_PTHREAD?= no
.else
RUBY_USE_PTHREAD?= yes
PTHREAD_OPTS+= native
PTHREAD_AUTO_VARS= yes
.endif
#
# Dynamic PLIST directories
#
RUBY_DYNAMIC_DIRS?= # empty
#
# source directory
#
RUBY_SRCDIR?= ${_PKGSRC_TOPDIR}/lang/${RUBY_BASE}
#
# common paths
#
RUBY_LIB?= lib/ruby/${RUBY_VER_DIR}
RUBY_ARCHLIB?= ${RUBY_LIB}/${RUBY_ARCH}
RUBY_SITELIB_BASE?= lib/ruby/site_ruby
RUBY_SITELIB?= ${RUBY_SITELIB_BASE}/${RUBY_VER_DIR}
RUBY_SITEARCHLIB?= ${RUBY_SITELIB}/${RUBY_ARCH}
RUBY_VENDORLIB_BASE?= lib/ruby/vendor_ruby
RUBY_VENDORLIB?= ${RUBY_VENDORLIB_BASE}/${RUBY_VER_DIR}
RUBY_VENDORARCHLIB?= ${RUBY_VENDORLIB}/${RUBY_ARCH}
RUBY_DOC?= share/doc/${RUBY_NAME}
RUBY_EG?= share/examples/${RUBY_NAME}
#
# These will be discontinued in near future.
#
RUBY_LIBDIR= ${PREFIX}/${RUBY_LIB}
RUBY_ARCHLIBDIR= ${PREFIX}/${RUBY_ARCHLIB}
RUBY_SITELIBDIR= ${PREFIX}/${RUBY_SITELIB}
RUBY_SITEARCHLIBDIR= ${PREFIX}/${RUBY_SITEARCHLIB}
RUBY_VENDORLIBDIR= ${PREFIX}/${RUBY_VENDORLIB}
RUBY_VENDORARCHLIBDIR= ${PREFIX}/${RUBY_VENDORARCHLIB}
RUBY_DOCDIR= ${PREFIX}/${RUBY_DOC}
RUBY_EXAMPLESDIR= ${PREFIX}/${RUBY_EG}
#
# ri database relative path
#
RUBY_RIDIR?= share/ri
RUBY_BASERIDIR?= ${RUBY_RIDIR}/${RUBY_VER_DIR}
RUBY_SYSRIDIR?= ${RUBY_BASERIDIR}/system
RUBY_SITERIDIR?= ${RUBY_BASERIDIR}/site
#
# MAKE_ENV
#
MAKE_ENV+= RUBY=${RUBY:Q} RUBY_VER=${RUBY_VER:Q} \
RUBY_VERSION=${RUBY_VERSION:Q} \
RUBY_VERSION_DEFAULT=${RUBY_VERSION_DEFAULT:Q}
MAKEFLAGS+= RUBY_VERSION=${RUBY_VERSION:Q} \
RUBY_VERSION_DEFAULT=${RUBY_VERSION_DEFAULT:Q}
# PLIST
#
PLIST_RUBY_DIRS= RUBY_LIB="${RUBY_LIB}" \
RUBY_ARCHLIB="${RUBY_ARCHLIB}" \
RUBY_SITELIB_BASE=${RUBY_SITELIB_BASE:Q} \
RUBY_SITELIB="${RUBY_SITELIB}" \
RUBY_SITEARCHLIB="${RUBY_SITEARCHLIB}" \
RUBY_VENDORLIB_BASE=${RUBY_VENDORLIB_BASE:Q} \
RUBY_VENDORLIB=${RUBY_VENDORLIB:Q} \
RUBY_VENDORARCHLIB=${RUBY_VENDORARCHLIB:Q} \
RUBY_DOC="${RUBY_DOC}" \
RUBY_EG="${RUBY_EG}" \
RUBY_LIBDIR="${RUBY_LIBDIR}" \
RUBY_ARCHLIBDIR="${RUBY_ARCHLIBDIR}" \
RUBY_SITELIBDIR="${RUBY_SITELIBDIR}" \
RUBY_SITEARCHLIBDIR="${RUBY_SITEARCHLIBDIR}" \
RUBY_DOCDIR="${RUBY_DOCDIR}" \
RUBY_EXAMPLESDIR="${RUBY_EXAMPLESDIR}" \
RUBY_RIDIR="${RUBY_RIDIR}" \
RUBY_BASERIDIR="${RUBY_BASERIDIR}" \
RUBY_SYSRIDIR="${RUBY_SYSRIDIR}" \
RUBY_SITERIDIR="${RUBY_SITERIDIR}"
#
# substitutions
#
FILES_SUBST+= RUBY=${RUBY:Q} RUBY_NAME=${RUBY_NAME:Q} \
RUBY_PKGPREFIX=${RUBY_PKGPREFIX:Q} \
RUBY_VER=${RUBY_VER:Q} \
${PLIST_RUBY_DIRS}
MESSAGE_SUBST+= RUBY="${RUBY}" RUBY_VER="${RUBY_VER}" \
RUBY_VERSION="${RUBY_VERSION}" \
RUBY_PKGPREFIX="${RUBY_PKGPREFIX}" \
${PLIST_RUBY_DIRS:S,DIR="${PREFIX}/,DIR=",}
PLIST_SUBST+= RUBY=${RUBY:Q} RUBY_VER=${RUBY_VER:Q} \
RUBY_VERSION=${RUBY_VERSION:Q} \
RUBY_VER_DIR=${RUBY_VER_DIR:Q} \
RUBY_DLEXT=${RUBY_DLEXT:Q} \
2008-03-21 16:07:28 +01:00
RUBY_ARCH=${RUBY_ARCH:Q} \
${PLIST_RUBY_DIRS:S,DIR="${PREFIX}/,DIR=",}
#
# make dynamic PLIST
#
.if !empty(RUBY_DYNAMIC_DIRS)
RUBY_PLIST_DYNAMIC= ${WRKDIR}/PLIST.work
.if !defined(PLIST_SRC)
. if exists(${PKGDIR}/PLIST.common)
PLIST_SRC+= ${PKGDIR}/PLIST.common
. elif exists(${PKGDIR}/PLIST)
PLIST_SRC+= ${PKGDIR}/PLIST
. endif
PLIST_SRC+= ${RUBY_PLIST_DYNAMIC}
. if exists(${PKGDIR}/PLIST.common_end)
PLIST_SRC+= ${PKGDIR}/PLIST.common_end
. endif
.endif
RUBY_PLIST_COMMENT_CMD= \
${ECHO} "@comment The following lines are automatically generated"
RUBY_PLIST_FILES_CMD= ( cd ${DESTDIR}${PREFIX}; \
${FIND} ${RUBY_DYNAMIC_DIRS} \( -type f -o -type l \) -print ) | \
${SORT} -u
RUBY_GENERATE_PLIST = ( \
${RUBY_PLIST_COMMENT_CMD}; \
2009-06-15 00:57:58 +02:00
${RUBY_PLIST_FILES_CMD} ) > ${RUBY_PLIST_DYNAMIC}
.endif
.if !empty(RUBY_NOVERSION:M[nN][oO])
.if empty(RUBY_USE_PTHREAD:M[nN][oO])
.include "../../mk/pthread.buildlink3.mk"
.endif
.include "../../mk/bdb.buildlink3.mk"
.include "../../converters/libiconv/buildlink3.mk"
.include "../../devel/zlib/buildlink3.mk"
.include "../../security/openssl/buildlink3.mk"
.include "../../mk/dlopen.buildlink3.mk"
.endif
PRINT_PLIST_AWK+= /\.${RUBY_DLEXT}$$/ \
{ gsub(/${RUBY_DLEXT}$$/, "$${RUBY_DLEXT}") }
2009-06-15 00:57:58 +02:00
PRINT_PLIST_AWK+= /^${RUBY_ARCHLIB:S|/|\\/|g}/ \
{ gsub(/${RUBY_ARCHLIB:S|/|\\/|g}/, "$${RUBY_ARCHLIB}"); \
print; next; }
2009-06-15 00:57:58 +02:00
PRINT_PLIST_AWK+= /^${RUBY_VENDORARCHLIB:S|/|\\/|g}/ \
{ gsub(/${RUBY_VENDORARCHLIB:S|/|\\/|g}/, "$${RUBY_VENDORARCHLIB}"); \
print; next; }
2009-06-15 00:57:58 +02:00
PRINT_PLIST_AWK+= /^${RUBY_VENDORLIB:S|/|\\/|g}/ \
{ gsub(/${RUBY_VENDORLIB:S|/|\\/|g}/, "$${RUBY_VENDORLIB}"); \
print; next; }
2009-06-15 00:57:58 +02:00
PRINT_PLIST_AWK+= /^${RUBY_SITEARCHLIB:S|/|\\/|g}/ \
{ gsub(/${RUBY_SITEARCHLIB:S|/|\\/|g}/, "$${RUBY_SITEARCHLIB}"); \
print; next; }
2009-06-15 00:57:58 +02:00
PRINT_PLIST_AWK+= /^${RUBY_SITELIB:S|/|\\/|g}/ \
{ gsub(/${RUBY_SITELIB:S|/|\\/|g}/, "$${RUBY_SITELIB}"); \
print; next; }
2009-06-15 00:57:58 +02:00
PRINT_PLIST_AWK+= /^${RUBY_SITELIB_BASE:S|/|\\/|g}$$/ \
{ gsub(/${RUBY_SITELIB_BASE:S|/|\\/|g}/, "$${RUBY_SITELIB_BASE}"); \
print; next; }
2009-06-15 00:57:58 +02:00
PRINT_PLIST_AWK+= /^${RUBY_VENDORLIB_BASE:S|/|\\/|g}$$/ \
{ gsub(/${RUBY_VENDORLIB_BASE:S|/|\\/|g}/, "$${RUBY_VENDORLIB_BASE}"); \
print; next; }
2009-06-15 00:57:58 +02:00
PRINT_PLIST_AWK+= /^${RUBY_LIB:S|/|\\/|g}/ \
{ gsub(/${RUBY_LIB:S|/|\\/|g}/, "$${RUBY_LIB}"); \
print; next; }
2009-06-15 00:57:58 +02:00
PRINT_PLIST_AWK+= /^${RUBY_DOC:S|/|\\/|g}/ \
{ gsub(/${RUBY_DOC:S|/|\\/|g}/, "$${RUBY_DOC}"); \
print; next; }
2009-06-15 00:57:58 +02:00
PRINT_PLIST_AWK+= /^${RUBY_EG:S|/|\\/|g}/ \
{ gsub(/${RUBY_EG:S|/|\\/|g}/, "$${RUBY_EG}"); \
print; next; }
2009-06-15 00:57:58 +02:00
PRINT_PLIST_AWK+= /^${RUBY_SITERIDIR:S|/|\\/|g}/ \
{ gsub(/${RUBY_SITERIDIR:S|/|\\/|g}/, "$${RUBY_SITERIDIR}"); \
print; next; }
2009-06-15 00:57:58 +02:00
PRINT_PLIST_AWK+= /^${RUBY_SYSRIDIR:S|/|\\/|g}/ \
{ gsub(/${RUBY_SYSRIDIR:S|/|\\/|g}/, "$${RUBY_SYSRIDIR}"); \
print; next; }
.endif # _RUBY_MK