aboutsummaryrefslogtreecommitdiffstats
path: root/Mk
diff options
context:
space:
mode:
Diffstat (limited to 'Mk')
-rw-r--r--Mk/Uses/webplugin.mk187
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