# ppc: firefox-esr/thunderbird xpcshell segfaults during startup compilation
# ppc: seamonkey/firefox - failure to link for atomic ops on 64 bits
# gcc does ICE on alpha at some particular spots:
# thunderbird-24.0/comm-esr24/mozilla/js/src/vm/Debugger.cpp:3246
# firefox-24.0/mozilla-release/js/src/frontend/BytecodeEmitter.cpp:1488
# seamonkey-2.22/comm-release/mozilla/js/src/vm/Interpreter.cpp:743
# firefox-25.0/mozilla-release/js/src/builtin/MapObject.cpp:1119
.if ${MACHINE_ARCH} == "i386"
MAKE_ENV += RUSTFLAGS="-C target-cpu=pentium4 --cfg target_feature=\"sse2\""
# reduce build memory usage:
CONFIGURE_ARGS += --disable-debug-symbols
DPB_PROPERTIES += lonesome
.else
DPB_PROPERTIES += parallel
.endif
.for _lib in ${MOZILLA_LIBS}
SHARED_LIBS += ${_lib} ${SO_VERSION}
.endfor
PKGNAME ?= ${MOZILLA_PROJECT}-${MOZILLA_VERSION:S/b/beta/}
MAINTAINER ?= Landry Breuil <landry@openbsd.org>
MOZILLA_DIST ?= ${MOZILLA_PROJECT}
MOZILLA_DIST_VERSION ?= ${MOZILLA_VERSION:C/rc.//}
MOZILLA_MAJOR_VERSION =${MOZILLA_VERSION:C/\..*//}
.if ${MOZILLA_VERSION:M*rc?}
SITES ?= https://ftp.mozilla.org/pub/${MOZILLA_DIST}/candidates/${MOZILLA_DIST_VERSION}-candidates/build${MOZILLA_VERSION:C/.*(.)/\1/}/source/
# first is the CDN and only has last releases
# ftp.m.o has all the betas/candidate builds but should only be used as fallback
.else
SITES ?= https://releases.mozilla.org/pub/${MOZILLA_DIST}/releases/${MOZILLA_DIST_VERSION}/source/ \
https://ftp.mozilla.org/pub/${MOZILLA_DIST}/releases/${MOZILLA_DIST_VERSION}/source/
.endif
.if defined(MOZILLA_COMMIT) && defined(MOZILLA_BRANCH)
DISTNAME = ${MOZILLA_DIST}-${MOZILLA_DIST_VERSION}
DISTFILES ?= ${MOZILLA_DIST}-${MOZILLA_DIST_VERSION}${EXTRACT_SUFX}{${MOZILLA_COMMIT}${EXTRACT_SUFX}}
WRKDIST = ${WRKDIR}/mozilla-${MOZILLA_BRANCH}-${MOZILLA_COMMIT}
SITES ?= https://hg.mozilla.org/releases/mozilla-${MOZILLA_BRANCH}/archive/
EXTRACT_SUFX = .tar.bz2
MODMOZILLA_pre-configure+= \
cp ${WRKSRC}/${CONFIGURE_SCRIPT}.in ${WRKSRC}/${CONFIGURE_SCRIPT}; \
cp ${WRKSRC}/js/src/${CONFIGURE_SCRIPT}.in ${WRKSRC}/js/src/${CONFIGURE_SCRIPT}; \
chmod +x ${WRKSRC}/${CONFIGURE_SCRIPT}
.endif
DISTNAME ?= ${MOZILLA_DIST}-${MOZILLA_DIST_VERSION}.source
EXTRACT_SUFX ?= .tar.xz
DIST_SUBDIR ?= mozilla
.if defined(MOZILLA_PROFDATA_TASKID)
.if ${MOZILLA_PROJECT:Mfirefox}
DISTFILES.profdata = ${DISTNAME}-profdata-repacked-16${EXTRACT_SUFX}
SITES.profdata = https://rhaalovely.net/stuff/
.else
DISTFILES.profdata = ${DISTNAME}-profdata${EXTRACT_SUFX}{profdata${EXTRACT_SUFX}}
SITES.profdata = https://firefox-ci-tc.services.mozilla.com/api/queue/v1/task/${MOZILLA_PROFDATA_TASKID}/runs/0/artifacts/public/build/
.endif
CONFIGURE_ARGS += --enable-profile-use
CONFIGURE_ARGS += --with-pgo-profile-path=${WRKDIR}/merged.profdata
.endif
MODMOZ_RUN_DEPENDS = devel/desktop-file-utils \
x11/gtk+4,-guic
MODMOZ_BUILD_DEPENDS = archivers/gtar \
archivers/unzip \
archivers/zip>=2.3
.if !defined(MOZILLA_USE_BUNDLED_NSS)
MODMOZ_LIB_DEPENDS += security/nss>=3.97
MODMOZ_WANTLIB += nss3 nssutil3 smime3 ssl3
CONFIGURE_ARGS += --with-system-nss
.endif
.if !defined(MOZILLA_USE_BUNDLED_NSPR)
MODMOZ_LIB_DEPENDS += devel/nspr>=4.35
MODMOZ_WANTLIB += nspr4 plc4 plds4
CONFIGURE_ARGS += --with-system-nspr
.endif
.if !defined(MOZILLA_USE_BUNDLED_ICU)
MODMOZ_LIB_DEPENDS += textproc/icu4c>=73.2p0
MODMOZ_WANTLIB += icudata icui18n icuuc
CONFIGURE_ARGS += --with-system-icu
.endif
.if !defined(MOZILLA_USE_DBUS)
CONFIGURE_ARGS += --disable-dbus
.else
# filepickers via portals need dbus
MODMOZ_LIB_DEPENDS += x11/dbus
MODMOZ_WANTLIB += dbus-1
CONFIGURE_ARGS += --enable-dbus
.endif
# bug #736961
SEPARATE_BUILD = Yes
.if ${MACHINE_ARCH:Mi386} || ${MACHINE_ARCH:Mamd64}
.if ${MOZILLA_PROJECT} == "seamonkey"
# needed for webm/jpeg/vpx ?
MODMOZ_BUILD_DEPENDS += devel/yasm
.endif
# needed for dav1d since 67
MODMOZ_BUILD_DEPENDS += devel/nasm
.endif
# 53 needs rust
MODULES += lang/rust
MODMOZ_WANTLIB += ${MODRUST_WANTLIB}
#1670807
MODMOZ_BUILD_DEPENDS += devel/m4
MODMOZ_WANTLIB += X11 X11-xcb Xcomposite Xcursor Xdamage Xext Xfixes Xi Xrender \
atk-1.0 c cairo fontconfig freetype gdk_pixbuf-2.0 \
gio-2.0 glib-2.0 gobject-2.0 harfbuzz intl m \
pango-1.0 pangocairo-1.0 sndio z xcb xcb-shm
MODMOZ_WANTLIB += ${COMPILER_LIBCXX}
WANTLIB += ${MODMOZ_WANTLIB}
BUILD_DEPENDS +=${MODMOZ_BUILD_DEPENDS}
LIB_DEPENDS += ${MODMOZ_LIB_DEPENDS}
RUN_DEPENDS += ${MODMOZ_RUN_DEPENDS}
USE_GMAKE ?= Yes
#1626955 & #510629
USE_NOBTCFI ?= Yes
# no --with-system-jpeg starting with fx 18, requires libjpeg-turbo because of bug 791305
# no --with-system-ffi, needs 3.0.10 when not using gcc
# no --with-system-cairo, removed in #1432751
# no --with-system-png, apng support not bundled in
# no --with-system-sqlite, option removed in #1611386 and we need to use bundled sqlite which has SQLITE_ENABLE_FTS3_TOKENIZER (#1252937)
# no --with-system-dav1d, cf #1493397 comment 12
# no --enable-system-hunspell, removed in #1460600
AUTOCONF_VERSION = 2.13
CONFIGURE_ARGS += --with-system-zlib \
--enable-official-branding \
--enable-optimize="${CFLAGS}" \
--disable-tests \
--disable-updater
# firefox >= 46 defaults to gtk+3
CONFIGURE_ARGS += --enable-default-toolkit=cairo-gtk3
MODMOZ_LIB_DEPENDS += x11/gtk+3
MODMOZ_WANTLIB += cairo-gobject gdk-3 gtk-3
PORTHOME = ${WRKSRC}
# from browser/config/mozconfig
.if ${MOZILLA_CODENAME:Mcomm*}
CONFIGURE_ARGS +=--enable-application=${MOZILLA_CODENAME}
.else
#1801738
CONFIGURE_ARGS +=--enable-project=${MOZILLA_CODENAME}
.endif
WRKDIST ?= ${WRKDIR}/${MOZILLA_DIST}-${MOZILLA_DIST_VERSION}
# needed for PLIST
MOZILLA_VER = ${MOZILLA_VERSION:C/b[0-9]*//:C/esr//:C/rc.$//}
SUBST_VARS += MOZILLA_PROJECT MOZILLA_VER MOZILLA_VERSION
MAKE_ENV += MOZILLA_OFFICIAL=1 \
MOZ_APP_REMOTINGNAME=${MOZILLA_PROJECT} \
SHELL=/bin/sh \
SO_VERSION="${SO_VERSION}" \
LLVM_CONFIG="${LOCALBASE}/bin/llvm-config-${MODCLANG_VERSION}"
CONFIGURE_ENV += ${MAKE_ENV}
# ensure libffi's configure doesnt pick gsed/gmkdir/gawk
CONFIGURE_ENV += ac_cv_path_ax_enable_builddir_sed=/usr/bin/sed
CONFIGURE_ENV += ac_cv_path_SED=/usr/bin/sed
CONFIGURE_ENV += ac_cv_path_mkdir=/bin/mkdir
CONFIGURE_ENV += ac_cv_prog_AWK=/usr/bin/awk
CONFIGURE_ENV += AWK=/usr/bin/awk
CONFIGURE_ENV += M4=/usr/local/bin/gm4