1PORTNAME= emacs 2DISTVERSION= 30.2 3PORTREVISION= 5 4PORTEPOCH= 3 5CATEGORIES= editors 6MASTER_SITES= GNU 7 8.if ${FLAVOR:U} == canna 9PATCH_SITES+= https://www.gentei.org/~yuuji/software/emacs30canna/:canna 10PATCHFILES+= emacs30.1-canna-20250224.diff.gz:-p1:canna 11.endif 12 13MAINTAINER= ports@MidnightBSD.org 14COMMENT= GNU editing macros ${COMMENT_${FLAVOR}} 15WWW= https://www.gnu.org/software/emacs/ 16COMMENT_nox= (No X flavor) 17COMMENT_canna= (Canna Japanese input flavor) 18COMMENT_wayland= (Wayland flavor) 19 20LICENSE= gpl3+ 21LICENSE_FILE= ${WRKSRC}/COPYING 22 23LIB_DEPENDS= libgmp.so:math/gmp 24 25FLAVORS= full canna nox wayland 26canna_PKGNAMESUFFIX= -canna 27canna_LIB_DEPENDS= libcanna.so:japanese/canna-lib 28canna_CONFLICTS_INSTALL= emacs emacs-nox emacs-wayland 29canna_DESCR= ${.CURDIR}/pkg-descr-canna 30full_CONFLICTS_INSTALL= emacs-canna emacs-nox emacs-wayland 31nox_PKGNAMESUFFIX= -nox 32nox_CONFLICTS_INSTALL= emacs emacs-canna emacs-wayland 33wayland_PKGNAMESUFFIX= -wayland 34wayland_CONFLICTS_INSTALL= emacs emacs-canna emacs-nox 35 36USES= cpe gmake localbase:ldflags ncurses pkgconfig tar:xz 37CPE_VENDOR= gnu 38 39GNU_CONFIGURE= yes 40CONFIGURE_TARGET= ${ARCH}-portbld-freebsd12.4 41CONFIGURE_ARGS= --disable-build-details \ 42 --localstatedir=/var \ 43 --without-gconf \ 44 --without-libsystemd \ 45 --without-selinux 46.if ${FLAVOR:U} == canna 47CONFIGURE_ARGS+= --with-canna 48.elif ${FLAVOR:U} == nox 49CONFIGURE_ARGS+= --with-sound=no \ 50 --with-x-toolkit=no \ 51 --without-cairo \ 52 --without-dbus \ 53 --without-gconf \ 54 --without-gif \ 55 --without-gsettings \ 56 --without-imagemagick \ 57 --without-jpeg \ 58 --without-lcms2 \ 59 --without-libotf \ 60 --without-m17n-flt \ 61 --without-pgtk \ 62 --without-png \ 63 --without-rsvg \ 64 --without-tiff \ 65 --without-toolkit-scroll-bars \ 66 --without-webp \ 67 --without-x \ 68 --without-xim \ 69 --without-xpm \ 70 --without-xwidgets 71.elif ${FLAVOR:U} == wayland 72CONFIGURE_ARGS+= --without-x 73.else 74CONFIGURE_ARGS+= --with-x 75.endif 76# See r468320 to determine if/when the next line can be removed 77CONFIGURE_ENV= ac_cv_header_sys_sysinfo_h=no 78 79CONFLICTS_INSTALL= emacs-devel emacs-devel-nox 80 81BINARY_ALIAS= makeinfo=true 82SUB_FILES= pkg-message sources.el 83SUB_LIST= EMACS_VER=${DISTVERSION} \ 84 NATIVECOMP_COMMENT_END=${NATIVECOMP_COMMENT_END} \ 85 NATIVECOMP_COMMENT_START=${NATIVECOMP_COMMENT_START} 86 87INFO= auth autotype bovine calc ccmode cl dbus dired-x ebrowse ede \ 88 ediff edt efaq eglot eieio eintr elisp emacs emacs-gnutls \ 89 emacs-mime epa erc ert eshell eudc eww flymake forms gnus \ 90 htmlfontify idlwave ido info mairix-el message mh-e \ 91 modus-themes newsticker nxml-mode octave-mode org pcl-cvs pgg \ 92 rcirc reftex remember sasl sc semantic ses sieve smtpmail \ 93 speedbar srecode todo-mode tramp transient url use-package \ 94 vhdl-mode vip viper vtable widget wisent woman 95INFO_PATH= ${DATADIR_REL}/info 96.if ${FLAVOR:U} == canna 97PLIST_FILES+= ${DATADIR}/${DISTVERSION}/lisp/canna.el.gz \ 98 ${DATADIR}/${DISTVERSION}/lisp/canna.elc \ 99 ${DATADIR}/${DISTVERSION}/lisp/isearch-ext.el.gz \ 100 ${DATADIR}/${DISTVERSION}/lisp/isearch-ext.elc 101.endif 102PLIST_SUB= EMACS_VER=${DISTVERSION} \ 103 GNU_HOST=${CONFIGURE_TARGET} 104 105OPTIONS_DEFINE= ACL DBUS GNUTLS GSETTINGS HARFBUZZ LCMS2 M17N \ 106 MAILUTILS MODULES NATIVECOMP OTF PGTK \ 107 SCROLLBARS SOURCES SQLITE3 THREADS TREESITTER \ 108 XFT XIM XML XWIDGETS 109OPTIONS_DEFAULT= ACL CAIRO DBUS GIF GNUTLS GSETTINGS GTK3 \ 110 HARFBUZZ JPEG KQUEUE LCMS2 MAILUTILS MODULES \ 111 OSS PNG SCROLLBARS SOURCES SQLITE3 SVG THREADS \ 112 TIFF TREESITTER WEBP XIM XML XPM 113.if ${FLAVOR:U} != nox 114OPTIONS_DEFAULT+= NATIVECOMP 115.endif 116OPTIONS_GROUP= GRAPHICS 117OPTIONS_GROUP_GRAPHICS= CAIRO GIF JPEG MAGICK PNG SVG TIFF WEBP XPM 118OPTIONS_RADIO= FILENOTIFY SOUND X11TOOLKIT 119OPTIONS_RADIO_FILENOTIFY= GFILE KQUEUE 120OPTIONS_RADIO_SOUND= ALSA OSS 121OPTIONS_RADIO_X11TOOLKIT= GTK2 GTK3 MOTIF XAW XAW3D 122.if ${FLAVOR:U} == wayland 123OPTIONS_EXCLUDE+= GTK2 MOTIF XAW XAW3D XIM ${PGTK_PREVENTS} \ 124 ${PGTK_IMPLIES:@i@${${i}_PREVENTS}@} 125OPTIONS_SLAVE+= PGTK ${PGTK_IMPLIES} \ 126 ${PGTK_IMPLIES:@i@${${i}_IMPLIES}@} 127.elif ${FLAVOR:U} == nox 128OPTIONS_EXCLUDE+= ALSA CAIRO DBUS GFILE GIF GSETTINGS GTK2 GTK3 \ 129 HARFBUZZ JPEG LCMS2 M17N MAGICK MOTIF OSS OTF \ 130 PGTK PNG SCROLLBARS SVG TIFF WEBP XAW XAW3D XFT \ 131 XIM XPM XWIDGETS 132.endif 133OPTIONS_EXCLUDE_armv7= NATIVECOMP 134OPTIONS_EXCLUDE_powerpc64= NATIVECOMP 135OPTIONS_SUB= YES 136 137ACL_DESC= Access control list support 138CAIRO_DESC= Cairo graphics library support [implies PNG, prevents XFT] 139FILENOTIFY_DESC= File notification support 140GFILE_DESC= File notification via gfile 141GRAPHICS_DESC= Graphics support 142GSETTINGS_DESC= GSettings API for application settings 143HARFBUZZ_DESC= HarfBuzz for text shaping 144KQUEUE_DESC= File notification via kqueue 145M17N_DESC= M17N support for text-shaping [implies XFT] 146MAGICK_DESC= ImageMagick image processing support (deprecated) 147MAILUTILS_DESC= Mail framework via GNU Mailutils 148MODULES_DESC= Dynamic modules support 149NATIVECOMP_DESC= Emacs Lisp native compiler support 150OTF_DESC= Opentype fonts 151PGTK_DESC= Pure GTK GUI [implies CAIRO, GTK3] 152SCROLLBARS_DESC= Toolkit scroll-bars 153SOURCES_DESC= Install sources 154SVG_DESC= Scalable vector graphics support [implies PNG] 155TREESITTER_DESC= tree-sitter support 156X11TOOLKIT_DESC= X11 toolkit 157XAW3D_DESC= Athena3D widgets 158XAW_DESC= Athena widgets 159XIM_DESC= X Input Method 160XWIDGETS_DESC= Experimental GTK widgets [implies GTK3] 161 162ACL_CONFIGURE_ENABLE= acl 163ALSA_LIB_DEPENDS= libasound.so:audio/alsa-lib 164ALSA_CONFIGURE_ON= --with-sound=alsa 165CAIRO_IMPLIES= PNG 166CAIRO_PREVENTS= XFT 167CAIRO_LIB_DEPENDS= libfontconfig.so:x11-fonts/fontconfig \ 168 libfreetype.so:print/freetype2 169CAIRO_USE= GNOME=cairo 170CAIRO_CONFIGURE_WITH= cairo 171DBUS_LIB_DEPENDS= libdbus-1.so:devel/dbus 172DBUS_CONFIGURE_WITH= dbus 173GFILE_USE= GNOME=glib20 174GFILE_CONFIGURE_ON= --with-file-notification=gfile 175GIF_LIB_DEPENDS= libgif.so:graphics/giflib 176GIF_CONFIGURE_WITH= gif 177GNUTLS_LIB_DEPENDS= libgnutls.so:security/gnutls 178GNUTLS_CONFIGURE_WITH= gnutls 179GSETTINGS_USE= GNOME=glib20 180GSETTINGS_CONFIGURE_WITH= gsettings 181GTK2_LIB_DEPENDS= libfontconfig.so:x11-fonts/fontconfig \ 182 libfreetype.so:print/freetype2 183GTK2_USE= GNOME=cairo,gtk20 184GTK2_CONFIGURE_ON= --with-x-toolkit=gtk2 185GTK3_LIB_DEPENDS= libfontconfig.so:x11-fonts/fontconfig \ 186 libfreetype.so:print/freetype2 187GTK3_USE= GNOME=cairo,gtk30 188GTK3_CONFIGURE_ON= --with-x-toolkit=gtk3 189HARFBUZZ_LIB_DEPENDS= libharfbuzz.so:print/harfbuzz 190HARFBUZZ_CONFIGURE_WITH= harfbuzz 191JPEG_USES= jpeg 192JPEG_CONFIGURE_WITH= jpeg 193KQUEUE_CONFIGURE_ON= --with-file-notification=kqueue 194LCMS2_LIB_DEPENDS= liblcms2.so:graphics/lcms2 195LCMS2_CONFIGURE_WITH= lcms2 196#LTO_CONFIGURE_ON= --enable-link-time-optimization 197M17N_IMPLIES= XFT 198M17N_LIB_DEPENDS= libm17n.so:devel/m17n-lib 199M17N_CONFIGURE_WITH= m17n-flt 200MAGICK_USES= magick:7 201MAGICK_CONFIGURE_WITH= imagemagick 202MAILUTILS_RUN_DEPENDS= mailutils:mail/mailutils 203MAILUTILS_CONFIGURE_WITH= mailutils 204MAILUTILS_CONFIGURE_ENV_OFF= ac_cv_lib_lockfile_maillock=no \ 205 ac_cv_prog_liblockfile=no 206MODULES_CONFIGURE_WITH= modules 207MOTIF_USES= motif 208MOTIF_CONFIGURE_ON= --with-x-toolkit=motif 209NATIVECOMP_USE= GCC=13 210NATIVECOMP_CONFIGURE_WITH= native-compilation=aot 211OSS_CONFIGURE_ON= --with-sound=oss 212OTF_LIB_DEPENDS= libotf.so:print/libotf 213OTF_CONFIGURE_WITH= libotf 214PGTK_IMPLIES= CAIRO GTK3 SCROLLBARS 215PGTK_PREVENTS= M17N XFT XPM 216PGTK_CATEGORIES= wayland 217PGTK_CONFIGURE_WITH= pgtk 218PNG_LIB_DEPENDS= libpng16.so:graphics/png 219PNG_CONFIGURE_WITH= png 220SCROLLBARS_CONFIGURE_WITH= toolkit-scroll-bars 221.if ${FLAVOR:U} == canna 222SOURCES_PLIST_FILES= ${DATADIR}/${DISTVERSION}/src/canna.c 223.endif 224SQLITE3_USES= sqlite:3 225SQLITE3_CONFIGURE_WITH= sqlite3 226SVG_IMPLIES= PNG 227SVG_USE= GNOME=cairo,librsvg2 228SVG_CONFIGURE_WITH= rsvg 229THREADS_CONFIGURE_WITH= threads 230TIFF_LIB_DEPENDS= libtiff.so:graphics/tiff 231TIFF_CONFIGURE_WITH= tiff 232TREESITTER_IMPLIES= MODULES 233TREESITTER_LIB_DEPENDS= libtree-sitter.so:devel/tree-sitter 234TREESITTER_CONFIGURE_WITH= tree-sitter 235WEBP_LIB_DEPENDS= libwebpdemux.so:graphics/webp 236WEBP_CONFIGURE_WITH= webp 237XAW3D_LIB_DEPENDS= libXaw3d.so:x11-toolkits/libXaw3d 238XAW3D_CONFIGURE_ON= --with-x-toolkit=athena 239XAW_USE= XORG=xaw 240XAW_CONFIGURE_ON= --with-x-toolkit=athena \ 241 --without-xaw3d 242XFT_LIB_DEPENDS= libfontconfig.so:x11-fonts/fontconfig \ 243 libfreetype.so:print/freetype2 244XFT_USE= XORG=xft,xrender 245XFT_CONFIGURE_WITH= xft 246XIM_CONFIGURE_WITH= xim 247# keep XML_USES=gnome, because nox flavor does not have USES=gnome 248XML_USES= gnome 249XML_USE= GNOME=libxml2 250XML_CONFIGURE_WITH= xml2 251XPM_USE= XORG=xpm 252XPM_CONFIGURE_WITH= xpm 253XWIDGETS_IMPLIES= GTK3 254XWIDGETS_LIB_DEPENDS= libsoup-2.4.so:devel/libsoup \ 255 libwebkit2gtk-4.0.so:www/webkit2-gtk@40 256XWIDGETS_USE= XORG=xcomposite 257XWIDGETS_CONFIGURE_WITH= xwidgets 258 259.include <bsd.mport.options.mk> 260 261.if ${PORT_OPTIONS:MNATIVECOMP} 262NATIVECOMP_COMMENT_END= 263NATIVECOMP_COMMENT_START= 264.else 265NATIVECOMP_COMMENT_END= '*/' 266NATIVECOMP_COMMENT_START= '/*' 267.endif 268 269.if ${FLAVOR:U} != nox 270USES+= desktop-file-utils gnome 271.if !${PORT_OPTIONS:MPGTK} 272USES+= xorg 273USE_XORG+= ice sm x11 xcb xcomposite xext xfixes xi xinerama xmu xrandr \ 274 xrender xt 275.endif 276.endif 277 278.if !${PORT_OPTIONS:MGTK2} && !${PORT_OPTIONS:MGTK3} && !${PORT_OPTIONS:MMOTIF} && \ 279 !${PORT_OPTIONS:MXAW} && !${PORT_OPTIONS:MXAW3D} 280CONFIGURE_ARGS+= --with-x-toolkit=no 281.endif 282 283# Schema generation is dependent on both PGTK, and GSETTINGS options 284# as per https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=183936ee8e5 285.if ${PORT_OPTIONS:MGSETTINGS} && ${PORT_OPTIONS:MPGTK} 286GLIB_SCHEMAS+= org.gnu.emacs.defaults.gschema.xml 287.endif 288 289.if ${FLAVOR} == nox 290# With a desktop entry stage-qa will give a warning about requiring 291# desktop-file-utils and portlint -C will give a warning about INSTALLS_ICONS, 292# but don't pull in those dependencies with the nox flavor. 293post-patch: 294 @${REINPLACE_CMD} -e 's/^Terminal=.*$$/Terminal=true/' ${WRKSRC}/etc/emacs.desktop 295.endif 296 297post-install: 298 @${RM} -r ${PREFIX}/lib/systemd 299 @(cd ${PREFIX} && ${FIND} libexec/emacs/${DISTVERSION}/${CONFIGURE_TARGET}/ -name emacs-*.pdmp >> ${TMPPLIST}) 300 ${RM} ${FAKE_DESTDIR}${TRUE_PREFIX}/share/emacs/info/dir 301 302post-install-MAILUTILS-on: 303 cd ${FAKE_DESTDIR}${TRUE_PREFIX} && ${LN} -sf bin/movemail \ 304 libexec/emacs/${DISTVERSION}/${CONFIGURE_TARGET} 305 306# Natively compiled elisp files names include build checksum information, so add 307# these files to the plist after the build. 308post-install-NATIVECOMP-on: 309 @(cd ${WRKSRC} && ${FIND} native-lisp -type f | ${SED} -e 's,^,lib/emacs/${DISTVERSION}/,') >> ${TMPPLIST} 310# @${FIND} ${FAKE_DESTDIR}${PREFIX}/lib/emacs/${DISTVERSION:R}/native-lisp/ -name '*.eln*' -exec ${STRIP_CMD} {} + 311 312post-install-SOURCES-on: 313 @${MKDIR} ${FAKE_DESTDIR}${DATADIR}/${DISTVERSION}/src 314 ${INSTALL_DATA} ${WRKSRC}/src/*.[ch] ${FAKE_DESTDIR}${DATADIR}/${DISTVERSION}/src 315 ${INSTALL_DATA} ${WRKDIR}/sources.el ${FAKE_DESTDIR}${DATADIR}/${DISTVERSION}/site-lisp/site-start.el 316 317.include <bsd.port.mk> 318