[double-conversion] Build with cmake Add patch to use install paths in installed cmake files
Orion Poplawski
orion at fedoraproject.org
Wed Mar 11 15:06:42 UTC 2015
commit db75149c65ec2c9af65341c9415c4ccb3a8de03b
Author: Orion Poplawski <orion at cora.nwra.com>
Date: Thu Feb 26 09:50:22 2015 -0700
Build with cmake
Add patch to use install paths in installed cmake files
double-conversion-cmake.patch | 17 ++++++
double-conversion-soversion.patch | 106 ++++++++++++++++++++++++++++++++++++++
double-conversion.spec | 65 ++++++++++++++---------
3 files changed, 163 insertions(+), 25 deletions(-)
---
diff --git a/double-conversion-cmake.patch b/double-conversion-cmake.patch
new file mode 100644
index 0000000..3c2044f
--- /dev/null
+++ b/double-conversion-cmake.patch
@@ -0,0 +1,17 @@
+diff --git a/double-conversionConfig.cmake.in b/double-conversionConfig.cmake.in
+index bbe784b..6c967f4 100644
+--- a/double-conversionConfig.cmake.in
++++ b/double-conversionConfig.cmake.in
+@@ -8,10 +8,9 @@ get_filename_component(double-conversion_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}"
+ if(EXISTS "${double-conversion_CMAKE_DIR}/CMakeCache.txt")
+ include("${double-conversion_CMAKE_DIR}/double-conversionBuildTreeSettings.cmake")
+ else()
+- set(double-conversion_INCLUDE_DIRS
+- "${double-conversion_CMAKE_DIR}/@CONF_REL_INCLUDE_DIR@/include/double-conversion")
++ set(double-conversion_INCLUDE_DIRS "@INCLUDE_INSTALL_DIR@/double-conversion")
+ endif()
+
+-include("${double-conversion_CMAKE_DIR}/double-conversionLibraryDepends.cmake")
++include("@LIB_INSTALL_DIR@/cmake/double-conversion/double-conversionLibraryDepends.cmake")
+
+ set(double-conversion_LIBRARIES double-conversion)
diff --git a/double-conversion-soversion.patch b/double-conversion-soversion.patch
new file mode 100644
index 0000000..f14f0fc
--- /dev/null
+++ b/double-conversion-soversion.patch
@@ -0,0 +1,106 @@
+commit c7734598e2ee084c17e1b8a41daa569fb021d593
+Author: Florian Loitsch <florian at loitsch.com>
+Date: Sat Mar 8 15:02:13 2014 +0100
+
+ Support shared libraries with Cmake. Improve README.
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 5bf382e..7b09be0 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -2,8 +2,12 @@ cmake_minimum_required(VERSION 2.8)
+ project(double-conversion)
+
+ # pick a version #
+-set(double-conversion_VERSION
+- 1.1.1)
++set(double-conversion_VERSION 2.0.1)
++set(double-conversion_SOVERSION_MAJOR 1)
++set(double-conversion_SOVERSION_MINOR 0)
++set(double-conversion_SOVERSION_PATCH 0)
++set(double-conversion_SOVERSION
++ ${double-conversion_SOVERSION_MAJOR}.${double-conversion_SOVERSION_MINOR}.${double-conversion_SOVERSION_PATCH})
+
+ # set paths for install -- empty initially
+ # Offer the user the choice of overriding the installation directories
+diff --git a/Changelog b/Changelog
+index 516f6d2..526756b 100644
+--- a/Changelog
++++ b/Changelog
+@@ -1,3 +1,8 @@
++2014-03-08:
++ Update version number for cmake.
++ Support shared libraries with cmake.
++ Add build instructions to the README.
++
+ 2014-01-12:
+ Tagged v2.0.1.
+ Fix compilation for ARMv8 64bit (used wrong define).
+diff --git a/README b/README
+index f186b42..167f9c5 100644
+--- a/README
++++ b/README
+@@ -9,3 +9,46 @@ it can be used more easily in other projects.
+
+ There is extensive documentation in src/double-conversion.h. Other examples can
+ be found in test/cctest/test-conversions.cc.
++
++
++Building
++========
++
++This library can be built with scons [0] or cmake [1].
++The checked-in Makefile simply forwards to scons, and provides a
++shortcut to run all tests:
++
++ make
++ make test
++
++Scons
++-----
++
++The easiest way to install this library is to use `scons`. It builds
++the static and shared library, and is set up to install those at the
++correct locations:
++
++ scons install
++
++Use the `DESTDIR` option to change the target directory:
++
++ scons DESTDIR=alternative_directory install
++
++Cmake
++-----
++
++To use cmake run `cmake .` in the root directory. This overwrites the
++existing Makefile.
++
++Use `-DBUILD_SHARED_LIBS=ON` to enable the compilation of shared libraries.
++Note that this disables static libraries. There is currently no way to
++build both libraries at the same time with cmake.
++
++Use `-DBUILD_TESTING=ON` to build the test executable.
++
++ cmake . -DBUILD_TESTING=ON
++ make
++ test/cctest/cctest --list | tr -d '<' | xargs test/cctest/cctest
++
++[0]: http://www.scons.org
++[1]: http://www.cmake.org
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index 7f5c985..0da50b1 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -29,6 +29,12 @@ ${headers}
+ set_target_properties(double-conversion
+ PROPERTIES PUBLIC_HEADER "${headers}")
+
++if (BUILD_SHARED_LIBS)
++ set_target_properties(double-conversion
++ PROPERTIES VERSION ${double-conversion_SOVERSION}
++ SOVERSION ${double-conversion_SOVERSION_MAJOR})
++endif()
++
+ #
+ # install command to set up library install
+ # given the above PUBLIC_HEADER property set, this
diff --git a/double-conversion.spec b/double-conversion.spec
index 5b1a72a..a135a90 100644
--- a/double-conversion.spec
+++ b/double-conversion.spec
@@ -3,12 +3,17 @@
Summary: Library providing binary-decimal and decimal-binary routines for IEEE doubles
Name: double-conversion
Version: 2.0.1
-Release: 3%{?dist}
+Release: 4%{?dist}
License: BSD
Group: Development/Libraries
Source0: http://double-conversion.googlecode.com/files/%{name}-%{version}.tar.gz
-URL: http://code.google.com/p/double-conversion
-BuildRequires: scons >= 2.3.0
+# Upstream patch to support SOVERSION
+Patch0: double-conversion-soversion.patch
+# Use install paths in installed cmake files
+# https://github.com/floitsch/double-conversion/pull/9
+Patch1: double-conversion-cmake.patch
+URL: https://github.com/floitsch/double-conversion
+BuildRequires: cmake
%description
Provides binary-decimal and decimal-binary routines for IEEE doubles.
@@ -38,36 +43,43 @@ Static %{name} library.
%prep
%setup -q -c %{name}-%{version}
+%patch0 -p1 -b .soversion
+%patch1 -p1 -b .cmake
+# Fix up install locations
+# https://github.com/floitsch/double-conversion/issues/8
+sed -i -e s,lib/CMake,%{_lib}/cmake, CMakeLists.txt
+sed -i -e s,/lib,/%{_lib}, src/CMakeLists.txt
%build
-scons %{?_smp_mflags} \
- CXXFLAGS="%{optflags}" \
- VERSION="%{version}"
-
-# With scons 2.3.0 setting the version fails without this
-# http://comments.gmane.org/gmane.comp.programming.tools.scons.user/24448
-rm -f libdouble-conversion.so*
-
-%install
-install -d %{buildroot}{%{_libdir},%{_includedir}/%{name}}
+mkdir -p build-shared
+pushd build-shared
+ %cmake -DBUILD_TESTING=ON ..
+ make %{_smp_mflags}
+popd
%if %{with static_libs}
-%global target install
-%else
-%global target install-shared
+mkdir -p build-static
+pushd build-static
+ CXXFLAGS="%{optflags} -fPIC" %cmake -DBUILD_SHARED_LIBS=NO ..
+ make %{_smp_mflags}
+popd
%endif
-scons %{target} \
- CXXFLAGS="%{optflags}" \
- libsuffix=%{_lib} \
- prefix=%{_prefix} \
- DESTDIR=%{buildroot}
+%install
+%if %{with static_libs}
+pushd build-static
+ make install DESTDIR=%{buildroot}
+popd
+%endif
-cp -p src/*.h %{buildroot}%{_includedir}/%{name}
+pushd build-shared
+ make install DESTDIR=%{buildroot}
+popd
%check
-scons CXXFLAGS="%{optflags}" run_tests
-./run_tests --list | tr -d '<' | xargs ./run_tests
+pushd build-shared
+ ctest -V
+popd
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
@@ -78,15 +90,18 @@ scons CXXFLAGS="%{optflags}" run_tests
%files devel
%{_libdir}/libdouble-conversion.so
+%{_libdir}/cmake/%{name}
%{_includedir}/%{name}
%if %{with static_libs}
%files static
%{_libdir}/libdouble-conversion.a
-%{_libdir}/libdouble-conversion_pic.a
%endif
%changelog
+* Wed Mar 11 2015 Orion Poplawski <orion at cora.nwra.com> - 2.0.1-4
+- Build with cmake
+
* Sat Aug 16 2014 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 2.0.1-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
More information about the scm-commits
mailing list