# TODO:
-# - use system libjpeg? (8/12/16-bit versions)
+# - use system libjpeg? (rather hard: it needs 8/12/16-bit versions; included libijg*
+# are libjpeg 6b with some arithmetic and lossless patches applied;
+# libjpeg 8 already included arithmetic encoding support, but not lossless)
#
+# Conditional build:
+%bcond_without icu # libicu instead of bundled oficonv
+# glibc iconv supports only AbortTranscodingOnIllegalSequence conversion flag
+# icu supports AbortTranscodingOnIllegalSequence and DiscardIllegalSequences
+# standalone libiconv >= 1.8 supports additionally TransliterateIllegalSequences
Summary: DICOM Toolkit - implementation of DICOM/MEDICOM standard
Summary(pl.UTF-8): Narzędzia DICOM - implementacja standardu DICOM/MEDICOM
Name: dcmtk
-Version: 3.6.0
-Release: 0.1
+Version: 3.6.8
+Release: 1
License: BSD
Group: Libraries
-Source0: ftp://dicom.offis.de/pub/dicom/offis/software/dcmtk/dcmtk360/%{name}-%{version}.tar.gz
-# Source0-md5: 19409e039e29a330893caea98715390e
-Patch0: %{name}-configure.patch
-Patch1: %{name}-0001-Added-soname-information-for-all-targets.patch
-Patch2: %{name}-0002-Install-libs-in-the-correct-arch-dir.patch
-Patch3: %{name}-0003-Removed-bundled-libcharl-reference-in-dcmjpls.patch
-Patch4: %{name}-0004-Use-system-charls.patch
-Patch5: %{name}-0005-Fixed-includes-for-CharLS-1.0.patch
-Patch6: %{name}-0006-Added-optional-support-for-building-shared-libraries.patch
-Patch7: %{name}-0007-Add-soname-generation-for-modules-which-are-not-in-D.patch
-Patch8: %{name}-link.patch
-Patch9: %{name}-libi2d.patch
-Patch10: %{name}-etc.patch
-URL: http://dicom.offis.de/dcmtk
-BuildRequires: CharLS-devel
-BuildRequires: cmake >= 2.4
+Source0: https://dicom.offis.de/download/dcmtk/release/%{name}-%{version}.tar.gz
+# Source0-md5: 7522e06ca2479183eb535c5da2bdf5e4
+Patch0: %{name}-3.6.0-0005-Fixed-includes-for-CharLS-1.0.patch
+Patch1: %{name}-3.6.1-0001-Removed-reference-to-bundled-libcharls.patch
+Patch2: %{name}-3.6.1-0002-Find-and-include-CharLS.patch
+Patch3: %{name}-3.6.1-0003-Create-FindCharLS.cmake.patch
+Patch4: %{name}-3.6.1-0004-Use-cmake-suggested-location-for-CharLS.patch
+Patch5: %{name}-etc.patch
+Patch6: CharLS.patch
+Patch7: %{name}-pc.patch
+URL: https://dcmtk.org/
+BuildRequires: CharLS-devel < 2.0
+BuildRequires: cmake >= 3.0
+BuildRequires: doxygen
+%{?with_icu:BuildRequires: libicu-devel}
BuildRequires: libpng-devel >= 2:1.2.8
-BuildRequires: libstdc++-devel
-BuildRequires: libtiff-devel >= 3.7.0
+# handled during configuration, but actually not used
+#BuildRequires: libsndfile-devel
+BuildRequires: libstdc++-devel >= 6:4.8.1
+BuildRequires: libtiff-devel >= 4
BuildRequires: libwrap-devel
BuildRequires: libxml2-devel >= 1:2.6.26
-BuildRequires: openssl-devel >= 0.9.8
+BuildRequires: openjpeg2-devel >= 2
+BuildRequires: openssl-devel >= 1.0.1
+BuildRequires: pkgconfig
BuildRequires: zlib-devel >= 1.2.3
Requires: %{name}-libs = %{version}-%{release}
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
Summary: DICOM ToolKit shared libraries
Summary(pl.UTF-8): Biblioteki współdzielone DICOM
Group: Libraries
+Requires: libstdc++ >= 6:4.8.1
+Requires: openssl >= 1.0.1
+Requires: zlib >= 1.2.3
%description libs
DICOM ToolKit shared libraries.
Summary(pl.UTF-8): Pliki nagłówkowe bibliotek DCMTK
Group: Development/Libraries
Requires: %{name}-libs = %{version}-%{release}
-Requires: libstdc++-devel
+%{?with_icu:Requires: libicu-devel}
+Requires: libpng-devel >= 2:1.2.8
+Requires: libstdc++-devel >= 6:4.8.1
+Requires: libtiff-devel >= 4
+Requires: libwrap-devel
+Requires: openjpeg2-devel >= 2
+Requires: openssl-devel >= 1.0.1
+Requires: zlib-devel >= 1.2.3
%description devel
Header files for DCMTK libraries.
%patch5 -p1
%patch6 -p1
%patch7 -p1
-%patch8 -p1
-%patch9 -p1
-%patch10 -p1
# enforce system CharLS
%{__rm} -r dcmjpls/libcharls
%build
-%cmake . \
- -DDCMTK_WITH_OPENSSL=ON \
- -DDCMTK_WITH_PNG=ON \
- -DDCMTK_WITH_PRIVATE_TAGS=ON \
- -DDCMTK_WITH_TIFF=ON \
- -DDCMTK_WITH_XML=ON \
- -DDCMTK_WITH_CHARLS=ON \
- -DDCMTK_WITH_ZLIB=ON
+install -d build
+cd build
+# SNDFILE does nothing (as of 3.6.7), just -devel dependency
+%cmake .. \
+ -DCMAKE_INSTALL_LIBDIR=%{_lib} \
+ %{?with_icu:-DDCMTK_ENABLE_CHARSET_CONVERSION=ICU} \
+ -DDCMTK_INSTALL_CMKDIR=%{_lib}/cmake/dcmtk \
+ -DBUILD_APPS:BOOL=ON \
+ -DBUILD_SHARED_LIBS:BOOL=ON \
+ -DDCMTK_ENABLE_CXX11:BOOL=ON \
+ -DDCMTK_USE_CXX11_STL:BOOL=ON \
+ -DDCMTK_WITH_CHARLS:BOOL=ON \
+ -DDCMTK_WITH_ICONV:BOOL=OFF \
+ %{?with_icu:-DDCMTK_WITH_ICU:BOOL=ON} \
+ -DDCMTK_WITH_OPENSSL:BOOL=ON \
+ -DDCMTK_WITH_PNG:BOOL=ON \
+ -DDCMTK_WITH_PRIVATE_TAGS:BOOL=ON \
+ -DDCMTK_WITH_SNDFILE:BOOL=OFF \
+ -DDCMTK_WITH_TIFF:BOOL=ON \
+ -DDCMTK_WITH_XML:BOOL=ON \
+ -DDCMTK_WITH_ZLIB:BOOL=ON
%{__make}
%install
rm -rf $RPM_BUILD_ROOT
-%{__make} install \
+%{__make} -C build install \
DESTDIR=$RPM_BUILD_ROOT
-%{__rm} -r $RPM_BUILD_ROOT%{_docdir}/dcmtk
+# disable completeness check incompatible with split packaging
+%{__sed} -i -e '/^foreach(target .*IMPORT_CHECK_TARGETS/,/^endforeach/d; /^unset(_IMPORT_CHECK_TARGETS)/d' $RPM_BUILD_ROOT%{_libdir}/cmake/dcmtk/DCMTKTargets.cmake
+
+%{__rm} $RPM_BUILD_ROOT%{_bindir}/{oficonv,ofstd}_tests
+
+# packaged as %doc
+%{__rm} -r $RPM_BUILD_ROOT%{_datadir}/doc-%{version}
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(644,root,root,755)
-%doc ANNOUNCE.360 CHANGES.360 COPYRIGHT FAQ HISTORY README dcmdata/docs/datadict.txt dcmnet/docs/asconfig.txt dcmqrdb/docs/dcmqr*.txt dcmtls/docs/ciphers.txt dcmwlm/docs/wwwapp.txt
+%doc ANNOUNCE CHANGES COPYRIGHT FAQ HISTORY README
+%doc dcmdata/docs/datadict.txt dcmnet/docs/asconfig.txt dcmqrdb/docs/dcmqr*.txt dcmtls/docs/ciphers.txt
+%attr(755,root,root) %{_bindir}/cda2dcm
%attr(755,root,root) %{_bindir}/dcm*
%attr(755,root,root) %{_bindir}/dcod2lum
%attr(755,root,root) %{_bindir}/dconvlum
+%attr(755,root,root) %{_bindir}/drtdump
+%attr(755,root,root) %{_bindir}/drttest
%attr(755,root,root) %{_bindir}/dsr2html
%attr(755,root,root) %{_bindir}/dsr2xml
%attr(755,root,root) %{_bindir}/dsrdump
%attr(755,root,root) %{_bindir}/dump2dcm
%attr(755,root,root) %{_bindir}/echoscu
%attr(755,root,root) %{_bindir}/findscu
+%attr(755,root,root) %{_bindir}/getscu
%attr(755,root,root) %{_bindir}/img2dcm
+%attr(755,root,root) %{_bindir}/mkcsmapper
+%attr(755,root,root) %{_bindir}/mkesdb
+%attr(755,root,root) %{_bindir}/mkreport
%attr(755,root,root) %{_bindir}/movescu
+%attr(755,root,root) %{_bindir}/msgserv
%attr(755,root,root) %{_bindir}/pdf2dcm
+%attr(755,root,root) %{_bindir}/stl2dcm
%attr(755,root,root) %{_bindir}/storescp
%attr(755,root,root) %{_bindir}/storescu
%attr(755,root,root) %{_bindir}/termscu
%attr(755,root,root) %{_bindir}/wlmscpfs
+%attr(755,root,root) %{_bindir}/wltest
%attr(755,root,root) %{_bindir}/xml2dcm
%attr(755,root,root) %{_bindir}/xml2dsr
%dir %{_sysconfdir}/dcmtk
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/dcmtk/printers.cfg
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/dcmtk/storescp.cfg
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/dcmtk/storescu.cfg
-%{_datadir}/dcmtk
+%{_datadir}/dcmtk-%{version}
+%{_mandir}/man1/cda2dcm.1*
%{_mandir}/man1/dcm*.1*
%{_mandir}/man1/dcod2lum.1*
%{_mandir}/man1/dconvlum.1*
+%{_mandir}/man1/drtdump.1*
%{_mandir}/man1/dsr2html.1*
%{_mandir}/man1/dsr2xml.1*
%{_mandir}/man1/dsrdump.1*
%{_mandir}/man1/dump2dcm.1*
%{_mandir}/man1/echoscu.1*
%{_mandir}/man1/findscu.1*
+%{_mandir}/man1/getscu.1*
%{_mandir}/man1/img2dcm.1*
+%{_mandir}/man1/mkcsmapper.1*
+%{_mandir}/man1/mkesdb.1*
%{_mandir}/man1/movescu.1*
%{_mandir}/man1/pdf2dcm.1*
+%{_mandir}/man1/stl2dcm.1*
%{_mandir}/man1/storescp.1*
%{_mandir}/man1/storescu.1*
%{_mandir}/man1/termscu.1*
%files libs
%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libcmr.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libcmr.so.18
%attr(755,root,root) %{_libdir}/libdcmdata.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libdcmdata.so.3.6
+%attr(755,root,root) %ghost %{_libdir}/libdcmdata.so.18
+%attr(755,root,root) %{_libdir}/libdcmect.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libdcmect.so.18
%attr(755,root,root) %{_libdir}/libdcmdsig.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libdcmdsig.so.3.6
+%attr(755,root,root) %ghost %{_libdir}/libdcmdsig.so.18
+%attr(755,root,root) %{_libdir}/libdcmfg.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libdcmfg.so.18
%attr(755,root,root) %{_libdir}/libdcmimage.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libdcmimage.so.3.6
+%attr(755,root,root) %ghost %{_libdir}/libdcmimage.so.18
%attr(755,root,root) %{_libdir}/libdcmimgle.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libdcmimgle.so.3.6
+%attr(755,root,root) %ghost %{_libdir}/libdcmimgle.so.18
+%attr(755,root,root) %{_libdir}/libdcmiod.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libdcmiod.so.18
%attr(755,root,root) %{_libdir}/libdcmjpeg.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libdcmjpeg.so.3.6
+%attr(755,root,root) %ghost %{_libdir}/libdcmjpeg.so.18
%attr(755,root,root) %{_libdir}/libdcmjpls.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libdcmjpls.so.3.6
+%attr(755,root,root) %ghost %{_libdir}/libdcmjpls.so.18
%attr(755,root,root) %{_libdir}/libdcmnet.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libdcmnet.so.3.6
+%attr(755,root,root) %ghost %{_libdir}/libdcmnet.so.18
%attr(755,root,root) %{_libdir}/libdcmpstat.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libdcmpstat.so.3.6
+%attr(755,root,root) %ghost %{_libdir}/libdcmpstat.so.18
%attr(755,root,root) %{_libdir}/libdcmqrdb.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libdcmqrdb.so.3.6
+%attr(755,root,root) %ghost %{_libdir}/libdcmqrdb.so.18
+%attr(755,root,root) %{_libdir}/libdcmrt.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libdcmrt.so.18
+%attr(755,root,root) %{_libdir}/libdcmseg.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libdcmseg.so.18
+%attr(755,root,root) %{_libdir}/libdcmpmap.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libdcmpmap.so.18
%attr(755,root,root) %{_libdir}/libdcmsr.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libdcmsr.so.3.6
+%attr(755,root,root) %ghost %{_libdir}/libdcmsr.so.18
+%attr(755,root,root) %{_libdir}/libdcmtract.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libdcmtract.so.18
%attr(755,root,root) %{_libdir}/libdcmtls.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libdcmtls.so.3.6
+%attr(755,root,root) %ghost %{_libdir}/libdcmtls.so.18
%attr(755,root,root) %{_libdir}/libdcmwlm.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libdcmwlm.so.3.6
+%attr(755,root,root) %ghost %{_libdir}/libdcmwlm.so.18
+%attr(755,root,root) %{_libdir}/libdcmxml.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libdcmxml.so.18
%attr(755,root,root) %{_libdir}/libi2d.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libi2d.so.3.6
+%attr(755,root,root) %ghost %{_libdir}/libi2d.so.18
%attr(755,root,root) %{_libdir}/libijg12.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libijg12.so.3.6
+%attr(755,root,root) %ghost %{_libdir}/libijg12.so.18
%attr(755,root,root) %{_libdir}/libijg16.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libijg16.so.3.6
+%attr(755,root,root) %ghost %{_libdir}/libijg16.so.18
%attr(755,root,root) %{_libdir}/libijg8.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libijg8.so.3.6
+%attr(755,root,root) %ghost %{_libdir}/libijg8.so.18
+%attr(755,root,root) %{_libdir}/liboficonv.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/liboficonv.so.18
%attr(755,root,root) %{_libdir}/liboflog.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/liboflog.so.3.6
+%attr(755,root,root) %ghost %{_libdir}/liboflog.so.18
%attr(755,root,root) %{_libdir}/libofstd.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libofstd.so.3.6
+%attr(755,root,root) %ghost %{_libdir}/libofstd.so.18
%files devel
%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libcmr.so
%attr(755,root,root) %{_libdir}/libdcmdata.so
%attr(755,root,root) %{_libdir}/libdcmdsig.so
+%attr(755,root,root) %{_libdir}/libdcmect.so
+%attr(755,root,root) %{_libdir}/libdcmfg.so
%attr(755,root,root) %{_libdir}/libdcmimage.so
%attr(755,root,root) %{_libdir}/libdcmimgle.so
+%attr(755,root,root) %{_libdir}/libdcmiod.so
%attr(755,root,root) %{_libdir}/libdcmjpeg.so
%attr(755,root,root) %{_libdir}/libdcmjpls.so
%attr(755,root,root) %{_libdir}/libdcmnet.so
+%attr(755,root,root) %{_libdir}/libdcmpmap.so
%attr(755,root,root) %{_libdir}/libdcmpstat.so
%attr(755,root,root) %{_libdir}/libdcmqrdb.so
+%attr(755,root,root) %{_libdir}/libdcmrt.so
+%attr(755,root,root) %{_libdir}/libdcmseg.so
%attr(755,root,root) %{_libdir}/libdcmsr.so
%attr(755,root,root) %{_libdir}/libdcmtls.so
+%attr(755,root,root) %{_libdir}/libdcmtract.so
%attr(755,root,root) %{_libdir}/libdcmwlm.so
+%attr(755,root,root) %{_libdir}/libdcmxml.so
%attr(755,root,root) %{_libdir}/libi2d.so
%attr(755,root,root) %{_libdir}/libijg12.so
%attr(755,root,root) %{_libdir}/libijg16.so
%attr(755,root,root) %{_libdir}/libijg8.so
+%attr(755,root,root) %{_libdir}/liboficonv.so
%attr(755,root,root) %{_libdir}/liboflog.so
%attr(755,root,root) %{_libdir}/libofstd.so
+%{_libdir}/cmake/dcmtk
%{_includedir}/dcmtk
+%{_pkgconfigdir}/dcmtk.pc