summaryrefslogtreecommitdiffstats
path: root/patches/source/emacs/emacs.SlackBuild
diff options
context:
space:
mode:
Diffstat (limited to 'patches/source/emacs/emacs.SlackBuild')
-rwxr-xr-xpatches/source/emacs/emacs.SlackBuild128
1 files changed, 58 insertions, 70 deletions
diff --git a/patches/source/emacs/emacs.SlackBuild b/patches/source/emacs/emacs.SlackBuild
index cfd09e29e..4a8ef5bf2 100755
--- a/patches/source/emacs/emacs.SlackBuild
+++ b/patches/source/emacs/emacs.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/bash
-# Copyright 2008, 2009, 2010, 2011, 2012, 2014, 2015, 2017, 2018, 2019, 2020, 2021, 2024 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010, 2011, 2012, 2014, 2015, 2017, 2018, 2019, 2020, 2021, 2023, 2024 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -26,10 +26,11 @@
cd $(dirname $0) ; CWD=$(pwd)
-PKGNAM=emacs
-BUILD=${BUILD:-1_slack15.0}
+PKGNAM=${PKGNAM:-emacs}
+SRCNAM=emacs
+BUILD=${BUILD:-2_slack15.0}
# Determine version number the tarball is labeled with:
-TARBALLVER=${TARBALLVER:-$(echo $PKGNAM-*.tar.xz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+TARBALLVER=${TARBALLVER:-$(echo $SRCNAM-*.tar.xz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
# OK, now what's being used as the source directory version number... account
# for subversions a, b, c, and d in the $TARBALLVER:
SRCDIRVER=$(echo $TARBALLVER | tr -d a | tr -d b | tr -d c | tr -d d)
@@ -37,11 +38,40 @@ SRCDIRVER=$(echo $TARBALLVER | tr -d a | tr -d b | tr -d c | tr -d d)
# defining it is traditional:
VERSION=$SRCDIRVER
+# Build Emacs with native compilation. This has better performance, but the
+# installed package is larger. Pass NATIVECOMP=NO to do a normal build.
+NATIVECOMP=${NATIVECOMP:-NO}
+
+# Do we want X support? (causes Emacs to be linked with many X11 libraries):
+WITHX=${WITHX:-YES}
+
+# Pass this variable set to "--with-pgtk" to use GTK+3 without linking to X11
+# libraries. This might be suitable if you're going to run under Wayland.
+PGTK_OPTION=${PGTK_OPTION:-}
+
+# Set the X related options. The default X_TOOLKIT will be GTK+3, but you may
+# set the X_TOOLKIT variable to any of these: gtk, gtk2, gtk3, lucid, athena, motif.
+if [ "$WITHX" = "YES" ]; then
+ if [ "$PGTK_OPTION" = "--with-pgtk" ]; then
+ X_TOOLKIT=gtk3
+ fi
+ X_OPTIONS="--with-x --with-x-toolkit=${X_TOOLKIT:-gtk3}"
+else
+ X_OPTIONS="--with-x=no"
+fi
+
+# Set the proper options for native compilation or not:
+if [ "$NATIVECOMP" = "YES" ]; then
+ PDUMPER=${PDUMPER:-"--with-dumping=pdumper --with-native-compilation"}
+else
+ PDUMPER=${PDUMPER:-"--with-pdumper=auto --without-native-compilation"}
+fi
+
# Automatically determine the architecture we're building on:
if [ -z "$ARCH" ]; then
case "$(uname -m)" in
i?86) ARCH=i586 ;;
- arm*) readelf /usr/bin/file -A | egrep -q "Tag_CPU.*[4,5]" && ARCH=arm || ARCH=armv7hl ;;
+ arm*) readelf /usr/bin/file -A | grep -E -q "Tag_CPU.*[4,5]" && ARCH=arm || ARCH=armv7hl ;;
# Unless $ARCH is already set, use uname -m for all other archs:
*) ARCH=$(uname -m) ;;
esac
@@ -70,9 +100,6 @@ else
SLKCFLAGS="-O2"
fi
-# Without this, the emacs-no-x11 binary won't work with the installed files:
-PDUMPER=${PDUMPER:-"--with-pdumper=no --with-dumping=unexec"}
-
# Don't use icecream:
PATH=$(echo $PATH | sed "s|/usr/libexec/icecc/bin||g" | tr -s : | sed "s/^://g" | sed "s/:$//g")
@@ -84,9 +111,9 @@ PKG=$TMP/package-$PKGNAM
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
-rm -rf $PKGNAM-$TARBALLVER
-tar xvf $CWD/$PKGNAM-$TARBALLVER.tar.xz || exit 1
-cd $PKGNAM-$SRCDIRVER || exit 1
+rm -rf $SRCNAM-$TARBALLVER
+tar xvf $CWD/$SRCNAM-$TARBALLVER.tar.xz || exit 1
+cd $SRCNAM-$SRCDIRVER || exit 1
chown -R root:root .
find . \
@@ -99,8 +126,6 @@ find . \
# memory given the amount available on modern systems:
sed -i "s/#define SYSTEM_PURESIZE_EXTRA 0/#define SYSTEM_PURESIZE_EXTRA 100000/g" src/puresize.h
-#autoreconf -vif
-
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
@@ -114,66 +139,18 @@ CXXFLAGS="$SLKCFLAGS" \
--without-gconf \
--without-gsettings \
--with-modules \
- --with-x \
- --with-x-toolkit=${X_TOOLKIT:-gtk3} \
+ $X_OPTIONS \
+ $PGTK_OPTION \
$PDUMPER \
--build=${ARCH}-slackware-linux || exit 1
-make $NUMJOBS || make || exit 1
+if [ "$NATIVECOMP" = "YES" ]; then
+ make NATIVE_FULL_AOT=1 bootstrap $NUMJOBS || make NATIVE_FULL_AOT=1 || exit 1
+else
+ make $NUMJOBS || make || exit 1
+fi
make install DESTDIR=$PKG || exit 1
-( cd $PKG/usr/bin
- rm emacs
- mv emacs-${SRCDIRVER} emacs-${TARBALLVER}-with-x11
-)
-
-# Also add a version of the binary that is not linked to X11:
-cd $TMP
-rm -rf $PKGNAM-$TARBALLVER
-tar xvf $CWD/$PKGNAM-$TARBALLVER.tar.xz || exit 1
-cd $PKGNAM-$SRCDIRVER || exit 1
-
-zcat $CWD/d48bb4874bc6cd3e69c7a15fc3c91cc141025c51.patch.gz | patch -p1 --verbose || exit 1
-
-chown -R root:root .
-find . \
- \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \+ -o \
- \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \+
-
-CFLAGS="$SLKCFLAGS" \
-CXXFLAGS="$SLKCFLAGS" \
-./configure \
- --prefix=/usr \
- --sysconfdir=/etc \
- --localstatedir=/var \
- --program-prefix="" \
- --program-suffix="" \
- --mandir=/usr/man \
- --infodir=/usr/info \
- --without-gconf \
- --without-gsettings \
- --with-modules \
- --with-x=no \
- $PDUMPER \
- --build=${ARCH}-slackware-linux || exit 1
-
-make $NUMJOBS || make || exit 1
-
-# Install the non-x version:
-cat src/emacs > $PKG/usr/bin/emacs-${TARBALLVER}-no-x11
-chown root:root $PKG/usr/bin/emacs-${TARBALLVER}-no-x11
-chmod 1755 $PKG/usr/bin/emacs-${TARBALLVER}-no-x11
-
-# Create unversioned symlinks for both versions of emacs:
-( cd $PKG/usr/bin
- ln -sf emacs-${TARBALLVER}-with-x11 emacs-with-x11
- ln -sf emacs-${TARBALLVER}-no-x11 emacs-no-x11
- # Create a plain "emacs" symlink pointing to emacs-with-x11:
- ln -sf emacs-with-x11 emacs
-)
-
# Seems like this nonsense is finally obsolete:
if [ -d $PKG/var/games/emacs ]; then
# I don't care for broken permissions.
@@ -205,9 +182,16 @@ find $PKG | xargs file | grep -e "executable" -e "shared object" \
mkdir -p $PKG/usr/doc/$PKGNAM-$TARBALLVER
cp -a \
- AUTHORS COPYING* INSTALL README* \
+ AUTHORS* COPYING* INSTALL* README* \
$PKG/usr/doc/$PKGNAM-$TARBALLVER
+# Link the latest NEWS file:
+( cd $PKG/usr/doc/$PKGNAM-$TARBALLVER
+ if [ -r $PKG/usr/share/emacs/$SRCDIRVER/etc/NEWS ]; then
+ ln -sf /usr/share/emacs/$SRCDIRVER/etc/NEWS .
+ fi
+)
+
# If there's a ChangeLog, installing at least part of the recent history
# is useful, but don't let it get totally out of control:
if [ -r ChangeLog ]; then
@@ -222,7 +206,11 @@ zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
# Tag packages that use a toolkit other than default (currently gtk3):
if [ -z "$TAG" ] && [ ! -z "$X_TOOLKIT" ]; then
- TAG="_$X_TOOLKIT"
+ if [ "$PGTK_OPTION" = "--with-pgtk" ]; then
+ TAG="_pgtk"
+ else
+ TAG="_$X_TOOLKIT"
+ fi
fi
cd $PKG