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
openSUSE Build Service is sponsored by