[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