freebsd-ports/Mk/Uses/webplugin.mk
Tijl Coosemans fe837ee6c6 Change the way USES is handled:
- Loop over USES twice, once to define all *_ARGS variables and once to
  include Uses/*.mk.  This allows all Uses/*.mk to examine arguments given
  to other USES entries.
- Always define *_ARGS (possibly empty) and replace commas with spaces.

Similar for _USES_POST.

Adjust all Uses/*.mk:
- defined(u_ARGS) becomes !empty(u_ARGS)
- Eliminate helper variables like _*_ARGS=${*_ARGS:C/,/ /g}
- Some Uses/*.mk used ":" as argument separator instead of ",", but no port
  used this form
- Uses/cran.mk: remove unused variable VALID_ARGS and USES+=fortran which
  has no effect
- Uses/twisted.mk: simplify handling of the case where neither "build" nor
  "run" arguments have been specified

PR:		193931
Exp-run by:	antoine
Approved by:	portmgr (antoine)
2014-09-28 16:36:31 +00:00

178 lines
5.9 KiB
Makefile

# $FreeBSD$
#
# Documentation and examples:
#
# Feature: webplugin
# Usage: USES=webplugin or USES=webplugin:ARGS
# Valid ARGS: gecko: Support geko based plugings
# native: Support gecko, opera, webkit-gtk*
# linux: Support linux plugins
# [list of indivudual engines]: specify browsers to use
# all: All browser (implicit, default)
#
# USES=webplugin will create symlinks automatically for each supported
# application that supports the webplugin framework. Also, it will remove
# these symlinks when the plug-in port is uninstalled.
#
# WEBPLUGIN_NAME - If your port installs files in ${WEBPLUGIN_DIR},
# then you can tweak WEBPLUGIN_NAME to change the
# name of the directory
# (lib/browser_plugins/symlinks/WEBPLUGIN_NAME).
# Default: WEBPLUGIN_NAME=${PKGBASE}
#
# WEBPLUGIN_FILES - The plug-in files that are going to be linked
# in lib/browser_plugins/symlinks/*/. It cannot
# be empty or the port will set IGNORE.
#
# WEBPLUGIN_DIR - The directory where the plug-in file(s) can be
# found. Each plug-in file in WEBPLUGIN_FILES
# must be found in WEBPLUGIN_DIR. If your port
# does not install in WEBPLUGIN_DIR, but in its own
# path, you will need to specify that here or
# symlinks will be created to non-existent files.
# Default: WEBPLUGIN_DIR=${_WEBPLUGIN_LIBDIR:S,^${LOCALBASE}/,${PREFIX}/,}/${WEBPLUGIN_NAME}
#
# Makefile:
# ------------------------------------------------------
# USES= webplugin:gecko
# [...]
# WEBPLUGIN_FILES=fooplugin.so fooplugin.xpi
#
# post-install:
# ${MKDIR} ${STAGEDIR}${WEBPLUGIN_DIR}
# ${INSTALL_DATA} ${WEBPLUGIN_FILES:S,^,${WRKSRC}/plugins/,} \
# ${STAGEDIR}${WEBPLUGIN_DIR}
#
# .include <bsd.port.mk>
# ------------------------------------------------------
#
# You do not need to add lib/browser_plugins and lib/browser_plugins/symlinks
# in pkg-plist, because they will be removed automatically.
#
# pkg-plist:
# ------------------------------------------------------
# [...]
# %%WEBPLUGIN_DIR%%/fooplugin.so
# %%WEBPLUGIN_DIR%%/fooplugin.xpi
# ------------------------------------------------------
#
# Here is what it will look like when it creates the symlinks:
#
# ------------------------------------------------------
# /usr/local/lib/browser_plugins/symlinks/gecko/fooplugin.so -> /usr/local/lib/browser_plugins/application/fooplugin.so
# /usr/local/lib/browser_plugins/symlinks/gecko/fooplugin.xpi -> /usr/local/lib/browser_plugins/application/fooplugin.xpi
# ------------------------------------------------------
#
# If your port uses libtool, and installs any *.a and *.la files, do not add
# these files to WEBPLUGIN_FILES. WEBPLUGIN_FILES should be *.so or/and
# *.xpi ONLY.
#
# Example to add in Makefile and pkg-plist if your port installs plug-ins in
# its own directory, and you need to set WEBPLUGIN_DIR.
#
# Makefile:
# ------------------------------------------------------
# [...]
# USES= webplugin:gecko
# WEBPLUGIN_DIR=${PREFIX}/lib/application
# WEBPLUGIN_FILES=fooplugin.so fooplugin.xpi
#
# [...]
#
# .include <bsd.port.mk>
# ------------------------------------------------------
#
# As for the pkg-plist, it should only include the actual files your
# port installs:
#
# pkg-plist:
# ------------------------------------------------------
# [...]
# lib/application/fooplugin.a
# lib/application/fooplugin.la
# lib/application/fooplugin.so
# lib/application/fooplugin.xpi
# ------------------------------------------------------
#
# Here is what it will look like when it creates symlinks:
#
# ------------------------------------------------------
# /usr/local/lib/browser_plugins/symlinks/gecko/fooplugin.so -> /usr/local/lib/application/fooplugin.so
# /usr/local/lib/browser_plugins/symlinks/gecko/fooplugin.xpi -> /usr/local/lib/application/fooplugin.xpi
# ------------------------------------------------------
#
# MAINTAINER= gecko@FreeBSD.org
.if !defined(_INCLUDE_USES_WEBPLUGIN_MK)
_INCLUDE_USES_WEBPLUGIN_MK= yes
WEBPLUGIN_NAME?= ${PKGBASE}
_WEBPLUGIN_APPS_ALL_LINUX= linux-firefox linux-opera linux-opera-devel \
linux-seamonkey
_WEBPLUGIN_APPS_ALL_NATIVE= gecko opera opera-devel webkit-gtk2
_WEBPLUGIN_APPS_ALL= ${_WEBPLUGIN_APPS_ALL_LINUX} \
${_WEBPLUGIN_APPS_ALL_NATIVE}
_WEBPLUGIN_TEST= ${_WEBPLUGIN_APPS_ALL}
.if ${webplugin_ARGS} == all || empty(webplugin_ARGS)
_WEBPLUGIN_PATTERN= *
.elif ${webplugin_ARGS} == native
_WEBPLUGIN_PATTERN= *
_WEBPLUGIN_TEST= ${_WEBPLUGIN_APPS_ALL_NATIVE}
.elif ${webplugin_ARGS} == linux
_WEBPLUGIN_PATTERN= *
_WEBPLUGIN_TEST= ${_WEBPLUGIN_APPS_ALL_LINUX}
.else
_WEBPLUGIN_PATTERN= ${webplugin_ARGS}
.endif
.if !defined(WEBPLUGIN_FILES)
IGNORE= Cannot be installed: WEBPLUGIN_FILES is empty. Please, add plug-in files to it
.endif
.for _TEMP_APP__ in ${_WEBPLUGIN_APPS_ALL}
_TEMP_APP_=${_TEMP_APP__}
_TEMP_FLAG_=0
. for _TEMP_USE__ in ${USE_webplugin}
_TEMP_USE_=${_TEMP_USE__}
. if !${_TEMP_APP_:C!${_TEMP_USE_:S/*/.*/:S/?/./}!!} || \
( ${_TEMP_APP_:Mlinux-*} && ${_TEMP_USE_:Mlinux} ) || \
( ${_TEMP_APP_:Nlinux-*} && ${_TEMP_USE_:Mnative} )
_TEMP_FLAG_=1
. endif
. endfor
. if ${_TEMP_FLAG_}
USE_WEBPLUGIN_EXP+= ${_TEMP_APP__}
. endif
.endfor
.for p in ${_WEBPLUGIN_PATTERN}
_WEBPLUGIN_MATCHED+= ${_WEBPLUGIN_TEST:M${p}}
.endfor
_WEBPLUGIN_LIBDIR= ${LOCALBASE}/lib/browser_plugins
_WEBPLUGIN_SLDIR= ${_WEBPLUGIN_LIBDIR}/symlinks
_WEBPLUGIN_SLDIRS= ${_WEBPLUGIN_MATCHED:S.^.${_WEBPLUGIN_SLDIR}/.}
_WEBPLUGIN_APPS= ${USE_WEBPLUGIN_EXP:S.^.${LOCALBASE}/lib/.:S.$./plugins.:N*opera*:N*gecko*:N*webkit*}
_WEBPLUGIN_LINKFARMS= ${_WEBPLUGIN_APPS} ${_WEBPLUGIN_SLDIRS}
WEBPLUGIN_DIR?= ${_WEBPLUGIN_LIBDIR:S,^${LOCALBASE}/,${PREFIX}/,}/${WEBPLUGIN_NAME}
PLIST_SUB+= WEBPLUGIN_DIR="${WEBPLUGIN_DIR:S,^${PREFIX}/,,}"
.for d in ${_WEBPLUGIN_LINKFARMS}
.for l in ${WEBPLUGIN_FILES}
PLIST_FILES+= ${d}/${l}
.endfor
.endfor
webplugin-post-install:
.for d in ${_WEBPLUGIN_LINKFARMS}
${MKDIR} ${STAGEDIR}${d}
.for l in ${WEBPLUGIN_FILES}
${LN} -sf ${l:S,^,${WEBPLUGIN_DIR}/,} ${STAGEDIR}${d}/
.endfor
.endfor
.endif