diff options
Diffstat (limited to 'Mk/bsd.gecko.mk')
-rw-r--r-- | Mk/bsd.gecko.mk | 650 |
1 files changed, 650 insertions, 0 deletions
diff --git a/Mk/bsd.gecko.mk b/Mk/bsd.gecko.mk new file mode 100644 index 000000000..a44fa3d50 --- /dev/null +++ b/Mk/bsd.gecko.mk @@ -0,0 +1,650 @@ +#-*- mode: Fundamental; tab-width: 4; -*- +# ex:ts=4 +# +# Date created: 12 Nov 2005 +# Whom: Michael Johnson <ahze@FreeBSD.org> +# +# $FreeBSD$ +# $MCom: ports-stable/Mk/bsd.gecko.mk,v 1.12 2008/08/07 04:42:34 mezz Exp $ +# +# 4 column tabs prevent hair loss and tooth decay! + +# ======================= USERS ================================= +# To specify which gecko-based backend you prefer, use something like: +# +# WITH_GECKO= firefox +# +# The valid backends are: +# firefox flock nvu seamonkey thunderbird xulrunner +# +# See below for more details. +# ======================= /USERS ================================ + +# bsd.gecko.mk abstracts the selection of gecko-based backends. It allows users +# and porters to support any available gecko backend without needing to build +# many conditional tests. ${USE_GECKO} is the list of backends that your port +# can handle, and ${GECKO} is set by bsd.gecko.mk to be the chosen backend. +# Users set ${WITH_GECKO} to the list of gecko backends they want on their +# system. + +.if defined(USE_GECKO) && ${USE_GECKO}!="gecko" + +.if !defined(Gecko_Pre_Include) +# Please make sure all changes to this file are passed through the maintainer. +# Do not commit them yourself (unless of course you're the Port's Wraith ;). +Gecko_Include_MAINTAINER= gnome@FreeBSD.org +Gecko_Pre_Include= bsd.gecko.mk + +# Users should use the following syntax: +# +# WITH_GECKO= mozilla firefox seamonkey +# Use mozilla whenever a port supports it, falling back on firefox and +# then seamonkey. +# WITH_GECKO= firefox +# Sets your preferred backend. With this example, firefox will always +# be chosen, unless the port doesn't support a firefox backend. In that +# case, you get whatever the porter chose as the default. Better to use +# the first example. +# +# +# Ports should use the following: +# +# USE_GECKO= mozilla firefox seamonkey +# The list of gecko backends that the port supports. Unless the user +# overrides it with WITH_GECKO, the first gecko listed in USE_GECKO +# will be the default. In the above example, www/mozilla will be used +# as a gecko backend unless WITH_GECKO=firefox or WITH_GECKO=seamonkey +# is defined by the user. +# +# USE_GECKO= firefox-devel<->firefox +# This will sed -e 's/firefox/firefox-devel/' on Makefile.in's and configure +# if ${GECKO}=="firefox-devel" +# +# Example: +# USE_GECKO= mozilla firefox seamonkey +# +# post-patch: +# @${REINPALCE_CMD} -e 's|mozilla-|${GECKO}-|' \ +# ${WRKSRC}/configure +# +# If you want your port to check the ${GECKO} variable to see which backend +# has been chosen. +# +# Example: +# USE_GECKO= mozilla firefox seamonkey +# +# post-patch: +# .if ${GECKO}=="seamonkey" +# @${REINPLACE_CMD} -e 's|mozilla-|seamonkey-|' \ +# ${WRKSRC}/configure +# .endif + +_GECKO_ALL= firefox nvu seamonkey thunderbird xulrunner flock mozilla \ + libxul + +thunderbird_PORTSDIR= mail + +.for gecko in ${_GECKO_ALL} +${gecko}_PORTSDIR?= www +${gecko}_DEPENDS?= ${PORTSDIR}/${${gecko}_PORTSDIR}/${gecko} +${gecko}_PLIST?= ${LOCALBASE}/lib/${gecko}/libgtkembedmoz.so +.endfor + +# Figure out which mozilla to use +# Weed out bad options in USE_GECKO +.for badgecko in ${USE_GECKO} +. if ${_GECKO_ALL:M${badgecko:C/^([^<->]+).*/\1/}}!="" +GOOD_USE_GECKO+= ${badgecko:C/^([^<->]+).*/\1/} +. endif +. if ${_GECKO_ALL:M${badgecko:C/^[^<->]+<->([^<->]+).*/\1/}}!="${badgecko:C/^([^<->]+).*/\1/}" +${badgecko:C/^([^<->]+).*/\1/}_HACK= s:${badgecko:C/^[^<->]+<->([^<->]+).*/\1/}:${badgecko:C/^([^<->]+).*/\1/}:g +. endif +.endfor + +.undef GECKO_FALLTHROUGH +.undef _FOUND_WITH_GECKO +# Figure out which gecko to use and weed out the bad ones +.if defined(WITH_GECKO) && defined(GOOD_USE_GECKO) +. for badgecko in ${WITH_GECKO} +. if ${GOOD_USE_GECKO:M${badgecko}}!="" +GOOD_WITH_GECKO+= ${badgecko} +. endif +. endfor +. if defined(GOOD_WITH_GECKO) +. for gecko in ${GOOD_WITH_GECKO} +. if !defined(GECKO_FALLTHROUGH) +GECKO= ${gecko} +GECKO_FALLTHROUGH= ${TRUE} +_FOUND_WITH_GECKO= ${TRUE} +. endif +. endfor +. endif +.endif + +.if !defined(GECKO) && defined(GOOD_USE_GECKO) +. for gecko in ${GOOD_USE_GECKO} +. if !defined(GECKO_FALLTRHOUGH) +GECKO= ${gecko} +GECKO_FALLTRHOUGH= ${TRUE} +. endif +. endfor +.endif + +# Generic defines +GECKO_CONFIG?= ${LOCALBASE}/bin/${GECKO}-config +XPIDL?= ${LOCALBASE}/lib/${GECKO}/xpidl +XPIDL_INCL?= `${GECKO_CONFIG} --idlflags` + +.if defined(GECKO) && ${_GECKO_ALL:M${GECKO}}!="" +BUILD_DEPENDS+= ${${GECKO}_PLIST}:${${GECKO}_DEPENDS} +RUN_DEPENDS+= ${${GECKO}_PLIST}:${${GECKO}_DEPENDS} +.else +IGNORE= Unable to find a supported gecko, please check USE_GECKO +.endif + +pre-everything:: _gecko-pre-everything + +_gecko-pre-everything:: + @${ECHO_CMD} "" +.if !defined(_FOUND_WITH_GECKO) && defined(WITH_GECKO) + @${ECHO_CMD} " Warning: ${PORTNAME} does not support any gecko you" + @${ECHO_CMD} " listed in WITH_GECKO=${WITH_GECKO}." + @${ECHO_CMD} " \"${GECKO}\" will be used" + @${ECHO_CMD} "" + @${ECHO_CMD} " for gecko support, but you can change that by using one of" + @${ECHO_CMD} " the following values:" +.else + @${ECHO_CMD} " ${PORTNAME} is using ${GECKO} for gecko support, but you can" + @${ECHO_CMD} " change that by defining WITH_GECKO to the following values:" +.endif + @${ECHO_CMD} "" +.for gecko in ${GOOD_USE_GECKO} + @${ECHO_CMD} " ${gecko} " +.endfor + @${ECHO_CMD} "" + +post-patch: gecko-post-patch + +gecko-post-patch: +.if defined(${GECKO}_HACK) + ${FIND} ${WRKSRC} -name "Makefile.in" -type f -o -name "configure" -type f | \ + ${XARGS} ${REINPLACE_CMD} -e ${${GECKO}_HACK} +.endif +.endif + +.else # split + +.if !defined(_POSTMKINCLUDED) && !defined(Gecko_Pre_Include) +Gecko_Pre_Include= bsd.gecko.mk + +# This file contains some reusable components for mozilla ports. It's of +# use primarily to apps from the mozilla project itself (such as Firefox, +# Thunderbird, etc.), and probably won't be of use for gecko-based ports +# like epiphany, galeon, etc. +# +# You need to make sure to add USE_GECKO=gecko to for your port can uses +# one of these options below. +# +# Ports can use the following: +# +# USE_MOZILLA By default, it enables the denendencies: cairo, dbm, +# jpeg, nspr, nss, png, xft and zip. Search for +# '_ALL_DEPENDS' below to see the list. If your port +# doesn't need one of list then you can use '-' like +# 'USE_MOZILLA= -png -zip' to subtract the dependencies. +# +# GECKO_PLIST_PRE_FILES Manual add files in the plist if it needs. +# +# GECKO_PLIST_PRE_DIRS Manual directories in the plist if it needs. +# +# MOZILLA_PLIST_DIRS List of directories to descend into when installing +# and creating the plist +# +# MOZ_PIS_SCRIPTS List of scripts residing in ${FILESDIR} to be +# filtered through MOZCONFIG_SED and installed along +# with our Pluggable Init Scripts (PIS) +# +# MOZ_SED_ARGS sed(1) commands through which MOZ_PIS_SCRIPTS are +# filtered. There is a default set defined here, so +# you probably want to add to MOZ_SED_ARGS rather +# than clobber it +# +# MOZ_OPTIONS configure arguments (added to .mozconfig). If +# NOMOZCONFIG is defined, you probably want to set +# CONFIGURE_ARGS+=${MOZ_OPTIONS} +# +# MOZ_MK_OPTIONS The make(1) arguments (added to .mozconfig). If +# NOMOZCONFIG is defined, you probably want to set +# MAKE_ARGS+=${MOZ_MK_OPTIONS} +# +# MOZ_EXPORT Environment variables for the build process (added +# to .mozconfig). If NOMOZCONFIG is defined, you +# probably want to set MAKE_ENV+=${MOZ_EXPORT} +# +# MOZ_TOOLKIT A variable for the --enable-default-toolkit= in +# CONFIGURE_ARGS. The default is gtk2. +# +# MOZ_EXTENSIONS A list of extensions to build +# +# MOZ_GRAPHICS A list of image decoders to build +# +# MOZ_PROTOCOLS A list of protocols to build (http, ftp, etc.) +# +# PORT_MOZCONFIG Defaults to ${FILESDIR}/mozconfig.in, but can be +# set to a generic mozconfig included with the port +# +# NOGECKO_INSTALL Don't install the built gecko (most likely for +# testing) +# +# NOGECKO_PLIST Don't create a dynamically-generated playlist +# +# NOMOZCONFIG Don't drop a customized .mozconfig into the build +# directory. Options will have to be specified in +# CONFIGURE_ARGS instead +# + +MAINTAINER?= gnome@FreeBSD.org + +MOZILLA?= ${PORTNAME} +MOZILLA_VER?= ${PORTVERSION} +MOZILLA_BIN?= ${PORTNAME}-bin +MOZ_RPATH?= ${MOZILLA} +USE_GNOME+= gtk20 libidl desktopfileutils +USE_ICONV= yes +USE_PERL5_BUILD=yes +USE_XORG= printproto sm xt xi xext x11 xinerama \ + ice xproto + +MOZILLA_SUFX?= none +WRKSRC?= ${WRKDIR}/mozilla +FAKEDIR?= ${WRKDIR}/fake +PLIST?= ${WRKDIR}/plist +PLISTD?= ${WRKDIR}/plist_dirs +PLISTF?= ${WRKDIR}/plist_files +MASTER_DIR?= ${.CURDIR}/../../www/mozilla + +KRB5_HOME?= /usr +MOZ_PIS_DIR?= lib/${MOZILLA}/init.d + +ESD_LIB?= libesd.so.2 +FREETYPE_LIB?= libfreetype.so.9 + +GENERIC_MOZCONFIG?= ${.CURDIR}/../../www/mozilla/files/mozconfig-generic.in +PORT_MOZCONFIG?= ${FILESDIR}/mozconfig.in +MOZCONFIG?= ${WRKSRC}/.mozconfig +MOZILLA_PLIST_DIRS?= bin include lib share/idl +GECKO_PTHREAD_LIBS!=${CC} -dumpspecs | ${GREP} -m 1 pthread | ${SED} -e 's|^.*%{\!pg: %{pthread:|| ; s|}.*$$||' || ${TRUE} +PKGINSTALL?= ${WRKDIR}/pkg-install +PKGDEINSTALL?= ${WRKDIR}/pkg-deinstall +MASTER_MOZDIR?= ${PORTSDIR}/www/mozilla +PKGINSTALL_INC?= ${MASTER_MOZDIR}/pkg-install.in +PKGDEINSTALL_INC?= ${MASTER_MOZDIR}/pkg-deinstall.in + +EXTRACT_AFTER_ARGS?= | ${TAR} -xf - --exclude */CVS/* \ + --exclude */macbuild/* \ + --exclude */package/* \ + --exclude mozilla/gc/boehm + +MOZ_PKGCONFIG_FILES?= ${MOZILLA}-gtkmozembed ${MOZILLA}-js \ + ${MOZILLA}-xpcom ${MOZILLA}-plugin + +CFLAGS+= ${PTHREAD_CFLAGS} +LIBS+= ${PTHREAD_LIBS} -L${LOCALBASE}/lib -liconv + +_USE_GECKO_OPTIONS_ALL= java debug logging optimized_cflags + +.if !defined(USE_GECKO_OPTIONS) +USE_GECKO_OPTIONS= debug logging optimized_cflags +.endif + +debug_OPTION= "Build a debugging image" off +java_OPTION= "Enable JAVA xpcom" off +logging_OPTION= "Enable additional log messages" off +optimized_cflags_OPTION= "Enable some additional optimizations" off + +.for option in ${USE_GECKO_OPTIONS:L} +.if ${_USE_GECKO_OPTIONS_ALL:M${option}}!="" +OPTIONS+= ${option:U} ${${option}_OPTION} +_${option}= ${TRUE} +.endif +.endfor + +# Standard depends +_ALL_DEPENDS= cairo dbm jpeg nspr nss png xft zip + +cairo_LIB_DEPENDS= cairo.2:${PORTSDIR}/graphics/cairo +cairo_MOZ_OPTIONS= --enable-system-cairo +cairo_EXTRACT_AFTER_ARGS= --exclude mozilla/gfx/cairo + +dbm_EXTRACT_AFTER_ARGS= --exclude mozilla/dbm + +jpeg_LIB_DEPENDS= jpeg.9:${PORTSDIR}/graphics/jpeg +jpeg_MOZ_OPTIONS= --with-system-jpeg=${LOCALBASE} +jpeg_EXTRACT_AFTER_ARGS= --exclude mozilla/jpeg + +nspr_LIB_DEPENDS= nspr4:${PORTSDIR}/devel/nspr +nspr_MOZ_OPTIONS= --with-system-nspr + +nss_LIB_DEPENDS= nss3:${PORTSDIR}/security/nss +nss_EXTRACT_AFTER_ARGS= --exclude mozilla/security/nss +nss_MOZ_OPTIONS= --with-system-nss +nss_CPPFLAGS+= -I${LOCALBASE}/include/nss -I${LOCALBASE}/include/nss/nss +nss_LDFLAGS+= -L${LOCALBASE}/lib/nss -Wl,-rpath,${PREFIX}/lib/${MOZ_RPATH} + + +png_LIB_DEPENDS= png.5:${PORTSDIR}/graphics/png +png_MOZ_OPTIONS= --with-system-png=${LOCALBASE} + +xft_LIB_DEPENDS= Xft.2:${PORTSDIR}/x11-fonts/libXft +zip_DEPENDS= zip:${PORTSDIR}/archivers/zip + +.for use in ${USE_MOZILLA} +${use:S/-/_WITHOUT_/}= ${TRUE} +.endfor + +.for dep in ${_ALL_DEPENDS} +.if !defined(_WITHOUT_${dep}) +BUILD_DEPENDS+= ${${dep}_DEPENDS} +LIB_DEPENDS+= ${${dep}_LIB_DEPENDS} +RUN_DEPENDS+= ${${dep}_DEPENDS} +MOZ_OPTIONS+= ${${dep}_MOZ_OPTIONS} +EXTRACT_AFTER_ARGS+= ${${dep}_EXTRACT_AFTER_ARGS} +CPPFLAGS+= ${${dep}_CPPFLAGS} +LDFLAGS+= ${${dep}_LDFLAGS} +.endif +.endfor + +# Standard options from README +MOZ_TOOLKIT?= gtk2 +MOZ_OPTIONS+= --enable-crypto \ + --disable-tests \ + --enable-default-toolkit=${MOZ_TOOLKIT} \ + --enable-xft \ + --with-pthreads +# Configure options for install +MOZ_OPTIONS+= --x-includes=${LOCALBASE}/include \ + --x-libraries=${LOCALBASE}/lib +.if !defined(MOZ_EXTENSIONS) +MOZ_OPTIONS+= --enable-extensions=default +.else +MOZ_OPTIONS+= --enable-extensions=${MOZ_EXTENSIONS} +.endif +.if !defined(MOZ_GRAPHICS) +MOZ_OPTIONS+= --enable-image-decoders=default +.else +MOZ_OPTIONS+= --enable-image-decoders=${MOZ_GRAPHICS} +.endif +.if !defined(MOZ_PROTOCOLS) +MOZ_OPTIONS+= --enable-necko-protocols=default +.else +MOZ_OPTIONS+= --enable-necko-protocols=${MOZ_PROTOCOLS} +.endif +# others +MOZ_OPTIONS+= --with-system-zlib=/usr \ + --with-gssapi=${KRB5_HOME} \ + --disable-auto-deps \ + --enable-chrome-format=jar \ + --disable-cpp-exceptions \ + --disable-cpp-rtti \ + --disable-glibtest \ + --disable-gtktest \ + --disable-freetypetest \ + --enable-double-buffer \ + --enable-mathml \ + --disable-installer \ + --disable-md \ + --disable-pedantic \ + --disable-bidi \ + --disable-xterm-updates \ + --disable-xprint \ + --enable-xinerama +MOZ_MK_OPTIONS+= XP_UNIX=1 \ + PERL=${PERL} + +.if defined(WITH_OPTIMIZED_CFLAGS) +CFLAGS:= ${CFLAGS} -O2 -fno-strict-aliasing ${EXTRA_CFLAGS} +WITH_OPTIMIZE?= -O2 +.else +CFLAGS:= ${CFLAGS} ${EXTRA_CFLAGS} +WITH_OPTIMIZE?= +.endif + +.if defined(WITH_SMB) +USE_GNOME+= gnomevfs2 +MOZ_OPTIONS+= --enable-gnomevfs +.else +MOZ_OPTIONS+= --disable-gnomevfs +.endif + +.if defined(WITH_DEBUG) +MOZ_OPTIONS+= --enable-debug \ + --disable-strip +WITH_LOGGING= yes +.else +MOZ_OPTIONS+= --disable-debug \ + --enable-optimize=${WITH_OPTIMIZE} \ + --enable-strip +.endif + +.if defined(WITH_JAVA) && defined(_WITH_JAVA) +USE_JAVA= yes +JAVA_VERSION+= 1.4+ +JAVA_OS+= native +CONFIGURE_ENV+= JAVA_HOME="${JAVA_HOME}" +MOZ_OPTIONS+= --enable-javaxpcom +.endif + +.if defined(WITH_LOGGING) +MOZ_OPTIONS+= --enable-logging +.else +MOZ_OPTIONS+= --disable-logging +.endif + +MOZ_SED_ARGS+= -e's|@CPPFLAGS@|${CPPFLAGS}|g' \ + -e 's|@CFLAGS@|${CFLAGS}|g' \ + -e 's|@LDFLAGS@|${LDFLAGS}|g' \ + -e 's|@LIBS@|${LIBS}|g' \ + -e 's|@LOCALBASE@|${LOCALBASE}|g' \ + -e 's|@FAKEDIR@|${FAKEDIR}|g' \ + -e 's|@PERL@|${PERL5}|g' \ + -e 's|@KRB5_HOME@|${KRB5_HOME}|g' \ + -e 's|@MOZDIR@|${PREFIX}/lib/${MOZILLA}|g' \ + -e 's|%%PREFIX%%|${PREFIX}|g' \ + -e 's|%%CFLAGS%%|${CFLAGS}|g' \ + -e 's|%%LDFLAGS%%|${LDFLAGS}|g' \ + -e 's|%%LIBS%%|${LIBS}|g' \ + -e 's|%%LOCALBASE%%|${LOCALBASE}|g' \ + -e 's|%%FAKEDIR%%|${FAKEDIR}|g' \ + -e 's|%%PERL%%|${PERL5}|g' \ + -e 's|%%KRB5_HOME%%|${KRB5_HOME}|g' \ + -e 's|%%MOZILLA%%|${MOZILLA}|g' \ + -e 's|%%MOZILLA_BIN%%|${MOZILLA_BIN}|g' \ + -e 's|%%MOZDIR%%|${PREFIX}/lib/${MOZILLA}|g' +MOZCONFIG_SED?= ${SED} ${MOZ_SED_ARGS} + +.else # bsd.port.post.mk + +post-patch: gecko-post-patch gecko-moz-pis-patch + +gecko-post-patch: +.if exists(${PKGINSTALL_INC}) + @${MOZCONFIG_SED} < ${PKGINSTALL_INC} > ${PKGINSTALL} +.endif +.if exists(${PKGDEINSTALL_INC}) + @${MOZCONFIG_SED} < ${PKGDEINSTALL_INC} > ${PKGDEINSTALL} +.endif + @${RM} -f ${MOZCONFIG} +.if !defined(NOMOZCONFIG) +.if exists(${GENERIC_MOZCONFIG}) + @${MOZCONFIG_SED} < ${GENERIC_MOZCONFIG} >> ${MOZCONFIG} +.endif + @if [ -e ${PORT_MOZCONFIG} ] ; then \ + ${MOZCONFIG_SED} < ${PORT_MOZCONFIG} >> ${MOZCONFIG} ; \ + fi +.for arg in ${MOZ_OPTIONS} + @${ECHO_CMD} ac_add_options ${arg} >> ${MOZCONFIG} +.endfor +.for arg in ${MOZ_MK_OPTIONS} + @${ECHO_CMD} mk_add_options ${arg} >> ${MOZCONFIG} +.endfor +.for var in ${MOZ_EXPORT} + @${ECHO_CMD} "export ${var}" >> ${MOZCONFIG} +.endfor +.endif # .if !defined(NOMOZCONFIG) + @${REINPLACE_CMD} -e 's/%{idldir}/%idldir%/g ; \ + s|"%FULL_NSPR_CFLAGS%"|`nspr-config --cflags`|g ; \ + s|"%FULL_NSPR_LIBS%"|`nspr-config --libs`|g' \ + ${WRKSRC}/build/unix/mozilla-config.in + @${REINPLACE_CMD} -e 's|<iconv.h>|\"${LOCALBASE}/include/iconv.h\"|g' \ + ${WRKSRC}/configure \ + ${WRKSRC}/intl/uconv/native/nsNativeUConvService.cpp \ + ${WRKSRC}/xpcom/io/nsNativeCharsetUtils.cpp + @${REINPLACE_CMD} -e 's|%%MOZILLA%%|${MOZILLA}|g' \ + ${WRKSRC}/config/autoconf.mk.in + @${REINPLACE_CMD} -e 's|-pthread|${PTHREAD_LIBS}|g ; \ + s|echo aout|echo elf|g ; s|/usr/X11R6|${LOCALBASE}|g' \ + ${WRKSRC}/security/coreconf/FreeBSD.mk \ + ${WRKSRC}/js/src/Makefile.in + @if [ -d ${WRKSRC}/directory/c-sdk ]; then \ + ${REINPLACE_CMD} -e 's|echo aout|echo elf|g' \ + ${WRKSRC}/directory/c-sdk/config/FreeBSD.mk \ + ${WRKSRC}/directory/c-sdk/configure ; \ + fi + @${REINPLACE_CMD} -e 's|-lc_r|${PTHREAD_LIBS}|g ; \ + s|-lpthread|${PTHREAD_LIBS}|g ; \ + s|echo aout|echo elf|g ; \ + s|/usr/X11R6|${LOCALBASE}|g' \ + ${WRKSRC}/configure + @${REINPLACE_CMD} -e 's|%%PREFIX%%|${PREFIX}|g ; \ + s|%%LOCALBASE%%|${LOCALBASE}|g' \ + ${WRKSRC}/build/unix/run-mozilla.sh + @${REINPLACE_CMD} -E -e 's|libesd\.so\.[0-9]+|libesd.so|g' \ + ${WRKSRC}/widget/src/gtk2/nsSound.cpp + @${REINPLACE_CMD} -E -e 's|libcups\.so\.[0-9]+|libcups.so|g' \ + ${WRKSRC}/*/*/*/nsDeviceContextSpecG.cpp + @${REINPLACE_CMD} -e 's|/usr/local/netscape|${LOCALBASE}|g ; \ + s|/usr/local/lib/netscape|${LOCALBASE}/lib|g' \ + ${WRKSRC}/xpcom/*/SpecialSystemDirectory.cpp + @if [ -n "`${PKG_INFO} -xI '^bind[0-9]*-base-[0-9]'`" ]; then \ + ${ECHO_CMD} "${PKGNAME}: bind installed with PORT_REPLACES_BASE_BIND causes build problems."; \ + ${FALSE}; \ + fi + +# handles mozilla pis scripts. +gecko-moz-pis-patch: +.for moz in ${MOZ_PIS_SCRIPTS} + @${MOZCONFIG_SED} < ${FILESDIR}/${moz} > ${WRKDIR}/${moz} +.endfor + +post-configure: gecko-post-configure + +gecko-post-configure: + @${ECHO_CMD} "#define JNIIMPORT" >> ${WRKSRC}/mozilla-config.h + +post-build: gecko-post-build + +gecko-post-build: + @${REINPLACE_CMD} -e "s|\(Libs:.*\)\($$\)|\1 -Wl,-rpath,${PREFIX}/lib/${MOZ_RPATH}\2|" \ + ${WRKSRC}/build/unix/*.pc || ${TRUE} + +pre-install: gecko-moz-pis-pre-install gecko-pre-install port-pre-install gecko-create-plist + +.if !target(port-pre-install) +port-pre-install: + @${DO_NADA} +.endif + +gecko-pre-install: +.if !defined(NOGECKO_PLIST) + @${RM} -rf ${FAKEDIR} ${PLIST} ${PLISTD} ${PLISTF} + @${TOUCH} -f ${PLIST} ${PLISTD} ${PLISTF} + @cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} ${GMAKE} ${MAKE_FLAGS} \ + ${MAKEFILE} ${MAKE_ARGS} prefix=${FAKEDIR} ${INSTALL_TARGET} +.if defined(MOZILLA_SUFX) && ${MOZILLA_SUFX}!="none" + ${MV} ${FAKEDIR}/bin/${MOZILLA:S/${MOZILLA_SUFX}//} ${FAKEDIR}/bin/${MOZILLA} +.if exists(${FAKEDIR}/bin/${MOZILLA:S/${MOZILLA_SUFX}//}-config) + ${MV} ${FAKEDIR}/bin/${MOZILLA:S/${MOZILLA_SUFX}//}-config ${FAKEDIR}/bin/${MOZILLA}-config +.endif +.for pc in ${MOZ_PKGCONFIG_FILES:S|${MOZILLA_SUFX}||} + ${SED} -e 's|Requires: ${MOZILLA:S/${MOZILLA_SUFX}//}|Requires: ${MOZILLA}|' \ + ${FAKEDIR}/lib/pkgconfig/${pc}.pc > ${FAKEDIR}/lib/pkgconfig/${pc:S/${MOZILLA:S,${MOZILLA_SUFX},,}/${MOZILLA}/}.pc +.endfor + @${REINPLACE_CMD} -e 's|${MOZILLA}-bin|${MOZILLA:S/${MOZILLA_SUFX}//}|; \ + s|$${progbase}-bin|${MOZILLA:S/${MOZILLA_SUFX}//}-bin|' \ + ${FAKEDIR}/bin/${MOZILLA}* +.endif + @${REINPLACE_CMD} -e 's|${FAKEDIR}|${PREFIX}|g' \ + ${FAKEDIR}/bin/${MOZILLA}* + ${RM} -f ${FAKEDIR}/bin/*.bak +.endif + +gecko-create-plist: +.if !defined(NOGECKO_PLIST) +# Create the plist +.for f in ${GECKO_PLIST_PRE_FILES} + ${ECHO_CMD} ${f} >> ${PLISTF} +.endfor +.for f in ${GECKO_PLIST_PRE_DIRS} + ${ECHO_CMD} "@dirrm ${f}" >> ${PLISTD} +.endfor + ${MKDIR} ${FAKEDIR}/libdata + ${MV} -f ${FAKEDIR}/lib/pkgconfig ${FAKEDIR}/libdata/ || ${TRUE} + ${RM} -f ${FAKEDIR}/lib/pkgconfig +.for dir in ${MOZILLA_PLIST_DIRS} + @cd ${FAKEDIR}/${dir} && ${FIND} -H -s * -type f | \ + ${SED} -e 's|^|${dir}/|' >> ${PLISTF} && \ + ${FIND} -d * -type d | \ + ${SED} -e 's|^|@dirrm ${dir}/|' >> ${PLISTD} +.endfor +.for pcfile in ${MOZ_PKGCONFIG_FILES} + ${ECHO_CMD} "libdata/pkgconfig/${pcfile}.pc" >> ${PLISTF} + @${REINPLACE_CMD} -e 's|${FAKEDIR}|${PREFIX}|g' \ + -e 's|${MOZILLA}-nspr = ${PORTVERSION}|nspr|' \ + ${FAKEDIR}/libdata/pkgconfig/${pcfile}.pc +.endfor + ${CAT} ${PLISTF} | ${SORT} >> ${PLIST} + ${CAT} ${PLISTD} | ${SORT} -r >> ${PLIST} + ${ECHO_CMD} "@dirrmtry share/idl" >> ${PLIST} + ${ECHO_CMD} "@exec ${LOCALBASE}/bin/update-desktop-database > /dev/null || ${TRUE}" >> ${PLIST} + ${ECHO_CMD} "@unexec ${LOCALBASE}/bin/update-desktop-database > /dev/null || ${TRUE}" >> ${PLIST} +.endif # !defined(NOGECKO_PLIST) + +do-install: gecko-do-install + +gecko-do-install: +.if !defined(NOGECKO_INSTALL) +.for dir in ${MOZILLA_PLIST_DIRS} +.if !exists(${PREFIX}/${dir}) + ${MKDIR} ${PREFIX}/${dir} + ${CHMOD} 755 ${PREFIX}/${dir} +.endif + cd ${FAKEDIR}/${dir} && ${FIND} . | \ + ${CPIO} -pdm -L -R ${LIBOWN}:${LIBGRP} ${PREFIX}/${dir} +.endfor +.for pcfile in ${MOZ_PKGCONFIG_FILES} + ${INSTALL_DATA} ${FAKEDIR}/libdata/pkgconfig/${pcfile}.pc \ + ${PREFIX}/libdata/pkgconfig/${pcfile}.pc +.endfor +.endif # !defined(NOGECKO_INSTALL) + +gecko-moz-pis-pre-install: +.if defined(MOZ_PIS_SCRIPTS) + ${MKDIR} ${FAKEDIR}/${MOZ_PIS_DIR} +.for moz in ${MOZ_PIS_SCRIPTS} + ${INSTALL_SCRIPT} ${WRKDIR}/${moz} ${FAKEDIR}/${MOZ_PIS_DIR} +.endfor +.endif + +post-install: gecko-post-install + +gecko-post-install: +.if !defined(PACKAGE_BUILDING) && !defined(NO_MOZPKGINSTALL) + @if [ -e ${PKGINSTALL} ] ; then \ + ${SETENV} PKG_PREFIX=${PREFIX} ${SH} ${PKGINSTALL} ${PKGNAME} POST-INSTALL; \ + fi +.endif + @-update-desktop-database + +.endif +.endif +# HERE THERE BE TACOS -- adamw |