aboutsummaryrefslogtreecommitdiffstats
path: root/Mk
diff options
context:
space:
mode:
authormezz <mezz@FreeBSD.org>2008-07-01 04:16:22 +0800
committermezz <mezz@FreeBSD.org>2008-07-01 04:16:22 +0800
commitcf909ef83eed164015ef9278a24f876c924ccd78 (patch)
tree0cba28c5b3d447a875826c9b1cf3079c99ca697a /Mk
parent6f6bbb18550e5756c1d423c5bdb57f10a3d0f0a3 (diff)
downloadfreebsd-ports-gnome-cf909ef83eed164015ef9278a24f876c924ccd78.tar.gz
freebsd-ports-gnome-cf909ef83eed164015ef9278a24f876c924ccd78.tar.zst
freebsd-ports-gnome-cf909ef83eed164015ef9278a24f876c924ccd78.zip
First all, ahze did most of work. Thanks ahze! Last week or so, I am just
merely pick up and help him. Thanks to many testers in both private and mailing list emails for report a few of build and dependencies problems. Also, thanks to marcus and Chess Griffin for test in their tinderboxes. x11/pixman: Update to 0.10.0 ------------------------------------------------------- Firefox 3 needs it. Orignal, the shared library was bumped and ahze has added a new feature in our USE_GNOME=ltverhack by can control the number of shared library. To control the number of shared library, add the ltverhack:N. Right now pixman has USE_GNOME=ltverhack:9 to make it stays same at libpixman-1.so.9. If anyone want to use ltverhack:N in one of your port, you need to make sure the ABI doesn't change to use it.. ------------------------------------------------------- graphics/cairo: Update to 1.6.4 ------------------------------------------------------- Firefox 3 needs it. We have updated most cairo binding ports too. ------------------------------------------------------- graphics/poppler: Update to 0.8.3 ------------------------------------------------------- The shared libraries version have been changed. All ports that depend on poppler have PORTREVISION bump. The graphics/py-poppler has been updated to 0.8.1 to work with newer poppler better. As for the poppler-qt, there is no shared library version change. ------------------------------------------------------- www/firefox3 and gecko ports related: Update to 3.0 final ------------------------------------------------------- The bsd.gecko.mk has been moved from www/mozilla/ to Mk/. You no longer need to include bsd.gecko.mk/Makefile.common by manual. We are keeping it in backward compatibility, so the rest ports won't be break. We haven't add some other ports to have Firefox 3 support yet, so feel free to send us patch or commit it by yourself (to committers). However, view in bsd.gecko.mk for document. ------------------------------------------------------- Approved by: portmgr (marcus)
Diffstat (limited to 'Mk')
-rw-r--r--Mk/bsd.gecko.mk653
-rw-r--r--Mk/bsd.gnome.mk17
-rw-r--r--Mk/bsd.port.mk11
3 files changed, 675 insertions, 6 deletions
diff --git a/Mk/bsd.gecko.mk b/Mk/bsd.gecko.mk
new file mode 100644
index 000000000000..f9590eb51316
--- /dev/null
+++ b/Mk/bsd.gecko.mk
@@ -0,0 +1,653 @@
+#-*- 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.8 2008/06/20 22:17:41 mezz Exp $
+#
+# 4 column tabs prevent hair loss and tooth decay!
+
+# 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
+
+.if ${OSVERSION} >= 500000
+.if (${ARCH}!="sparc64" || ${OSVERSION} >= 601101) && ${ARCH}!="ia64"
+_GECKO_ALL= firefox nvu seamonkey thunderbird xulrunner flock firefox3
+.endif
+.endif
+_GECKO_ALL+= mozilla
+
+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
+BROWSER_LINUX_PLUGINS_DIR?= ${LOCALBASE}/lib/browser_linux_plugins
+BROWSER_PLUGINS_DIR?= ${LOCALBASE}/lib/browser_plugins
+
+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
+BROWSER_PLUGINS_DIR?= lib/browser_plugins
+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
+
+JPI_LIST?=\
+ ${LOCALBASE}/jdk1.5.0/jre/plugin/${ARCH}/ns7/libjavaplugin_oji.so \
+ ${LOCALBASE}/jdk1.4.2/jre/plugin/${ARCH}/ns610/libjavaplugin_oji.so
+
+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 \
+ --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' \
+ ${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
+ ${ECHO_CMD} "${BROWSER_PLUGINS_DIR}/.${MOZILLA}.keep" >> ${PLISTF}
+ ${ECHO_CMD} "@dirrmtry ${BROWSER_PLUGINS_DIR}" >> ${PLISTD}
+ ${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
+ ${MKDIR} ${PREFIX}/${BROWSER_PLUGINS_DIR}
+ ${TOUCH} -f ${PREFIX}/${BROWSER_PLUGINS_DIR}/.${MOZILLA}.keep
+.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
diff --git a/Mk/bsd.gnome.mk b/Mk/bsd.gnome.mk
index 20cb47a9ad13..57f5a3d49a10 100644
--- a/Mk/bsd.gnome.mk
+++ b/Mk/bsd.gnome.mk
@@ -3,7 +3,7 @@
#
# $FreeBSD$
# $NetBSD: $
-# $MCom: ports/Mk/bsd.gnome.mk,v 1.447 2008/03/12 03:42:31 marcus Exp $
+# $MCom: ports-stable/Mk/bsd.gnome.mk,v 1.8 2008/06/16 21:35:56 mezz Exp $
#
# Please view me with 4 column tabs!
@@ -645,7 +645,7 @@ ${component}_USE_GNOME_IMPL+=${${subcomponent}_USE_GNOME_IMPL}
# Also, check to see if each component has a desktop requirement. If it does,
# and if the user's chosen desktop is not of the same version, mark the
# port as IGNORE.
-. for component in ${USE_GNOME}
+. for component in ${USE_GNOME:C/^([^:]+).*/\1/}
. if defined(GNOME_DESKTOP_VERSION) && \
defined(${component}_GNOME_DESKTOP_VERSION)
. if ${GNOME_DESKTOP_VERSION}!=${${component}_GNOME_DESKTOP_VERSION}
@@ -677,16 +677,21 @@ lthacks_PRE_PATCH= ${CP} -pf ${LTMAIN} ${WRKDIR}/gnome-ltmain.sh && \
${PATCH_WRKSRC}/$$file; \
done;
.else
-. if ${USE_GNOME:Mltverhack}!="" || ${USE_GNOME:Mltasneededhack}!=""
+. if ${USE_GNOME:Mltverhack*}!="" || ${USE_GNOME:Mltasneededhack}!=""
IGNORE= cannot install: ${PORTNAME} uses the ltverhack and/or ltasneededhack GNOME components but does not use libtool
. endif
.endif
+.if ${USE_GNOME:Mltverhack\:*:C/^[^:]+:([^:]+).*/\1/}==""
+ltverhack_LIB_VERSION= major=.`expr $$current - $$age`
+.else
+ltverhack_LIB_VERSION= major=".${USE_GNOME:Mltverhack\:*:C/^[^:]+:([^:]+).*/\1/}"
+.endif
ltverhack_PATCH_DEPENDS=${LIBTOOL_DEPENDS}
ltverhack_PRE_PATCH= for file in gnome-ltmain.sh gnome-libtool; do \
if [ -f ${WRKDIR}/$$file ]; then \
${REINPLACE_CMD} -e \
- '/freebsd-elf)/,/;;/ s|major="\.$$current"|major=.`expr $$current - $$age`|; \
+ '/freebsd-elf)/,/;;/ s|major="\.$$current"|${ltverhack_LIB_VERSION}|; \
/freebsd-elf)/,/;;/ s|versuffix="\.$$current"|versuffix="$$major"|' \
${WRKDIR}/$$file; \
fi; \
@@ -703,9 +708,9 @@ ltasneededhack_PRE_PATCH= if [ -f ${WRKDIR}/gnome-libtool ]; then \
# Then traverse through all components, check which of them
# exist in ${_USE_GNOME} and set variables accordingly
.ifdef _USE_GNOME
-. if ${USE_GNOME:Mltverhack}!= "" || ${USE_GNOME:Mltasneededhack}!= ""
+. if ${USE_GNOME:Mltverhack*}!= "" || ${USE_GNOME:Mltasneededhack}!= ""
GNOME_PRE_PATCH+= ${lthacks_PRE_PATCH}
-.endif
+. endif
. for component in ${_USE_GNOME_ALL}
. if ${_USE_GNOME:M${component}}!=""
PATCH_DEPENDS+= ${${component}_PATCH_DEPENDS}
diff --git a/Mk/bsd.port.mk b/Mk/bsd.port.mk
index 9a88b2db1010..e36454bb6e24 100644
--- a/Mk/bsd.port.mk
+++ b/Mk/bsd.port.mk
@@ -444,6 +444,9 @@ FreeBSD_MAINTAINER= portmgr@FreeBSD.org
# (Also see that file for more information on
# USE_GNUSTEP_*).
##
+# USE_GECKO - If set, this port uses the Gecko/Mozilla product.
+# See bsd.gecko.mk for more details.
+##
# USE_GNOME - A list of the Gnome dependencies the port has (e.g.,
# glib12, gtk12). Implies that the port needs Gnome.
# Implies inclusion of bsd.gnome.mk. See bsd.gnome.mk
@@ -1497,6 +1500,10 @@ PERL= ${LOCALBASE}/bin/perl
.include "${PORTSDIR}/Mk/bsd.qt.mk"
.endif
+.if defined(WANT_GECKO) || defined(USE_GECKO)
+.include "${PORTSDIR}/Mk/bsd.gecko.mk"
+.endif
+
.if defined(WANT_GNOME) || defined(USE_GNOME) || defined(USE_GTK)
.include "${PORTSDIR}/Mk/bsd.gnome.mk"
.endif
@@ -2006,6 +2013,10 @@ PLIST_SUB+= PERL_VERSION=${PERL_VERSION} \
.include "${PORTSDIR}/Mk/bsd.autotools.mk"
.endif
+.if defined(WANT_GECKO) || defined(USE_GECKO)
+.include "${PORTSDIR}/Mk/bsd.gecko.mk"
+.endif
+
.if defined(WANT_GNOME) || defined(USE_GNOME) || defined(USE_GTK)
.include "${PORTSDIR}/Mk/bsd.gnome.mk"
.endif