openbsd-ports/www/iridium/Makefile

286 lines
8.7 KiB
Makefile

BROKEN-powerpc64 = Check failed: false. OS architecture not handled. (powerpc64)
BROKEN-riscv64 = Unknown current CPU: riscv64
USE_WXNEEDED= Yes
DPB_PROPERTIES= parallel parallel2
.if ${MACHINE_ARCH} == "i386"
DPB_PROPERTIES+= lonesome
.endif
COMMENT= Iridium browser
V= 2022.10.106.1
DISTNAME= iridium-browser-${V}
PKGNAME= iridium-${V}
DISTFILES= ${DISTNAME}${EXTRACT_SUFX}
PATCHFILES= disable-privacy-sandbox.patch:0
PATCH_DIST_STRIP= -p1
CATEGORIES= www
HOMEPAGE= https://iridiumbrowser.de/
MAINTAINER= Robert Nagy <robert@openbsd.org>
EXTRACT_SUFX= .tar.xz
FLAVORS= component
PSEUDO_FLAVORS= debug lto
FLAVOR?=
# BSD-like
PERMIT_PACKAGE = Yes
MASTER_SITES= https://downloads.iridiumbrowser.de/source/ \
http://nerd.hu/distfiles/
MASTER_SITES0= https://raw.githubusercontent.com/ungoogled-software/ungoogled-chromium/master/patches/core/ungoogled-chromium/
MODULES= lang/python
COMPILER = base-clang ports-clang ports-gcc
MODPY_RUNDEP= No
MODPY_SETUPTOOLS= Yes
PATCHORIG= .orig.port
# uses pledge()
WANTLIB+= GL X11 Xau Xcomposite Xdamage Xdmcp Xext Xfixes Xft Xi Xrandr
WANTLIB+= Xrender Xtst atk-1.0 atk-bridge-2.0 atspi c c++ c++abi cairo
WANTLIB+= cbor crypto cups dbus-1 drm event execinfo expat ffi fido2
WANTLIB+= fontconfig freetype fribidi gbm gio-2.0 glib-2.0 gmodule-2.0
WANTLIB+= gobject-2.0 graphite2 gthread-2.0 harfbuzz harfbuzz-gobject
WANTLIB+= harfbuzz-subset iconv icudata icui18n icuuc intl jpeg kvm lzo2 m
WANTLIB+= nspr4 nss3 nssutil3 openh264 pango-1.0 pangocairo-1.0
WANTLIB+= pangoft2-1.0 pcre pixman-1 plc4 plds4 png pthread pthread smime3
WANTLIB+= snappy sndio usbhid util xcb xcb-render xcb-shm xkbcommon xml2
WANTLIB+= xshmfence xslt z
RUN_DEPENDS= devel/xdg-utils \
devel/desktop-file-utils \
fonts/noto/fonts \
graphics/libexif \
x11/gtk+3,-main \
x11/gtk+3,-guic \
x11/gtk+3,-cups
BUILD_DEPENDS= archivers/bzip2 \
devel/gperf \
devel/bison \
lang/node \
shells/bash \
sysutils/flock \
sysutils/pciutils \
devel/ninja \
x11/py-xcbgen${MODPY_FLAVOR} \
${MODGCC4_CPPDEP} \
${RUN_DEPENDS}
LIB_DEPENDS= archivers/snappy \
devel/pango \
graphics/jpeg \
multimedia/openh264 \
security/nss \
textproc/icu4c \
textproc/libxslt \
x11/gnome/at-spi2-atk \
x11/xkbcommon \
print/cups,-libs \
${MODGCC4_CPPLIBDEP}
.include <bsd.own.mk>
# Set BUILDTYPE to Release
BUILDTYPE= Release
SUBST_VARS+= WRKSRC WRKDIR DEBUGFLAG
ALL_TARGET= chrome
TEST_TARGET= base_unittests
DIST_TARGET_DIR= iridium
CONFIGURE_STYLE=none # prevent python MODULE from overriding do-build
BUILDDIR= ${WRKSRC}/out/${BUILDTYPE}
# These libraries are used from the system and the build infrastructure
# removes them from the bundled third_party directory and replaces them
# with hooks to use them from the system.
GN_SYSTEM_LIBS= icu \
libevent \
libjpeg \
libpng \
libxml \
libxslt \
openh264 \
snappy
GN_ARGS= enable_nacl=false \
is_official_build=true \
is_debug=false \
is_cfi=false \
optimize_webui=true \
enable_js_type_check=false \
enable_remoting=false \
enable_hangout_services_extension=true \
use_bundled_fontconfig=false \
use_kerberos=false \
use_sndio=true \
use_cups=true \
use_system_libdrm=true \
use_system_libjpeg=true \
use_system_harfbuzz=true \
use_system_freetype=false \
use_gnome_keyring=false \
icu_use_data_file=false \
is_clang=true \
use_sysroot=false \
treat_warnings_as_errors=false \
clang_use_chrome_plugins=false \
use_allocator=\"none\" \
use_allocator_shim=false \
disable_fieldtrial_testing_config=true \
extra_cppflags=\"-idirafter ${LOCALBASE}/include -idirafter ${X11BASE}/include\" \
fatal_linker_warnings=false \
use_custom_libcxx=false \
chrome_pgo_phase=0 \
use_udev=false
# notyet
GN_ARGS+= use_vaapi=false
.if ${MACHINE_ARCH} == "i386"
GN_ARGS+= extra_ldflags=\"-L${LOCALBASE}/lib -L${X11BASE}/lib -Wl,--no-keep-memory\"
.else
GN_ARGS+= extra_ldflags=\"-L${LOCALBASE}/lib -L${X11BASE}/lib\"
.endif
.if ${MACHINE_ARCH} == "aarch64"
PKG_ARGS+= -Dswiftshader=0
.else
PKG_ARGS+= -Dswiftshader=1
.endif
# Note: these keys are for OpenBSD use ONLY. For your own distribution,
# please get your own set of keys. It's free!
GN_ARGS+= google_api_key=\"AIzaSyA015yecfJyWi8UQpneQVrNzIKlxjv4MhI\" \
ffmpeg_branding=\"Chrome\" \
proprietary_codecs=true
# These are now restricted to use by Google, so bye-bye sync.
#GN_ARGS+= google_default_client_id=\"451220141585.apps.googleusercontent.com\"
#GN_ARGS+= google_default_client_secret=\"nQcDyaBvDyCeDrsRqKIWSHJn\"
# XXX dwz doesn't work with iridium yet
DWZ = :
.if ${FLAVOR:Mdebug}
GN_ARGS+= symbol_level=1
DEBUG_PACKAGES= ${BUILD_PACKAGES}
.else
GN_ARGS+= symbol_level=0
.endif
.if ${FLAVOR:Mcomponent}
GN_ARGS+= is_component_build=true
.else
GN_ARGS+= is_component_build=false
.endif
.if ${FLAVOR:Mlto}
GN_ARGS+= extra_cflags=\"-fno-ret-protector -mno-retpoline\" \
extra_cxxflags=\"-fno-ret-protector -mno-retpoline\" \
use_thin_lto=true \
thin_lto_enable_optimizations=true
.else
GN_ARGS+= use_thin_lto=false \
thin_lto_enable_optimizations=true
.endif
pre-configure:
@ln -sf ${MODPY_BIN} ${WRKDIR}/bin/python
.for _arch in x64 ia32 arm64
. for _dir in avcodec avformat avutil
@cp -pR ${WRKSRC}/third_party/ffmpeg/chromium/config/Chrome/linux/${_arch}/lib${_dir} \
${WRKSRC}/third_party/ffmpeg/chromium/config/Chrome/openbsd/${_arch}/lib${_dir}
. endfor
.endfor
@mkdir -p ${WRKSRC}/third_party/node/openbsd/node-openbsd/bin
@ln -sf ${TRUEPREFIX}/bin/node ${WRKSRC}/third_party/node/openbsd/node-openbsd/bin/node
${SUBST_CMD} ${WRKSRC}/build/gn_run_binary.py ${WRKSRC}/v8/tools/run.py \
${WRKSRC}/tools/protoc_wrapper/protoc_wrapper.py \
${WRKSRC}/third_party/blink/renderer/build/scripts/run_with_pythonpath.py
# Configuration consists of three steps:
# 1. replace the specified bundled libraries with hooks to use the system libs
# 2. bootstrap gn, the tool to generate ninja files
# 3. run gn with the appropriate configuration arguments
do-configure:
@cd ${WRKSRC} && env -i ${MAKE_ENV} build/linux/unbundle/replace_gn_files.py \
--system-libraries ${GN_SYSTEM_LIBS}
@cd ${WRKSRC}/tools/gn && env -i ${MAKE_ENV} LDFLAGS=-L${LOCALBASE}/lib ${MODPY_BIN} bootstrap/bootstrap.py \
--no-clean -s --gn-gen-args "${GN_ARGS}"
@cd ${WRKSRC} && env -i ${CONFIGURE_ENV} ${WRKSRC}/out/Release/gn \
gen --args="${GN_ARGS}" out/${BUILDTYPE}
do-build:
@cd ${WRKSRC} && env -i ${MAKE_ENV} ninja \
-j ${MAKE_JOBS} -C out/${BUILDTYPE} ${ALL_TARGET}
do-install:
${INSTALL_DATA_DIR} ${PREFIX}/${DIST_TARGET_DIR}
${INSTALL_PROGRAM} ${BUILDDIR}/chrome ${PREFIX}/${DIST_TARGET_DIR}/${DIST_TARGET_DIR}
${SUBST_PROGRAM} ${FILESDIR}/${DIST_TARGET_DIR} ${PREFIX}/bin/${DIST_TARGET_DIR}
${INSTALL_MAN} ${WRKSRC}/chrome/app/resources/manpage.1.in ${PREFIX}/man/man1/iridium.1
@perl -pi -e "s,\@\@PACKAGE\@\@,chromium,g;s,\@\@MENUNAME\@\@,Iridium Web Browser,g" \
${PREFIX}/man/man1/iridium.1
${INSTALL_DATA} ${BUILDDIR}/*.pak ${PREFIX}/${DIST_TARGET_DIR}
${INSTALL_DATA_DIR} ${PREFIX}/${DIST_TARGET_DIR}/locales
${INSTALL_DATA} ${BUILDDIR}/locales/* ${PREFIX}/${DIST_TARGET_DIR}/locales
${INSTALL_DATA} ${BUILDDIR}/*.png ${PREFIX}/${DIST_TARGET_DIR}
${INSTALL_DATA_DIR} ${PREFIX}/${DIST_TARGET_DIR}/resources
@cp -Rp ${BUILDDIR}/resources/* ${PREFIX}/${DIST_TARGET_DIR}/resources
@chown -R ${SHAREOWN}:${SHAREGRP} ${PREFIX}/${DIST_TARGET_DIR}/resources
.for f in snapshot_blob.bin v8_context_snapshot.bin
${INSTALL_DATA} ${BUILDDIR}/${f} ${PREFIX}/${DIST_TARGET_DIR}
.endfor
# ANGLE, EGL, Vk
.for f in libEGL libGLESv2
${INSTALL_DATA} ${BUILDDIR}/${f}.so ${PREFIX}/${DIST_TARGET_DIR}
.endfor
.for f in libVkICD_mock_icd
${INSTALL_DATA} ${BUILDDIR}/${f}.so ${PREFIX}/${DIST_TARGET_DIR}
.endfor
${INSTALL_DATA} ${BUILDDIR}/libvulkan.so.1 \
${PREFIX}/${DIST_TARGET_DIR}/libvulkan.so
.if ${MACHINE_ARCH} != "aarch64"
# SwiftShader
${INSTALL_DATA} ${BUILDDIR}/libvk_swiftshader.so ${PREFIX}/${DIST_TARGET_DIR}
.endif
.if ${FLAVOR:Mcomponent}
cp -Rp ${BUILDDIR}/*.so ${BUILDDIR}/*.so.[0-9] ${PREFIX}/${DIST_TARGET_DIR}/
.endif
.for s in 22_mono 24 48 64 128 256
${INSTALL_DATA_DIR} ${PREFIX}/share/icons/hicolor/${s}x${s}/apps
${INSTALL_DATA} ${WRKSRC}/chrome/app/theme/chromium/product_logo_${s}.png \
${PREFIX}/share/icons/hicolor/${s}x${s}/apps/iridium.png
.endfor
${INSTALL_DATA_DIR} ${PREFIX}/share/applications
${INSTALL_DATA} ${FILESDIR}/iridium-browser.desktop \
${PREFIX}/share/applications/iridium-browser.desktop
${INSTALL_DATA_DIR} ${PREFIX}/share/examples/iridium
.for f in pledge.main pledge.utility_audio pledge.utility_network pledge.utility_video \
unveil.gpu unveil.main unveil.plugin unveil.renderer unveil.utility unveil.utility_audio \
unveil.utility_network unveil.utility_video
${INSTALL_DATA} ${FILESDIR}/${f} ${PREFIX}/share/examples/iridium
.endfor
.include <bsd.port.mk>