diff options
Diffstat (limited to 'Mk')
-rw-r--r-- | Mk/Uses/webplugin.mk | 187 |
1 files changed, 187 insertions, 0 deletions
diff --git a/Mk/Uses/webplugin.mk b/Mk/Uses/webplugin.mk new file mode 100644 index 000000000000..6d8ce47c1a26 --- /dev/null +++ b/Mk/Uses/webplugin.mk @@ -0,0 +1,187 @@ +# $FreeBSD$ +# +# MAINTAINER= gecko@FreeBSD.org +# +# 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 +# @dirrmtry %%WEBPLUGIN_DIR%% +# ------------------------------------------------------ +# +# 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 +# @dirrm lib/application +# ------------------------------------------------------ +# +# 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 +# ------------------------------------------------------ + +.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_ARGS?= all +_WEBPLUGIN_ARGS= ${webplugin_ARGS:C/,/ /} +_WEBPLUGIN_TEST= ${_WEBPLUGIN_APPS_ALL} +.if ${_WEBPLUGIN_ARGS} == all +_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:C/,/ /} +.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}/,,}" + +_LNWF= ${WEBPLUGIN_FILES:S,^,${WEBPLUGIN_DIR}/,} +.for f in ${WEBPLUGIN_FILES} +PLIST_FILES+= ${_WEBPLUGIN_LINKFARMS:S,${LOCALBASE}/,,:C,(.*),\1/${f},} +.endfor +PLIST_DIRSTRY+= ${_WEBPLUGIN_SLDIRS:S,^${LOCALBASE}/,,} \ + ${_WEBPLUGIN_SLDIR:S,^${LOCALBASE}/,,} \ + ${_WEBPLUGIN_LIBDIR:S,^${LOCALBASE}/,,} + +webplugin-post-install: +.for d in ${_WEBPLUGIN_LINKFARMS} + ${INSTALL} -d ${STAGEDIR}${d} +.for l in ${_LNWF} + ${LN} -sf ${l} ${STAGEDIR}${d}/ +.endfor +.endfor + +post-install: webplugin-post-install + +.endif |