Blob Blame History Raw
%{?mingw_package_header}

%global win32dir %{_builddir}/mingw32-%{pkgname}-%{version}-%{release}
%global win64dir %{_builddir}/mingw64-%{pkgname}-%{version}-%{release}

%global pkgname freeimage
%global ver_major 3

Name:          mingw-%{pkgname}
Version:       3.15.4
Release:       6%{?dist}
Summary:       MinGW Windows %{pkgname} library

# See http://freeimage.sourceforge.net/license.html and https://lists.fedoraproject.org/pipermail/legal/2013-October/002271.html
License:       GPLv2 or GPLv3 or MPLv1.0
BuildArch:     noarch
URL:           http://freeimage.sourceforge.net/
Source:        http://downloads.sourceforge.net/%{pkgname}/FreeImage%(echo %{version} | sed 's|\.||g').zip
# Unbundle bundled libraries
Patch0:        FreeImage-3.15.4_unbundle.patch
# Patch makefiles to make them work for the mingw build
Patch1:        FreeImage-3.15.4_mingw-makefiles.patch
# Fix CVE-2015-0852 (#1257859)
Patch2:        FreeImage-3.15.4_CVE-2015-0852.patch

BuildRequires: dos2unix

BuildRequires: mingw32-filesystem >= 95
BuildRequires: mingw32-gcc-c++
BuildRequires: mingw32-openjpeg
BuildRequires: mingw32-libjpeg-turbo
BuildRequires: mingw32-libpng
BuildRequires: mingw32-libtiff
BuildRequires: mingw32-OpenEXR
BuildRequires: mingw32-LibRaw
BuildRequires: mingw32-ilmbase

BuildRequires: mingw64-filesystem >= 95
BuildRequires: mingw64-gcc-c++
BuildRequires: mingw64-openjpeg
BuildRequires: mingw64-libjpeg-turbo
BuildRequires: mingw64-libpng
BuildRequires: mingw64-libtiff
BuildRequires: mingw64-OpenEXR
BuildRequires: mingw64-LibRaw
BuildRequires: mingw64-ilmbase


%description
MinGW Windows %{pkgname} library.


%package -n mingw32-%{pkgname}
Summary:       MinGW Windows %{pkgname} library

%description -n mingw32-%{pkgname}
%{summary}.


%package -n mingw32-%{pkgname}-static
Summary:       Static version of the MinGW Windows %{pkgname} library
Requires:      mingw32-%{pkgname} = %{version}-%{release}

%description -n mingw32-%{pkgname}-static
%{summary}.


%package -n mingw64-%{pkgname}
Summary:       MinGW Windows %{pkgname} library

%description -n mingw64-%{pkgname}
%{summary}.


%package -n mingw64-%{pkgname}-static
Summary:       Static version of the MinGW Windows %{pkgname} library
Requires:      mingw64-%{pkgname} = %{version}-%{release}

%description -n mingw64-%{pkgname}-static
%{summary}.


%{?mingw_debug_package}


%prep
%setup -q -n FreeImage
# Remove bundled libraries
rm -rf Source/OpenEXR
rm -rf Source/LibMNG
rm -rf Source/LibOpenJPEG
rm -rf Source/LibPNG
rm -rf Source/LibRawLite
rm -rf Source/LibTIFF
rm -rf Source/LibJPEG
rm -rf Source/LibTIFF4
rm -rf Source/ZLib

# Convert line endings
find . -type f -exec dos2unix {} \;

# Convert to utf-8
iconv -f ISO-8859-15 -t UTF-8 -o Whatsnew.txt.new Whatsnew.txt && \
touch -r Whatsnew.txt Whatsnew.txt.new && \
mv Whatsnew.txt.new Whatsnew.txt

iconv -f WINDOWS-1252 -t UTF-8 -o license-gplv3.txt.new license-gplv3.txt && \
touch -r license-gplv3.txt license-gplv3.txt.new && \
mv license-gplv3.txt.new license-gplv3.txt

# Apply patches
%patch0 -p1
%patch1 -p1
%patch2 -p1

# Generate source list
sh ./gensrclist.sh
sh ./genfipsrclist.sh

# Create source trees
cp -a . %{win32dir}
cp -a . %{win64dir}
cp -a . %{win32dir}-static
cp -a . %{win64dir}-static


%build
(
cd %{win32dir}
%mingw32_make MINGW_TARGET=%mingw32_target FREEIMAGE_LIBRARY_TYPE="SHARED" -f Makefile.mingw %{?_smp_mflags}
%mingw32_make MINGW_TARGET=%mingw32_target FREEIMAGE_LIBRARY_TYPE="SHARED" -f Makefile.fip %{?_smp_mflags}
)

(
cd %{win32dir}-static
%mingw32_make MINGW_TARGET=%mingw32_target FREEIMAGE_LIBRARY_TYPE="STATIC" -f Makefile.mingw %{?_smp_mflags}
%mingw32_make MINGW_TARGET=%mingw32_target FREEIMAGE_LIBRARY_TYPE="STATIC" -f Makefile.fip %{?_smp_mflags}
)

(
cd %{win64dir}
%mingw64_make MINGW_TARGET=%mingw64_target FREEIMAGE_LIBRARY_TYPE="SHARED" -f Makefile.mingw %{?_smp_mflags}
%mingw64_make MINGW_TARGET=%mingw64_target FREEIMAGE_LIBRARY_TYPE="SHARED" -f Makefile.fip %{?_smp_mflags}
)

(
cd %{win64dir}-static
%mingw64_make MINGW_TARGET=%mingw64_target FREEIMAGE_LIBRARY_TYPE="STATIC" -f Makefile.mingw %{?_smp_mflags}
%mingw64_make MINGW_TARGET=%mingw64_target FREEIMAGE_LIBRARY_TYPE="STATIC" -f Makefile.fip %{?_smp_mflags}
)


%install
install -Dpm 0755 %{win32dir}/Dist/freeimage-%ver_major.dll %{buildroot}%{mingw32_bindir}/freeimage-%ver_major.dll
install -Dpm 0644 %{win32dir}/Dist/freeimage.dll.a %{buildroot}%{mingw32_libdir}/freeimage.dll.a
install -Dpm 0644 %{win32dir}-static/Dist/libfreeimage.a %{buildroot}%{mingw32_libdir}/libfreeimage.a
install -Dpm 0644 %{win32dir}/Dist/FreeImage.h %{buildroot}%{mingw32_includedir}/FreeImage.h

install -Dpm 0755 %{win64dir}/Dist/freeimage-%ver_major.dll %{buildroot}%{mingw64_bindir}/freeimage-%ver_major.dll
install -Dpm 0644 %{win64dir}/Dist/freeimage.dll.a %{buildroot}%{mingw64_libdir}/freeimage.dll.a
install -Dpm 0644 %{win64dir}-static/Dist/libfreeimage.a %{buildroot}%{mingw64_libdir}/libfreeimage.a
install -Dpm 0644 %{win64dir}/Dist/FreeImage.h %{buildroot}%{mingw64_includedir}/FreeImage.h

install -Dpm 0755 %{win32dir}/Dist/freeimageplus-%ver_major.dll %{buildroot}%{mingw32_bindir}/freeimageplus-%ver_major.dll
install -Dpm 0644 %{win32dir}/Dist/freeimageplus.dll.a %{buildroot}%{mingw32_libdir}/freeimageplus.dll.a
install -Dpm 0644 %{win32dir}-static/Dist/libfreeimageplus.a %{buildroot}%{mingw32_libdir}/libfreeimageplus.a
install -Dpm 0644 %{win32dir}/Dist/FreeImagePlus.h %{buildroot}%{mingw32_includedir}/FreeImagePlus.h

install -Dpm 0755 %{win64dir}/Dist/freeimageplus-%ver_major.dll %{buildroot}%{mingw64_bindir}/freeimageplus-%ver_major.dll
install -Dpm 0644 %{win64dir}/Dist/freeimageplus.dll.a %{buildroot}%{mingw64_libdir}/freeimageplus.dll.a
install -Dpm 0644 %{win64dir}-static/Dist/libfreeimageplus.a %{buildroot}%{mingw64_libdir}/libfreeimageplus.a
install -Dpm 0644 %{win64dir}/Dist/FreeImagePlus.h %{buildroot}%{mingw64_includedir}/FreeImagePlus.h


%files -n mingw32-%{pkgname}
%doc Whatsnew.txt license-fi.txt license-gplv2.txt license-gplv3.txt
%{mingw32_bindir}/freeimage-%ver_major.dll
%{mingw32_bindir}/freeimageplus-%ver_major.dll
%{mingw32_includedir}/FreeImage.h
%{mingw32_includedir}/FreeImagePlus.h
%{mingw32_libdir}/freeimage.dll.a
%{mingw32_libdir}/freeimageplus.dll.a

%files -n mingw32-%{pkgname}-static
%{mingw32_libdir}/libfreeimage.a
%{mingw32_libdir}/libfreeimageplus.a

%files -n mingw64-%{pkgname}
%doc Whatsnew.txt license-fi.txt license-gplv2.txt license-gplv3.txt
%{mingw64_bindir}/freeimage-%ver_major.dll
%{mingw64_bindir}/freeimageplus-%ver_major.dll
%{mingw64_includedir}/FreeImage.h
%{mingw64_includedir}/FreeImagePlus.h
%{mingw64_libdir}/freeimage.dll.a
%{mingw64_libdir}/freeimageplus.dll.a

%files -n mingw64-%{pkgname}-static
%{mingw64_libdir}/libfreeimage.a
%{mingw64_libdir}/libfreeimageplus.a


%changelog
* Sat Nov 14 2015 Sandro Mani <manisandro@gmail.com> - 3.15.4-6
- Fix CVE-2015-0852 (#1257859)

* Wed Nov 26 2014 Sandro Mani <manisandro@gmail.com> - 3.15.4-5
- Rebuild (ilmbase, OpenEXR)

* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.15.4-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild

* Mon Jan 27 2014 Sandro Mani <manisandro@gmail.com> - 3.15.4-3
- Delete Source/ZLib folder
- Convert Whatsnew.txt, license-gplv3.txt to UTF-8

* Thu Jan 16 2014 Sandro Mani <manisandro@gmail.com> - 3.15.4-2
- Completely unbundle libraries (thanks to František Dvořák)

* Tue Jan 07 2014 Sandro Mani <manisandro@gmail.com> - 3.15.4-1
- Initial package