diff --git a/CMakeLists.txt b/CMakeLists.txt index eb0d716..cc9116d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -102,14 +102,5 @@ install(FILES DESTINATION ${CONFIG_PACKAGE_LOCATION} ) -# CPack settings -set(CPACK_PACKAGE_NAME "bcg729") -set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION}) -set(CPACK_SOURCE_GENERATOR "TGZ") -set(CPACK_SOURCE_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") -set(CPACK_SOURCE_IGNORE_FILES - "^${CMAKE_BINARY_DIR}" - "/\\\\..+" -) +add_subdirectory(build) -include(CPack) diff --git a/build/CMakeLists.txt b/build/CMakeLists.txt new file mode 100644 index 0000000..c5e547e --- /dev/null +++ b/build/CMakeLists.txt @@ -0,0 +1,48 @@ +############################################################################ +# CMakeLists.txt +# Copyright (C) 2017-2018 Belledonne Communications, Grenoble France +# +############################################################################ +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +############################################################################ + +if(NOT CPACK_PACKAGE_NAME) + set(CPACK_PACKAGE_NAME "${PROJECT_NAME}") +ENDIF() + +set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/../COPYING") + +set(CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR}) +set(CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR}) +set(CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH}) + +set(CPACK_PACKAGE_FILE_NAME ${CPACK_PACKAGE_NAME}-${PROJECT_VERSION}) + +set(CPACK_SOURCE_GENERATOR "TGZ") +set(CPACK_SOURCE_IGNORE_FILES + "${CMAKE_BINARY_DIR}" + "^${PROJECT_SOURCE_DIR}/.git*" +) + +message("-- Package file name is ${CPACK_PACKAGE_FILE_NAME}" ) + +set(CPACK_SOURCE_PACKAGE_FILE_NAME ${CPACK_PACKAGE_FILE_NAME}) + +configure_file("rpm/bcg729.spec.cmake" "${PROJECT_SOURCE_DIR}/bcg729.spec" @ONLY) + +include(CPack) + diff --git a/build/rpm/bcg729.spec.cmake b/build/rpm/bcg729.spec.cmake new file mode 100755 index 0000000..d178c63 --- /dev/null +++ b/build/rpm/bcg729.spec.cmake @@ -0,0 +1,92 @@ +# -*- rpm-spec -*- + +%define _prefix @CMAKE_INSTALL_PREFIX@ +%define pkg_prefix @BC_PACKAGE_NAME_PREFIX@ + +# re-define some directories for older RPMBuild versions which don't. This messes up the doc/ dir +# taken from https://fedoraproject.org/wiki/Packaging:RPMMacros?rd=Packaging/RPMMacros +%define _datarootdir %{_prefix}/share +%define _datadir %{_datarootdir} +%define _docdir %{_datadir}/doc + +%define build_number 1 + + + +Name: @CPACK_PACKAGE_NAME@ +Version: @PROJECT_VERSION@ +Release: %{build_number}%{?dist} +Summary: Bcg729 is an opensource implementation of both encoder and decoder of the ITU G729 Annex A/B speech codec. + +Group: Applications/Communications +License: GPL +URL: http://www.linphone.org +Source0: %{name}-%{version}.tar.gz +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot + +Requires: %{pkg_prefix}bctoolbox + +%description + +Bcg729 is an opensource implementation of both encoder and decoder of the ITU G729 Annex A/B speech codec. + +The library written in C 99 is fully portable and can be executed on many platforms including both ARM and x86 processors. +libbcg729 supports concurrent channels encoding/decoding for multi call application such as conferencing. +This project was initially developed as part of Mediastreamer2, the Linphone's media processing engine. +This is why it also contains the glue to be integrated in Linphone/Mediastreamer2. + + +%package devel +Summary: Development libraries for bcg729 +Group: Development/Libraries +Requires: %{name} = %{version}-%{release} + +%description devel +Libraries and headers required to develop software with bcg729 + +%if 0%{?rhel} && 0%{?rhel} <= 7 +%global cmake_name cmake3 +%define ctest_name ctest3 +%else +%global cmake_name cmake +%define ctest_name ctest +%endif + +# This is for debian builds where debug_package has to be manually specified, whereas in centos it does not +%define custom_debug_package %{!?_enable_debug_packages:%debug_package}%{?_enable_debug_package:%{nil}} +%custom_debug_package + +%prep +%setup -n %{name}-%{version} + +%build +%{expand:%%%cmake_name} . -DCMAKE_BUILD_TYPE=@CMAKE_BUILD_TYPE@ -DCMAKE_INSTALL_LIBDIR:PATH=%{_libdir} -DCMAKE_PREFIX_PATH:PATH=%{_prefix} +make %{?_smp_mflags} + +%install +make install DESTDIR=%{buildroot} + +%check +%{ctest_name} -V %{?_smp_mflags} + +%clean +rm -rf $RPM_BUILD_ROOT + +%post -p /sbin/ldconfig + +%postun -p /sbin/ldconfig + + +%files +%defattr(-,root,root) +%doc AUTHORS ChangeLog COPYING NEWS README.md +%{_libdir}/*.so.* + +%files devel +%defattr(-,root,root) +%{_includedir}/bcg729 +%{_libdir}/libbcg729.a +%{_libdir}/libbcg729.so +%{_datadir}/Bcg729/cmake/Bcg729Config*.cmake +%{_datadir}/Bcg729/cmake/Bcg729Targets*.cmake +