aboutsummaryrefslogtreecommitdiffstats
path: root/Mk/Uses/npapi.mk
diff options
context:
space:
mode:
Diffstat (limited to 'Mk/Uses/npapi.mk')
-rw-r--r--Mk/Uses/npapi.mk209
1 files changed, 209 insertions, 0 deletions
diff --git a/Mk/Uses/npapi.mk b/Mk/Uses/npapi.mk
new file mode 100644
index 000000000000..614bec250661
--- /dev/null
+++ b/Mk/Uses/npapi.mk
@@ -0,0 +1,209 @@
+# $FreeBSD$
+#
+# MAINTAINER: ports@FreeBSD.org
+#
+# Feature: npapi
+# Usage: USES=npapi
+# Valid ARGS: none
+#
+# Additional variables that affect npapi behaviour:
+# NPAPI_ID - Extension id, might be in {12345-...} or dev@org format
+# NPAPI_FILES - List of files in npapi archive. This is used to produce
+# PLIST_FILES. NPAPI_FILES can be generated by npapi-gen, but be
+# sure to put chrome.manifest in ${FILESDIR} before that if you
+# need it.
+# NPAPI_DIRS - List of directories in npapi archive. This is used to produce
+# PLIST_DIRS.
+# NPAPI_LIBDIR - Name of the directory to install plugins in.
+# Default: ${PREFIX}/lib/npapi
+# NPAPI_NPAPIDIR
+# - Name of the directory to install plugin's files in.
+# Default: ${NPAPI_LIBDIR}/${NPAPI_ID}
+# USE_NPAPI - If set, the port installs one or more npapi plugins.
+# If this is set to a list of apps (wildcards possible) the
+# plugins will be installed for them only. "linux" and "native"
+# keywords can be used to support all linux-compat and native
+# browsers, correspondingly. "embed" keyword prevents the
+# do-install target being set to a default.
+# WITH_NPAPI - A user-tunable variable, determines which apps should
+# plugin be made available for. Can be set to a list of
+# apps, same as USE_NPAPI, and/or to "ext:app[,app,app,...]"
+# tuples. ext should be a portname. If ext starts and ends with
+# a slash (`/'), it is treated as an extended regular expression
+# (see re_format(7)). Right of the colon should be a list of
+# apps in the same format as USE_NPAPI, but comma- instead of
+# whitespace-delimited. If no matching tuples for an plugin are
+# found, WITH_NPAPI is scanned for non tuple-records which are
+# then treated as a USE_NPAPI list. If several tuples match, the
+# last non-regexp one takes precedence, then the last regexp
+# one.
+#
+# Npapi's are installed into ${LOCALBASE}/lib/npapi/${NPAPI_ID} by default and
+# links are made to all apps which have the engine (firefox, thunderbird, flock,
+# netscape messenger and navigator at the moment). relink and relink-all targets
+# can be invoked to refarm the links of a single plugins or all installed
+# plugins accordingly.
+#
+# npapi ports do not depend on their master applications. You can install an
+# plugin before the app and run relink when the app is present.
+#
+.if !defined(_INCLUDE_USES_NPAPI_MK)
+_INCLUDE_USES_NPAPI_MK= yes
+
+.if defined(npapi)
+IGNORE= Incorrect 'USES+= npapi:${npapi_ARGS}' npapi takes no arguments
+.endif
+
+NPAPI_ID?= ${PKGBASE}
+NPAPI_DISTNAME?= ${PORTNAME}
+NPAPI_WRKSRC?= ${WRKSRC}
+NPAPI_PKGINSTALL?= ${WRKDIR}/npapi-pkg-install
+NPAPI_PKGDEINSTALL?= ${WRKDIR}/npapi-pkg-deinstall
+PKGINSTALL?= ${NPAPI_PKGINSTALL}
+PKGDEINSTALL?= ${NPAPI_PKGDEINSTALL}
+
+NPAPI_APPS_ALL_WC= *mozilla* *firefox* *flock* *seamonkey* *opera* \
+ *netscape-messenger* *netscape-navigator*
+NPAPI_APPS_ALL_WC_LINUX= ${NPAPI_APPS_ALL_WC:S/^*/linux-/}
+NPAPI_APPS_ALL_WC_NATIVE= ${NPAPI_APPS_ALL_WC:S/^*//}
+NPAPI_APPS_ALL= firefox firefox-devel linux-firefox linux-firefox-devel \
+ flock flock-devel linux-flock linux-flock-devel \
+ mozilla mozilla-devel linux-mozilla firefox3 firefox35 \
+ linux-netscape-messenger linux-netscape-navigator \
+ nvu linux-nvu \
+ opera opera-devel linux-opera linux-opera-devel \
+ seamonkey seamonkey-devel linux-seamonkey linux-seamonkey-devel \
+ sunbird sunbird-devel linux-sunbird linux-sunbird-devel
+
+# === Let's process WITH_NPAPI into WITH_NPAPI_APPS
+WITH_NPAPI_TUPLES= ${WITH_NPAPI:M*?\:?*}
+WITH_NPAPI_NTUPLES= ${WITH_NPAPI:N*\:*}
+WITH_NPAPI_TUPLES_RX= ${WITH_NPAPI_TUPLES:M/*?*/\:?*}
+WITH_NPAPI_TUPLES_WC= ${WITH_NPAPI_TUPLES:N/*?*/\:?*}
+WITH_NPAPI_MATCH?= ${PORTNAME}
+WITH_NPAPI_MATCHSTRING?= _=~match~=_
+
+.for tuple_rx in ${WITH_NPAPI_TUPLES_RX}
+_rx= ${tuple_rx:C!/(.*)/\:.*!\1!}
+_apps= ${tuple_rx:C!/.*/\:(.*)!\1!}
+_testrx=${WITH_NPAPI_MATCH:C!.*${_rx}.*!${WITH_NPAPI_MATCHSTRING}!}
+.if ${_testrx} == ${WITH_NPAPI_MATCHSTRING}
+WITH_NPAPI_APPS:= ${_apps:S/,/ /g}
+.endif
+.endfor
+
+.for tuple_wc in ${WITH_NPAPI_TUPLES_WC}
+_wc= ${tuple_wc:C!(.*)\:.*!\1!}
+_apps= ${tuple_wc:C!.*\:(.*)!\1!}
+.if ${_wc} == ${WITH_NPAPI_MATCH}
+WITH_NPAPI_APPS:= ${_apps:S/,/ /g}
+.endif
+.endfor
+
+.if ${WITH_NPAPI_NTUPLES}
+WITH_NPAPI_APPS?= ${WITH_NPAPI_NTUPLES}
+.endif
+# === WITH_NPAPI has been processed
+
+.ifdef WITH_NPAPI_APPS
+USE_NPAPI= ${WITH_NPAPI_APPS}
+.endif
+
+.if !defined(USE_NPAPI) || ${USE_NPAPI:U} == "YES" || ${USE_NPAPI} == "*"
+USE_NPAPI= ${NPAPI_APPS_ALL_WC}
+.endif
+
+.for _TEMP_APP__ in ${NPAPI_APPS_ALL}
+_TEMP_APP_=${_TEMP_APP__}
+_TEMP_FLAG_=0
+. for _TEMP_USE__ in ${USE_NPAPI}
+_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_NPAPI_EXP+= ${_TEMP_APP__}
+. endif
+.endfor
+
+NPAPI_APPS?= ${USE_NPAPI_EXP:S.^.${LOCALBASE}/lib/.:S.$./plugins.:N*opera*} \
+ ${USE_NPAPI_EXP:S.^.${LOCALBASE}/share/.:S.$./plugins.:M*/opera*}
+NPAPI_SLDIRS_ALL= ${NPAPI_APPS_ALL:S.^.${NPAPI_SLDIR}/.}
+NPAPI_SLDIRS= ${USE_NPAPI_EXP:S.^.${NPAPI_SLDIR}/.}
+NPAPI_LINKFARMS= ${NPAPI_APPS} ${NPAPI_SLDIRS}
+
+NPAPI_LIBDIR?= ${PREFIX}/lib/npapi
+NPAPI_SLDIR?= ${NPAPI_LIBDIR}/symlinks
+.ifndef NPAPI_DISTNAMES
+NPAPI_NPAPIDIR?= ${NPAPI_LIBDIR}/${NPAPI_ID}
+.endif
+NPAPI_DIRS_TRY= ${NPAPI_SLDIRS_ALL:S,^${PREFIX}/,,} \
+ ${NPAPI_SLDIR:S,^${PREFIX}/,,} \
+ ${NPAPI_LIBDIR:S,^${PREFIX}/,,}
+
+PLIST_SUB+= NPAPI_LIBDIR="${NPAPI_LIBDIR:S,^${PREFIX}/,,}" \
+ NPAPI_NPAPIDIR="${NPAPI_NPAPIDIR:S,^${PREFIX}/,,}"
+
+_TD= ${NPAPI_NPAPIDIR:S,^${PREFIX}/,,}
+_TD_FULL= ${NPAPI_NPAPIDIR}
+_A= >> ${TMPPLIST}
+_PI= ${NPAPI_PKGINSTALL}
+_PD= ${NPAPI_PKGDEINSTALL}
+_Q= 2>/dev/null || true
+PLIST_FILES+= ${NPAPI_FILES:S!^!${_TD}/!}
+PLIST_DIRS+= ${NPAPI_DIRS:S!^!${_TD}/!} ${_TD}
+
+.for dist in ${NPAPI_DISTNAMES}
+NPAPI_NPAPIDIR_${dist}= ${NPAPI_LIBDIR}/${NPAPI_ID_${dist}}
+_TD_${dist}= ${NPAPI_NPAPIDIR_${dist}:S,^${PREFIX}/,,}
+PLIST_FILES+= ${NPAPI_FILES_${dist}:S!^!${_TD_${dist}}/!}
+PLIST_DIRS+= ${NPAPI_DIRS_${dist}:S!^!${_TD_${dist}}/!} ${_TD_${dist}}
+.endfor
+
+npapi-do-install:
+ ${INSTALL} -d ${_TD_FULL} ${STAGEDIR}${NPAPI_SLDIRS_ALL}
+ ${CP} -p ${NPAPI_FILES:S,^,${NPAPI_WRKSRC}/,} ${_TD_FULL}/
+ ${CHOWN} -R ${SHAREOWN}:${SHAREGRP} ${_TD_FULL}/
+ ${CHMOD} -R a+rX,go-w ${_TD_FULL}/
+ for _dir in ${NPAPI_LINKFARMS} ; { ${LN} -sf ${_TD_FULL}/* $$_dir ${_Q} ; }
+ ${ECHO_CMD} '${INSTALL} -d ${NPAPI_SLDIRS_ALL}' > ${_PI}
+ ${ECHO_CMD} 'for _dir in ${NPAPI_LINKFARMS} ; \
+ { ${LN} -sf ${NPAPI_FILES:S,^,${_TD_FULL}/,} $$_dir/ ${_Q}; }' >> ${_PI}
+ ${ECHO_CMD} 'for _dir in ${NPAPI_LINKFARMS} ; \
+ { ${RM} -f ${NPAPI_FILES:S,^,\$_dir/,} ; }' > ${_PD}
+ ${ECHO_CMD} 'rmdir ${NPAPI_DIRS_TRY:S,^,${PREFIX}/,} ${_Q}' >> ${_PD}
+.if ${PKGINSTALL} != ${NPAPI_PKGINSTALL}
+ ${CAT} ${NPAPI_PKGINSTALL} >> ${PKGINSTALL}
+.endif
+.if ${PKGDEINSTALL} != ${NPAPI_PKGDEINSTALL}
+ ${CAT} ${NPAPI_PKGDEINSTALL} >> ${PKGDEINSTALL}
+.endif
+
+.if !target(do-install) && !${USE_NPAPI:Membed}
+do-install: npapi-do-install
+.endif
+
+.if !target(relink)
+relink:
+ @-for _app in ${NPAPI_APPS} ; { ${LN} -sf ${_TD_FULL}/* $$_app ${_Q} ; }
+.endif
+
+# Maintainer section
+npapi-gen: extract
+ @${ECHO_CMD} -n 'NPAPI_FILES='
+ @cd ${NPAPI_WRKSRC} && ${FIND} -s . -not -type d | cut -f2- -d/ | ${TR} '\n' ' '
+ @${ECHO_CMD}
+ @${ECHO_CMD} -n 'NPAPI_DIRS='
+ @cd ${NPAPI_WRKSRC} && ${FIND} -ds . -not -name . -type d | cut -f2- -d/ | ${TR} '\n' ' '
+ @${ECHO_CMD}
+
+npapi-plist: extract
+ @${FIND} -s ${NPAPI_WRKSRC} -not -type d | \
+ ${SED} -e "s,^${NPAPI_WRKSRC},%%NPAPI_NPAPIDIR%%," > ${PLIST}
+ @${FIND} -ds ${NPAPI_WRKSRC} -type d -not -name ${DISTNAME} | \
+ ${SED} -e "s,^${NPAPI_WRKSRC},@dirrm %%NPAPI_NPAPIDIR%%," >> ${PLIST}
+
+.endif