summaryrefslogtreecommitdiffstats
path: root/Mk/bsd.gecko.mk
diff options
context:
space:
mode:
Diffstat (limited to 'Mk/bsd.gecko.mk')
-rw-r--r--Mk/bsd.gecko.mk650
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