%define _lto_cflags %{nil}
%define realver     9.17
%define develver	9.17
%define packagever  9.17

# defaults ..
%define pkg 		wine
%define compat_package	winehq
%define _prefix 	/opt/wine
%define ver		%packagever


%define lib_major       1
%define lib_name        lib%{pkg}1
%define lib_name_devel  lib%{pkg}-devel
%undefine _hardened_build

Name:       %pkg
Version:    %ver
Release:    1
Summary:    WINE Is Not An Emulator - runs MS Windows programs
License:    LGPLv2+
Group:      Emulators
URL:        https://www.winehq.org/

%define wine    %{name}
%define mark64  %{nil}

Source0:	https://dl.winehq.org/wine/source/9.x/wine-%{realver}.tar.xz
Source1:	https://dl.winehq.org/wine/source/9.x/wine-%{realver}.tar.xz.sign

# Alexandres key
Source99:	wine.keyring

BuildRequires:  mingw32-gcc
BuildRequires:  mingw64-gcc
BuildRequires:  SDL2-devel
BuildRequires:  opencl-headers
BuildRequires:  ocl-icd-devel
BuildRequires:  pcsc-lite-devel
BuildRequires:  samba-devel
BuildRequires:  icoutils
BuildRequires:  vulkan-devel
BuildRequires:  lcms2-devel
BuildRequires:  gstreamer1-devel
BuildRequires:  gstreamer1-plugins-base-devel
BuildRequires:  fontforge
BuildRequires:  fontpackages-devel
BuildRequires:  libudev-devel
BuildRequires:  libv4l-devel
BuildRequires:  pulseaudio-libs-devel
BuildRequires:  lzma
BuildRequires:  audiofile-devel
BuildRequires:  giflib-devel
BuildRequires:  ImageMagick-devel
BuildRequires:  libpcap-devel
BuildRequires:  libXxf86dga-devel
BuildRequires:  mesa-libOSMesa-devel
BuildRequires:  libgphoto2-devel
BuildRequires:  libusb1-devel
BuildRequires:  alsa-lib-devel
BuildRequires:  autoconf
BuildRequires:  bison
BuildRequires:  coreutils
BuildRequires:  cups-devel
BuildRequires:  dbus-devel
BuildRequires:  desktop-file-utils
BuildRequires:  flex
BuildRequires:  fontconfig-devel
BuildRequires:  freetype-devel
BuildRequires:  freeglut-devel
BuildRequires:  gawk
BuildRequires:  xz
BuildRequires:  gettext-devel
BuildRequires:  gnutls-devel
BuildRequires:  krb5-devel
BuildRequires:  libattr-devel
BuildRequires:  libieee1284-devel
BuildRequires:  librsvg2
BuildRequires:  librsvg2-devel
BuildRequires:  libstdc++-devel
BuildRequires:  libX11-devel
BuildRequires:  libXcomposite-devel
BuildRequires:  libXcursor-devel
BuildRequires:  libXext-devel
BuildRequires:  libXi-devel
BuildRequires:  libXinerama-devel
BuildRequires:  libxkbcommon-devel
BuildRequires:  libXmu-devel
BuildRequires:  libXrandr-devel
BuildRequires:  libXrender-devel
BuildRequires:  libXxf86vm-devel
BuildRequires:  mesa-libGL-devel
BuildRequires:  mesa-libGLU-devel
BuildRequires:  ncurses-devel
BuildRequires:  sane-backends-devel
BuildRequires:  unixODBC-devel
BuildRequires:  unzip
BuildRequires:  util-linux
%ifarch aarch64
BuildRequires:  clang
BuildRequires:  lld
%else
BuildRequires:  gcc
%endif

Provides:   %{lib_name} = %{version}-%{release}
Obsoletes:  %{lib_name} <= %{version}-%{release}
Provides:   %{name}-bin = %{version}-%{release}

Requires: alsa-lib
Requires: attr
Requires: cups-libs
Requires: dbus-libs
Requires: fontconfig
Requires: freetype
Requires: gnutls
Requires: krb5-libs
Requires: ncurses-libs
Requires: unixODBC
Requires: mesa-libOSMesa
Requires: sane-backends-libs
Requires: SDL2
Requires: libv4l
Requires: vulkan-loader
Requires: libXcomposite
Requires: libXcursor
Requires: libXi
Requires: libXinerama
Requires: libXrandr
Requires: libXxf86vm
Suggests: sane-frontends

Requires(post): desktop-file-utils
Requires(postun): desktop-file-utils

%define desc Wine is a program which allows running Microsoft Windows programs \
(including DOS, Windows 3.x and Win32 executables) on Unix. It \
consists of a program loader which loads and executes a Microsoft \
Windows binary, and a library (called Winelib) that implements Windows \
API calls using their Unix or X11 equivalents.  The library may also \
be used for porting Win32 code into native Unix executables.

%description
%desc

%package -n %{wine}-devel
Summary:    Static libraries and headers for %{name} (64-bit)
Group:      Development/C
Requires:   %{wine} = %{version}-%{release}
Provides:   %{lib_name_devel} = %{version}-%{release}
Obsoletes:  %{lib_name_devel} <= %{version}-%{release}
%description -n %{wine}-devel
Wine is a program which allows running Microsoft Windows programs
(including DOS, Windows 3.x and Win32 executables) on Unix.

This package contains the libraries and header files needed to
develop programs which make use of Wine.

%package -n %compat_package
Summary:    WINE Is Not An Emulator - runs MS Windows programs
Group:      Emulators
Requires:   %{wine} = %{version}-%{release}

%description -n %compat_package
Wine is a program which allows running Microsoft Windows programs
(including DOS, Windows 3.x and Win32 executables) on Unix.

This compatibility package allows to use %{wine} system-wide as
the default Wine version.

%prep
# unpack tarball SOURCE0
%setup -n wine-%realver  -q -T -b0

%build
export LDFLAGS="$(echo "%{build_ldflags}" | sed -e 's/-Wl,-z,relro//' -e 's/-Wl,--build-id=sha1//')"
%ifarch x86_64
export CFLAGS="$(echo "%{optflags}" | sed -e 's/-O2//' -e 's/-Wp,-D_FORTIFY_SOURCE=2//' -e 's/-fcf-protection//' -e 's/-fstack-protector-strong//' -e 's/-fstack-clash-protection//') -O2"
%else
export CFLAGS="$(echo "%{optflags}" | sed -e 's/-Wp,-D_FORTIFY_SOURCE=2//' -e 's/-fcf-protection//' -e 's/-fstack-protector-strong//' -e 's/-fstack-clash-protection//')"
%endif
%configure \
    --with-gstreamer \
    --disable-tests \
    --enable-archs=i386,x86_64 \
    --with-x
make -j4 

%install
%makeinstall LDCONFIG=/bin/true

# Compat symlinks for bindir
mkdir -p "%{buildroot}/usr/bin"
for _file in $(ls "%{buildroot}/%{_bindir}"); do \
    ln -s "%{_bindir}/$_file" "%{buildroot}/usr/bin/$_file"; \
done

# Compat symlinks for desktop file
mkdir -p "%{buildroot}/usr/share/applications"
for _file in $(ls "%{buildroot}/%{_datadir}/applications"); do \
    ln -s "%{_datadir}/applications/$_file" "%{buildroot}/usr/share/applications/$_file"; \
done

# Compat manpages
for _dir in man1 de.UTF-8/man1 fr.UTF-8/man1 pl.UTF-8/man1; do \
        mkdir -p "%{buildroot}/usr/share/man/$_dir"; \
done

install -p -m 0644 loader/wine.man          "%{buildroot}/usr/share/man/man1/wine.1"
install -p -m 0644 loader/wine.de.UTF-8.man "%{buildroot}/usr/share/man/de.UTF-8/man1/wine.1"
install -p -m 0644 loader/wine.fr.UTF-8.man "%{buildroot}/usr/share/man/fr.UTF-8/man1/wine.1"
install -p -m 0644 loader/wine.pl.UTF-8.man "%{buildroot}/usr/share/man/pl.UTF-8/man1/wine.1"

%files -n %{wine}
%doc ANNOUNCE.md AUTHORS README.md

%{_bindir}/function_grep.pl
%{_bindir}/msiexec
%{_bindir}/msidb
%{_bindir}/notepad
%{_bindir}/regedit
%{_bindir}/regsvr32
%{_bindir}/widl
%{_bindir}/wineboot
%{_bindir}/winebuild
%{_bindir}/winecfg
%{_bindir}/wineconsole*
%{_bindir}/winecpp
%{_bindir}/winedbg
%{_bindir}/winedump
%{_bindir}/winefile
%{_bindir}/wineg++
%{_bindir}/winegcc
%{_bindir}/winemaker
%{_bindir}/winemine
%{_bindir}/winepath
%{_bindir}/wineserver
%{_bindir}/wmc
%{_bindir}/wrc
%lang(de) %{_mandir}/de.UTF-8/man?/winemaker.?*
%lang(de) %{_mandir}/de.UTF-8/man?/wineserver.?*
%lang(fr) %{_mandir}/fr.UTF-8/man?/winemaker.?*
%lang(fr) %{_mandir}/fr.UTF-8/man?/wineserver.?*
%{_mandir}/man?/widl.1*
%{_mandir}/man?/winebuild.1*
%{_mandir}/man?/winecpp.1*
%{_mandir}/man?/winedbg.1*
%{_mandir}/man?/winedump.1*
%{_mandir}/man?/wineg++.1*
%{_mandir}/man?/winegcc.1*
%{_mandir}/man?/winemaker.1*
%{_mandir}/man?/wmc.1*
%{_mandir}/man?/wrc.1*
%{_mandir}/man?/msiexec.?*
%{_mandir}/man?/notepad.?*
%{_mandir}/man?/regedit.?*
%{_mandir}/man?/regsvr32.?*
%{_mandir}/man?/wineboot.?*
%{_mandir}/man?/winecfg.?*
%{_mandir}/man?/wineconsole.?*
%{_mandir}/man?/winefile.?*
%{_mandir}/man?/winemine.?*
%{_mandir}/man?/winepath.?*
%{_mandir}/man?/wineserver.?*
%dir %{_datadir}/wine
%{_datadir}/wine/wine.inf
%{_datadir}/wine/nls/*.nls
%{_datadir}/applications/*.desktop
%dir %{_datadir}/wine/fonts
%{_datadir}/wine/fonts/*
%{_bindir}/wine
%{_bindir}/wine-preloader
%{_mandir}/man?/wine.?*
%lang(de) %{_mandir}/de.UTF-8/man?/wine.?*
%lang(fr) %{_mandir}/fr.UTF-8/man?/wine.?*
%lang(pl) %{_mandir}/pl.UTF-8/man?/wine.?*
%ifarch x86_64
%{_libdir}/wine/x86_64-unix/*.*
%else
%{_libdir}/wine/aarch64-unix/*.*
%endif
%{_libdir}/wine/i386-windows/*.*
%{_libdir}/wine/x86_64-windows/*.*

%files -n %{wine}-devel
%{_includedir}/*

%files -n %compat_package
/usr/bin/*
/usr/share/applications/*.desktop
/usr/share/man/man?/*
%lang(de) /usr/share/man/de.UTF-8/man?/*
%lang(fr) /usr/share/man/fr.UTF-8/man?/*
%lang(pl) /usr/share/man/pl.UTF-8/man?/*

%changelog
* Sat Sep 14 2024 Yang Feng <yangfeng@kylinsec.com.cn> - 9.17-1
- version update

* Fri Jan 19 2024 Li Shunlong <lishunlong@kylinsec.com.cn> - 9.0-2
- version update

* Tue Nov 24 2020 Zhiyi Weng <zhiyi@iscas.ac.cn> - 5.5-2
- Remove dependency of 32-bit packages.

* Thu Nov 12 2020 Zhiyi Weng <zhiyi@iscas.ac.cn> - 5.5-1
- Initial version.