gnu: Add ISPC.
* gnu/packages/c.scm (ispc): New variable. Signed-off-by: 宋文武 <iyzsong@member.fsf.org>
This commit is contained in:
parent
4557c83a7d
commit
af6ed2fc14
@ -17,6 +17,7 @@
|
||||
;;; Copyright © 2022 Artyom V. Poptsov <poptsov.artyom@gmail.com>
|
||||
;;; Copyright © 2022 Ekaitz Zarraga <ekaitz@elenq.tech>
|
||||
;;; Copyright © 2022 ( <paren@disroot.org>
|
||||
;;; Copyright © 2023 zamfofex <zamfofex@twdb.moe>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@ -57,7 +58,9 @@
|
||||
#:use-module (gnu packages guile)
|
||||
#:use-module (gnu packages llvm)
|
||||
#:use-module (gnu packages lua)
|
||||
#:use-module (gnu packages m4)
|
||||
#:use-module (gnu packages multiprecision)
|
||||
#:use-module (gnu packages ncurses)
|
||||
#:use-module (gnu packages pcre)
|
||||
#:use-module (gnu packages python)
|
||||
#:use-module (gnu packages python-xyz)
|
||||
@ -1424,3 +1427,65 @@ string.h, but with a utf8* prefix instead of the str* prefix.")
|
||||
(description
|
||||
"This package provides a header-only unit testing library for C/C++.")
|
||||
(license license:unlicense))))
|
||||
|
||||
(define-public ispc
|
||||
(package
|
||||
(name "ispc")
|
||||
(version "1.19.0")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/ispc/ispc")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "0yhcgyzjlrgs920lm0l6kygj2skanfb6qkxbdgm69r8c2xkzkaa3"))))
|
||||
(inputs (list ncurses))
|
||||
(native-inputs (list bison clang flex m4 python))
|
||||
(build-system cmake-build-system)
|
||||
(supported-systems
|
||||
'("x86_64-linux" "i686-linux" "aarch64-linux" "armhf-linux"))
|
||||
(arguments
|
||||
`(#:tests? #f
|
||||
#:configure-flags
|
||||
`(,,(string-append "-DCMAKE_C_COMPILER=" (cc-for-target))
|
||||
,,(string-append "-DCMAKE_CXX_COMPILER=" (cxx-for-target))
|
||||
,(string-append "-DCLANG_EXECUTABLE="
|
||||
(assoc-ref %build-inputs "clang")
|
||||
"/bin/clang")
|
||||
,(string-append "-DCLANGPP_EXECUTABLE="
|
||||
(assoc-ref %build-inputs "clang")
|
||||
"/bin/clang++"))
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-before 'configure 'patch-curses-requirement
|
||||
(lambda _
|
||||
(substitute* "CMakeLists.txt"
|
||||
(("\\bCURSES_CURSES_LIBRARY\\b")
|
||||
"CURSES_LIBRARY"))))
|
||||
;; Note: This works around the following issue:
|
||||
;; <https://github.com/ispc/ispc/issues/1865>
|
||||
;; Because GCC in Guix does not have multilib support.
|
||||
(add-before 'configure 'patch-target-archs
|
||||
(lambda _
|
||||
(substitute* "cmake/GenerateBuiltins.cmake"
|
||||
(("\\bforeach \\(bit 32 64\\)")
|
||||
,(if (target-64bit?)
|
||||
"foreach (bit 64)"
|
||||
"foreach (bit 32)"))
|
||||
(("\\bforeach \\(arch .*?\\)")
|
||||
,(if (target-x86?)
|
||||
"foreach (arch \"x86\")"
|
||||
"foreach (arch \"arm\")"))
|
||||
(("\\bforeach \\(os_name \"windows\" .*?\\)")
|
||||
"foreach (os_name \"linux\")")))))))
|
||||
(synopsis "Implicit SPMD Program Compiler")
|
||||
(description
|
||||
"ISPC is a compiler for a variant of the C programming language, with
|
||||
extensions for single program, multiple data programming. Under the SPMD
|
||||
model, the programmer writes a program that generally appears to be a regular
|
||||
serial program, though the execution model is actually that a number of
|
||||
program instances execute in parallel on the hardware.")
|
||||
(home-page "https://github.com/ispc/ispc")
|
||||
(license license:bsd-3)))
|
||||
|
Loading…
Reference in New Issue
Block a user