aboutsummaryrefslogblamecommitdiff
path: root/Mk/Uses/webplugin.mk
blob: c34371ca947d25bce4ec5c4e0d50c2c7fba498a2 (plain) (tree)





















































                                                                                                                    





































                                                                                                                               







                                                                                                               

                               










                                                                             
                                              
                                                     
                         
                                 

                                                     
                                


                                                    
                                         




































                                                                                                                     




                                 
 
                                          

                                 
                                

                                                              

       
      
# 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

_USES_install+=	600:webplugin-post-install
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