From db75149c65ec2c9af65341c9415c4ccb3a8de03b Mon Sep 17 00:00:00 2001 From: Orion Poplawski Date: Thu, 26 Feb 2015 09:50:22 -0700 Subject: [PATCH] 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(-) create mode 100644 double-conversion-cmake.patch create mode 100644 double-conversion-soversion.patch 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 +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 - 2.0.1-4 +- Build with cmake + * Sat Aug 16 2014 Fedora Release Engineering - 2.0.1-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild