guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

01/08: gnu: Add FXDiv.


From: guix-commits
Subject: 01/08: gnu: Add FXDiv.
Date: Thu, 29 Jul 2021 16:01:09 -0400 (EDT)

civodul pushed a commit to branch master
in repository guix.

commit a9bc8a25eb9a5851062167a3475622ba6b1a8b9a
Author: Ludovic Courtès <ludovic.courtes@inria.fr>
AuthorDate: Thu Jul 29 15:42:10 2021 +0200

    gnu: Add FXDiv.
    
    * gnu/packages/maths.scm (fxdiv): New variable.
    * gnu/packages/patches/fxdiv-system-libraries.patch: New file.
    * gnu/local.mk (dist_patch_DATA): Add it.
---
 gnu/local.mk                                      |  1 +
 gnu/packages/maths.scm                            | 31 ++++++++++++++++
 gnu/packages/patches/fxdiv-system-libraries.patch | 44 +++++++++++++++++++++++
 3 files changed, 76 insertions(+)

diff --git a/gnu/local.mk b/gnu/local.mk
index c80a9af..e6a2e40 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1032,6 +1032,7 @@ dist_patch_DATA =                                         
\
   %D%/packages/patches/freedink-engine-fix-sdl-hints.patch     \
   %D%/packages/patches/freeimage-unbundle.patch                \
   %D%/packages/patches/fuse-overlapping-headers.patch                          
\
+  %D%/packages/patches/fxdiv-system-libraries.patch            \
   %D%/packages/patches/gajim-honour-GAJIM_PLUGIN_PATH.patch    \
   %D%/packages/patches/ganeti-deterministic-manual.patch       \
   %D%/packages/patches/ganeti-disable-version-symlinks.patch   \
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index d4e3aca..e170fd4 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -127,6 +127,7 @@
   #:use-module (gnu packages netpbm)
   #:use-module (gnu packages ocaml)
   #:use-module (gnu packages onc-rpc)
+  #:use-module (gnu packages parallel)
   #:use-module (gnu packages pcre)
   #:use-module (gnu packages popt)
   #:use-module (gnu packages perl)
@@ -6657,3 +6658,33 @@ high-performance multidimensional array containers for 
scientific computing.")
     (license (list license:artistic2.0
                    license:bsd-3
                    license:lgpl3+))))
+
+(define-public fxdiv
+  ;; There is currently no tag in this repo.
+  (let ((commit "63058eff77e11aa15bf531df5dd34395ec3017c8")
+        (version "0.0")
+        (revision "1"))
+    (package
+      (name "fxdiv")
+      (version (git-version version revision commit))
+      (home-page "https://github.com/Maratyszcza/FXdiv";)
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference (url home-page) (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0zwzh8gmbx4m6b18s5nf13b0dk5yjkd1fs8f421bl7fz5f9gjd9f"))
+                (patches (search-patches "fxdiv-system-libraries.patch"))))
+      (build-system cmake-build-system)
+      (inputs
+       `(("googletest" ,googletest)
+         ("googlebenchmark" ,googlebenchmark)))
+      (synopsis
+       "C++ library for division via fixed-point multiplication by inverse")
+      (description
+       "On modern CPUs and GPUs, integer division is several times slower than
+multiplication.  FXdiv implements an algorithm to replace an integer division
+with a multiplication and two shifts.  This algorithm improves performance
+when an application performs repeated divisions by the same divisor.")
+      (license license:expat))))
diff --git a/gnu/packages/patches/fxdiv-system-libraries.patch 
b/gnu/packages/patches/fxdiv-system-libraries.patch
new file mode 100644
index 0000000..eecfaf7
--- /dev/null
+++ b/gnu/packages/patches/fxdiv-system-libraries.patch
@@ -0,0 +1,44 @@
+This patch allows the build process to use the provided dependencies instead
+of adding their source as CMake sub-directories (in which case "make install"
+would install googletest's and googlebenchmark's libraries and headers).
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index bcae6b5..ff6710d 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -21,7 +21,7 @@ IF(FXDIV_BUILD_TESTS)
+ ENDIF()
+ 
+ # ---[ Download deps
+-IF(FXDIV_BUILD_TESTS AND NOT DEFINED GOOGLETEST_SOURCE_DIR)
++IF(FALSE)
+   MESSAGE(STATUS "Downloading Google Test to 
${CMAKE_BINARY_DIR}/googletest-source (define GOOGLETEST_SOURCE_DIR to avoid 
it)")
+   CONFIGURE_FILE(cmake/DownloadGoogleTest.cmake 
"${CMAKE_BINARY_DIR}/googletest-download/CMakeLists.txt")
+   EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
+@@ -31,7 +31,7 @@ IF(FXDIV_BUILD_TESTS AND NOT DEFINED GOOGLETEST_SOURCE_DIR)
+   SET(GOOGLETEST_SOURCE_DIR "${CMAKE_BINARY_DIR}/googletest-source" CACHE 
STRING "Google Test source directory")
+ ENDIF()
+ 
+-IF(FXDIV_BUILD_BENCHMARKS AND NOT DEFINED GOOGLEBENCHMARK_SOURCE_DIR)
++IF(FALSE)
+   MESSAGE(STATUS "Downloading Google Benchmark to 
${CMAKE_BINARY_DIR}/googlebenchmark-source (define GOOGLEBENCHMARK_SOURCE_DIR 
to avoid it)")
+   CONFIGURE_FILE(cmake/DownloadGoogleBenchmark.cmake 
"${CMAKE_BINARY_DIR}/googlebenchmark-download/CMakeLists.txt")
+   EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
+@@ -54,7 +54,7 @@ INSTALL(FILES include/fxdiv.h DESTINATION 
${CMAKE_INSTALL_INCLUDEDIR})
+ 
+ IF(FXDIV_BUILD_TESTS)
+   # ---[ Build google test
+-  IF(NOT TARGET gtest)
++  IF(FALSE)
+     SET(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
+     ADD_SUBDIRECTORY(
+       "${GOOGLETEST_SOURCE_DIR}"
+@@ -78,7 +78,7 @@ ENDIF()
+ 
+ IF(FXDIV_BUILD_BENCHMARKS)
+   # ---[ Build google benchmark
+-  IF(NOT TARGET benchmark)
++  IF(FALSE)
+     SET(BENCHMARK_ENABLE_TESTING OFF CACHE BOOL "" FORCE)
+     ADD_SUBDIRECTORY(
+       "${GOOGLEBENCHMARK_SOURCE_DIR}"



reply via email to

[Prev in Thread] Current Thread [Next in Thread]