aboutsummaryrefslogblamecommitdiff
path: root/www/linux-mplayer-plugin/Makefile.npapi
blob: 84730ebc91e328732892674c10893506677f9626 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

















                                                                                                

                                                                                             






                                                                                           



                                                                                               

                                                                                       









                                                                                                



                                                                              



                                                                                





                                                                            




                                                     
 

                                                                                 

                                                                 

                                                                                 
                                                                                         
                                                                                   



                                                                                                 









































                                                                         




                                                                       









                                                                                              

                                                                                                   
                                                              
                                                             
















                                                                                  

                             










                                                                         
                 
                                                      
                                                                   


                                                                                    














                                                                                        









                                                                                
                                                                                        

                                     
                                                                                                 


                       



                                                                                     
#-*- mode: makefile; tab-width: 4; -*
# ex:ts=4
#
# New ports collection makefile for:	npapi infrastructure
# Date created:		27 June 2006
# Whom:				Andrew Pantyukhin <infofarmer@FreeBSD.org>
#
# $FreeBSD$
#

# 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.
# PORTNAME, PORTVERSION, DISTVERSIONSUFFIX, CATEGORIES, MAINTAINER, COMMENT
#				- These should all be set manually for port to be functional.
#				  See ${PORTSDIR}/Mk/bsd.port.mk for details.
# 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.
#
# This Makefile is an alpha-version of the new npapi infrastructure.
#
# 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.

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.^.${X11BASE}/lib/.:S.$./plugins.:N*opera*} \
				${USE_NPAPI_EXP:S.^.${LOCALBASE}/share/.:S.$./plugins.:M*/opera*} \
				${USE_NPAPI_EXP:S.^.${X11BASE}/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} ${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}