# TODO:
+# SBC plugin is missing bluez_sbc subdir
# fix static libname (libopal_s.a)
-# check why:
-# checking PTLIB has expat... no
-# checking PTLIB has vxml... no
-# checking PTLIB has ipv6... no
-# checking PTLIB has ldap... no
-# ... and check plugin configuration:
-# GSM : yes (internal)
-# H.263+ :
-# H.264 : no
-# THEORA : no
-# MPEG4 Part 2 : no
-# SpanDSP FAX : no
-# CAPI : no
-# Quicknet xJACK support : no
+# MPEG4 rate control correction requires libavcodec sources
+# NOTE: IPv6 support requires IPv6 support in ptlib
#
-# Don't touch this! strip removes all symbols from library
-%define no_install_post_strip 1
+# WARNING: opal version should match Ekiga and ptlib versions
+# Recommendations: http://wiki.ekiga.org/index.php/Download_Ekiga_sources
+# (for ekiga 4.0.x it's ptlib 2.10.x + opal 3.10.x)
#
+# Conditional build:
+%bcond_with sip_fax_only # minimal build for t38modem + SIP
+%bcond_without celt # CELT codec support
+%bcond_without srtp # SRTP protocol support (mutually exclusive with zrtp)
+%bcond_with zrtp # ZRTP protocol support (mutually exclusive with srtp; broken as of 3.10.9)
+%bcond_without capi # CAPI support
+%bcond_without vpb # Voicetronix VPB support
+%bcond_with java # Java JNI interface (only swig wrapper, Java part not built)
+%bcond_with ruby # Ruby interface (very initial, only swig wrapper)
+#
+%if %{with zrtp}
+%undefine with_srtp
+%endif
+%if %{with sip_fax_only}
+%undefine with_java
+%undefine with_ruby
+%undefine with_srtp
+%undefine with_zrtp
+%endif
Summary: Open Phone Abstraction Library (aka OpenH323 v2)
Summary(pl.UTF-8): Biblioteka Open Phone Abstraction Library (aka OpenH323 v2)
Name: opal
-Version: 3.4.2
-Release: 0.1
-License: MPL
+Version: 3.10.11
+Release: 6
+License: MPL v1.0
Group: Libraries
-Source0: http://ftp.gnome.org/pub/gnome/sources/opal/3.4/%{name}-%{version}.tar.bz2
-# Source0-md5: a1d11099fa00d77a79dcfe513872e8dc
-#Source0: http://www.ekiga.org/admin/downloads/latest/sources/sources/%{name}-%{version}.tar.gz
-Patch0: %{name}-libname.patch
-Patch1: %{name}-mak_files.patch
-Patch2: %{name}-ac.patch
-Patch3: %{name}-build.patch
-URL: http://www.openh323.org/
-BuildRequires: SDL-devel
+Source0: http://downloads.sourceforge.net/opalvoip/%{name}-%{version}.tar.bz2
+# Source0-md5: fc36a30d2cbce0fbf7cb6ef33b8d63c3
+Patch0: %{name}-build.patch
+Patch1: ffmpeg.patch
+Patch2: %{name}-sh.patch
+Patch3: %{name}-libilbc.patch
+Patch4: %{name}-ah.patch
+Patch5: %{name}-exceptions.patch
+Patch6: %{name}-ruby.patch
+Patch7: srtp.patch
+URL: http://www.opalvoip.org/
+BuildRequires: autoconf >= 2.50
BuildRequires: automake
-BuildRequires: autoconf
+%{?with_capi:BuildRequires: capi4k-utils-devel}
+%{?with_celt:BuildRequires: celt-devel}
+BuildRequires: expat-devel
BuildRequires: libstdc++-devel
-BuildRequires: openssl-devel
+%{?with_zrtp:BuildRequires: libzrtp-devel}
BuildRequires: pkgconfig
-BuildRequires: ptlib-devel
+BuildRequires: ptlib-devel >= 1:2.10.9
BuildRequires: sed >= 4.0
-BuildRequires: speex-devel >= 1:1.1.5
-%requires_eq pwlib
+BuildRequires: speex-devel >= 1:1.2
+BuildRequires: speexdsp-devel >= 1.2
+%{?with_srtp:BuildRequires: libsrtp2-devel}
+%if %{without sip_fax_only}
+BuildRequires: SDL-devel
+# libavcodec >= 51.11.0 libavutil
+BuildRequires: ffmpeg-devel
+%{?with_java:BuildRequires: jdk}
+BuildRequires: libgsm-devel
+BuildRequires: libtheora-devel
+%{?with_vpb:BuildRequires: vpb-devel}
+# ABI 0.102
+BuildRequires: libx264-devel >= 0.1.3-1.20101031_2245.1
+BuildRequires: webrtc-libilbc-devel
+BuildRequires: openssl-devel
+%{?with_ruby:BuildRequires: ruby-devel}
+BuildRequires: spandsp-devel
+BuildRequires: swig
+BuildRequires: unixODBC-devel
+%endif
+%requires_eq ptlib
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%description
-The OPAL project aims to create a full featured, interoperable,
-Open Source implementation of the ITU H.323 teleconferencing protocol
-that can be used by personal developers and commercial users without
+The OPAL project aims to create a full featured, interoperable, Open
+Source implementation of the ITU H.323 teleconferencing protocol that
+can be used by personal developers and commercial users without
charge.
%description -l pl.UTF-8
który może być używany przez użytkowników prywatnych i komercyjnych
bez opłat.
+%package lid-vpb
+Summary: Opal LID plugin for Voicetronix VPB devices
+Summary(pl.UTF-8): Wtyczka Opal LID dla urządzeń VPB firmy Voicetronix
+Group: Libraries
+Requires: %{name} = %{version}-%{release}
+
+%description lid-vpb
+Opal LID plugin for Voicetronix VPB devices.
+
+%description lid-vpb -l pl.UTF-8
+Wtyczka Opal LID dla urządzeń VPB firmy Voicetronix.
+
%package devel
Summary: Opal development files
Summary(pl.UTF-8): Pliki dla developerów Opal
Group: Development/Libraries
Requires: %{name} = %{version}-%{release}
+%{?with_capi:Requires: capi4k-utils-devel}
Requires: libstdc++-devel
-Requires: pwlib-devel
+%{?with_zrtp:Requires: libzrtp-devel}
+Requires: ptlib-devel >= 1:2.10.9
+Requires: speex-devel >= 1:1.2
+%{?with_srtp:Requires: libsrtp2-devel}
%description devel
-Header files and libraries for developing applications that use
-OPAL.
+Header files and libraries for developing applications that use OPAL.
%description devel -l pl.UTF-8
Pliki nagłówkowe i biblioteki konieczne do rozwoju aplikacji
%prep
%setup -q
-#patch0 -p1
-#patch1 -p1
+%patch0 -p1
+%patch1 -p1
%patch2 -p1
%patch3 -p1
+%patch4 -p1
+%patch5 -p1
+%patch6 -p1
+%patch7 -p1
%build
PWLIBDIR=%{_prefix}; export PWLIBDIR
OPAL_BUILD="yes"; export OPAL_BUILD
%{__aclocal}
%{__autoconf}
-%configure
+# don't run autoheader here, include/opal/buildopts.h.in is manually written
+cd plugins
+%{__aclocal}
+%{__autoconf}
+%{__autoheader}
+cd ..
+# Run grep '^OPAL_.*=' configure.ac|grep 'yes\|no' to check current defaults
+%configure \
+ CFLAGS="%{rpmcflags} -std=gnu++98" \
+ CXXFLAGS="%{rpmcxxflags} -std=gnu++98" \
+ %{?with_java:JDK_ROOT=%{_jvmdir}/java} \
+%if %{with sip_fax_only}
+ --disable-aec \
+ --disable-g711plc \
+ --disable-h224 \
+ --disable-h281 \
+ --disable-h323 \
+ --disable-h450 \
+ --disable-h460 \
+ --disable-h501 \
+ --disable-iax \
+ --disable-ivr \
+ --disable-lid \
+ --disable-plugins
+ --disable-rfc4103 \
+ --disable-rfc4175 \
+ --disable-sipim \
+ --disable-video \
+%else
+ --enable-ixj \
+%endif
+ %{!?with_capi:--disable-capi} \
+ %{!?with_celt:--disable-celt} \
+ %{!?with_java:--disable-java} \
+ %{!?with_ruby:--disable-ruby} \
+ %{!?with_srtp:--disable-srtp} \
+ %{?with_vpb:--enable-vpb} \
+%if %{with zrtp}
+ --enable-zrtp \
+ --with-bn-includedir=/usr/include \
+ --with-bn-libdir=%{_libdir} \
+ --with-zrtp-includedir=/usr/include/libzrtp \
+ --with-zrtp-libdir=%{_libdir}
+%endif
%{__make} %{?debug:debug}%{!?debug:opt} \
CC="%{__cc}" \
CPLUS="%{__cxx}" \
- OPTCCFLAGS="%{rpmcflags} %{!?debug:-DNDEBUG}"
+ OPTCCFLAGS="%{rpmcflags} %{!?debug:-DNDEBUG}" \
+ VERBOSE=1
%{__cp} -a */libopal* .
+%if %{without sip_fax_only}
%{__make} -C samples/simple %{?debug:debug}%{!?debug:opt} \
CC="%{__cc}" \
- CPLUS=%{__cxx} \
+ CPLUS="%{__cxx}" \
CFLAGS="%{rpmcflags} %{!?debug:-DNDEBUG} -I`pwd`/include" \
LDFLAGS="%{rpmldflags} -L`pwd` -lpt -lopal"
+%endif
%install
rm -rf $RPM_BUILD_ROOT
-install -d $RPM_BUILD_ROOT{%{_libdir},%{_includedir}/opal,%{_bindir},%{_datadir}/%{name}}
+install -d $RPM_BUILD_ROOT%{_bindir}
%{__make} install \
DESTDIR=$RPM_BUILD_ROOT
-# using cp as install won't preserve links
-cp -d lib/lib*.a $RPM_BUILD_ROOT%{_libdir}
-install version.h $RPM_BUILD_ROOT%{_includedir}/opal
-install samples/simple/obj_*/simpleopal $RPM_BUILD_ROOT%{_bindir}
-sed -i -e 's@\$(OPALDIR)/include@&/opal@' \
- -e 's@\$(OPALDIR)/lib@\$(OPALDIR)/%{_lib}@' $RPM_BUILD_ROOT%{_datadir}/opal/opal_inc.mak
+%{!?with_sip_fax_only:install samples/simple/obj/simpleopal $RPM_BUILD_ROOT%{_bindir}}
+
+# This needs to be done after 'make install'
+%{__sed} \
+ -e 's,^OPALDIR.*=.*$,OPALDIR\t\t\t\t= %{_libdir}/opal-%{version},;' \
+ -e 's,^OPAL_SRCDIR.*=.*$,OPAL_SRCDIR\t\t\t= %{_usrsrc}/debug/opal-%{version},;' \
+ -e 's,^OPAL_INCDIR.*=.*$,OPAL_INCDIR\t\t\t= %{_includedir}/opal,;' \
+ -e 's,^OPAL_LIBDIR.*=.*$,OPAL_LIBDIR\t\t\t= %{_libdir},;' \
+ opal_defs.mak > $RPM_BUILD_ROOT%{_includedir}/opal/opal_defs.mak
+cp -p opal_inc.mak $RPM_BUILD_ROOT%{_includedir}/opal
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(644,root,root,755)
-%attr(755,root,root) %{_bindir}/*
-%attr(755,root,root) %{_libdir}/lib*.so.*.*
+%attr(755,root,root) %{_libdir}/libopal.so.%{version}
+%if %{without sip_fax_only}
+%attr(755,root,root) %{_bindir}/simpleopal
+%dir %{_libdir}/opal-%{version}
+%dir %{_libdir}/opal-%{version}/codecs
+%dir %{_libdir}/opal-%{version}/codecs/audio
+%{?with_celt:%attr(755,root,root) %{_libdir}/opal-%{version}/codecs/audio/celt_ptplugin.so}
+%attr(755,root,root) %{_libdir}/opal-%{version}/codecs/audio/g722_ptplugin.so
+%attr(755,root,root) %{_libdir}/opal-%{version}/codecs/audio/g7221_ptplugin.so
+%attr(755,root,root) %{_libdir}/opal-%{version}/codecs/audio/g7222_ptplugin.so
+%attr(755,root,root) %{_libdir}/opal-%{version}/codecs/audio/g726_ptplugin.so
+%attr(755,root,root) %{_libdir}/opal-%{version}/codecs/audio/gsm0610_ptplugin.so
+%attr(755,root,root) %{_libdir}/opal-%{version}/codecs/audio/gsmamrcodec_ptplugin.so
+%attr(755,root,root) %{_libdir}/opal-%{version}/codecs/audio/iLBC_ptplugin.so
+%attr(755,root,root) %{_libdir}/opal-%{version}/codecs/audio/ima_adpcm_ptplugin.so
+%attr(755,root,root) %{_libdir}/opal-%{version}/codecs/audio/lpc10_ptplugin.so
+%attr(755,root,root) %{_libdir}/opal-%{version}/codecs/audio/silk_ptplugin.so
+%attr(755,root,root) %{_libdir}/opal-%{version}/codecs/audio/speex_ptplugin.so
+%dir %{_libdir}/opal-%{version}/codecs/video
+%attr(755,root,root) %{_libdir}/opal-%{version}/codecs/video/h261_vic_ptplugin.so
+%attr(755,root,root) %{_libdir}/opal-%{version}/codecs/video/h263_ffmpeg_ptplugin.so
+%attr(755,root,root) %{_libdir}/opal-%{version}/codecs/video/h264_video_pwplugin_helper
+%attr(755,root,root) %{_libdir}/opal-%{version}/codecs/video/h264_x264_ptplugin.so
+%attr(755,root,root) %{_libdir}/opal-%{version}/codecs/video/mpeg4_ffmpeg_ptplugin.so
+%attr(755,root,root) %{_libdir}/opal-%{version}/codecs/video/theora_ptplugin.so
+%dir %{_libdir}/opal-%{version}/fax
+%attr(755,root,root) %{_libdir}/opal-%{version}/fax/spandsp_ptplugin.so
+%endif
+%dir %{_libdir}/opal-%{version}/lid
+
+%if %{with vpb}
+%files lid-vpb
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/opal-%{version}/lid/vpb_ptplugin.so
+%endif
%files devel
%defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/*.so
-%{_includedir}/*
-%{_datadir}/%{name}
+%attr(755,root,root) %{_libdir}/libopal.so
+%{_includedir}/opal
+%{_pkgconfigdir}/opal.pc
%files static
%defattr(644,root,root,755)
-%{_libdir}/*.a
+%{_libdir}/libopal_s.a