File emacs-pgtk-nativecomp.spec of Package emacs-pgtk-nativecomp
#
# spec file for package emacs-pgtk-native-comp
#
# Copyright (c) 2021 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%define non_git_version 29.0.50
Name: emacs-master
Version: 1640171533.141bf18
Release: 0
Summary: Pure GTK Emacs with native compilation
License: GPL-3.0+
URL: https://github.com/emacs-mirror/emacs/tree/master
Source0: emacs-%{version}.tar.xz
Patch0: suse-native-comp-driver-options.patch
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: giflib-devel
BuildRequires: cairo-devel
BuildRequires: dbus-1-devel
BuildRequires: fdupes
BuildRequires: gtk3-devel
# Used for installtion of info pages as well as to
# detect if the page info.info is part of that package
BuildRequires: info
BuildRequires: libgnutls-devel
BuildRequires: libjpeg-devel
BuildRequires: libotf-devel
BuildRequires: libpng-devel
BuildRequires: librsvg-devel
BuildRequires: libtiff-devel
BuildRequires: libudev-devel
BuildRequires: libxml2-devel
BuildRequires: m17n-lib-devel
BuildRequires: makeinfo
BuildRequires: ncurses-devel
BuildRequires: xorg-x11-devel
BuildRequires: xz
BuildRequires: zlib-devel
BuildRequires: pkgconfig(harfbuzz)
BuildRequires: pkgconfig(jansson)
BuildRequires: pkgconfig(libsystemd)
BuildRequires: pkgconfig(webkit2gtk-4.0) >= 2.12
# Needed for native compilation
BuildRequires: gcc11-devel
BuildRequires: libgccjit0-devel-gcc11
# Needed for libgccjit smoke tests
BuildRequires: gcc11
BuildRequires: libgccjit0
Requires: gcc11
Provides: emacs = %{non_git_version}
Obsoletes: emacs < %{non_git_version}
Obsoletes: emacs-info < %{non_git_version}
Obsoletes: emacs-x11 < %{non_git_version}
%description
Pure GTK Emacs with native compilation.
%package -n etags
Summary: Generate Tag Files for use with Emacs
Requires(post): coreutils update-alternatives
Requires(preun): coreutils update-alternatives
Provides: ctags:/usr/bin/etags
%description -n etags
ETags generates tag files from source code in Pascal, Cobol, Ada, Perl,
LaTeX, Scheme, Emacs Lisp/Common Lisp, Postscript, Erlang, Python, Prolog,
and most assembler-like syntaxes.
%package devel
Summary: Development header files
%description devel
Contains header files for developing Emacs modules.
%prep
%setup -q -n emacs-%{version}
%patch0 -p1
./autogen.sh
%build
# needed for libgccjit to work
export LIBRARY_PATH=/usr/lib64:/usr/lib64/gcc/x86_64-suse-linux/11
export LDFLAGS='-Wl,-O2'
# pre-compile lisp
export NATIVE_FULL_AOT=1
%configure --with-pgtk --with-native-compilation --with-cairo --with-libotf \
--with-jpeg --with-tiff --with-gif --with-png --with-rsvg --with-xft \
--with-dbus --with-sound --with-xwidgets \
--enable-locallisppath=%{_datadir}/emacs/%{non_git_version}/site-lisp:%{_datadir}/emacs/site-lisp
make %{?_smp_mflags}
%install
%make_install
mkdir -p %{buildroot}/usr/lib/systemd/user
mv %{buildroot}%{_libdir}/systemd/user/emacs.service %{buildroot}/usr/lib/systemd/user/
%fdupes %{buildroot}/%{_prefix}
%files
%license COPYING
%{_bindir}/emacs
%{_bindir}/emacs-%{non_git_version}
%{_bindir}/emacsclient
%{_bindir}/ebrowse
/usr/lib/systemd/user/emacs.service
%dir %{_datadir}/emacs
%dir %{_datadir}/emacs/%{non_git_version}
%dir %{_datadir}/emacs/%{non_git_version}/etc
%dir %{_datadir}/emacs/%{non_git_version}/lisp
%dir %{_datadir}/emacs/%{non_git_version}/site-lisp
%{_datadir}/emacs/%{non_git_version}/etc/*
%exclude %{_datadir}/emacs/%{non_git_version}/etc/ETAGS.*
%{_datadir}/emacs/%{non_git_version}/lisp/*
%{_datadir}/emacs/%{non_git_version}/site-lisp/subdirs.el
%{_datadir}/emacs/site-lisp/subdirs.el
%dir %{_libdir}/emacs
%dir %{_libdir}/emacs/%{non_git_version}
%dir %{_libdir}/emacs/%{non_git_version}/native-lisp/
%dir %{_libdir}/emacs/%{non_git_version}/native-lisp/%{non_git_version}-*/
%dir %{_libdir}/emacs/%{non_git_version}/native-lisp/%{non_git_version}-*/preloaded
%{_libdir}/emacs/%{non_git_version}/native-lisp/%{non_git_version}-*/*.eln
%{_libdir}/emacs/%{non_git_version}/native-lisp/%{non_git_version}-*/preloaded/*.eln
%dir %{_libexecdir}/emacs/
%dir %{_libexecdir}/emacs/%{non_git_version}/
%{_libexecdir}/emacs/%{non_git_version}/*-suse-linux-gnu/
%dir %{_datadir}/applications/
%{_datadir}/applications/emacs*.desktop
%{_datadir}/icons/hicolor/*/apps/emacs.*
%{_datadir}/icons/hicolor/*/mimetypes/emacs-document*.svg
%{_datadir}/glib-2.0/schemas/org.gnu.emacs.defaults.gschema.xml
%{_datadir}/metainfo/emacs.metainfo.xml
%{_mandir}/man1/emacs.1%{ext_man}
%{_mandir}/man1/emacsclient.1%{ext_man}
%{_mandir}/man1/ebrowse.1%{ext_man}
%doc %{_infodir}/*.gz
%files -n etags
%{_bindir}/etags
%{_bindir}/ctags
%{_mandir}/man1/*tags.1%{ext_man}
%dir %{_datadir}/emacs
%dir %{_datadir}/emacs/%{non_git_version}
%dir %{_datadir}/emacs/%{non_git_version}/etc
%doc %{_datadir}/emacs/%{non_git_version}/etc/ETAGS.EBNF
%doc %{_datadir}/emacs/%{non_git_version}/etc/ETAGS.README
%files devel
%{_includedir}/emacs-module.h
%changelog