summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Kehayias <john.kehayias@protonmail.com>2022-07-27 23:45:22 -0400
committerGuix Patches Tester <>2022-07-28 05:14:16 +0100
commitda59b642d9413022fafcb200e8f63b67c09c51a4 (patch)
tree4e3290e6c18251d1d9224d034d3bac29e33fc2f1
parent96a149818181e68d2a182e98770c8967963dba8c (diff)
downloadguix-patches-da59b642d9413022fafcb200e8f63b67c09c51a4.tar
guix-patches-da59b642d9413022fafcb200e8f63b67c09c51a4.tar.gz
gnu: Add hashlink.issue-56806
* gnu/packages/haxe.scm (hashlink): New variable.
-rw-r--r--gnu/packages/haxe.scm93
1 files changed, 93 insertions, 0 deletions
diff --git a/gnu/packages/haxe.scm b/gnu/packages/haxe.scm
index 95de4c5e4b..6876dbdc6f 100644
--- a/gnu/packages/haxe.scm
+++ b/gnu/packages/haxe.scm
@@ -189,3 +189,96 @@ includes the compiler and library manager.")
(license (list license:gpl2+ ; the compiler itself
license:expat)))) ; the standard library
+(define-public hashlink
+ (package
+ (name "hashlink")
+ (version "1.12")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/HaxeFoundation/hashlink")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0i5f1mxpgjcdirx60kxrw0r0y15qh3j16a6fj8mzkq3k7j2hc982"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ ;; Remove bundled libraries (mainly used for Windows build).
+ (delete-file-recursively "include")
+ #t))))
+ (build-system gnu-build-system)
+ (arguments
+ ;; Looks like there are tests with CMake, but there is confusion if this
+ ;; is a supported way to build on Linux. See, e.g.
+ ;; https://github.com/HaxeFoundation/hashlink/issues/397. Also, the
+ ;; CMake build requires running the library manager haxelib in the build
+ ;; process for the tests, likely requiring network access.
+ ;; TODO: Use cmake-build-system instead and enable tests?
+ (list #:tests? #f
+ #:make-flags
+ ;; The built hdll libraries need help finding libhl.so.
+ #~(list (string-append "LIBFLAGS=-Wl,-rpath=" #$output "/lib"))
+ #:phases
+ #~(modify-phases %standard-phases
+ ;; Don't try to build the (removed) bundled libraries pcre,
+ ;; minimp3, and mikktspace. Provide the approriate paths and
+ ;; linking options.
+ (add-after 'unpack 'use-system-libs
+ (lambda _
+ (substitute* "Makefile"
+ (("\\$\\{PCRE\\}") "")
+ (("-lpthread") "-lpthread -lpcre16")
+ (("include/minimp3")
+ (string-append #$(this-package-input "minimp3") "/include"))
+ (("include/mikktspace ")
+ (string-append #$(this-package-input "mikktspace") "/include "))
+ (("include/mikktspace/mikktspace.o") "")
+ (("-lpng") "-lpng -lmikktspace"))))
+ (replace 'configure
+ (lambda* _
+ (setenv "CC" #$(cc-for-target))
+ (setenv "PREFIX" #$output)))
+ (replace 'build
+ (lambda* (#:key make-flags parallel-build? #:allow-other-keys)
+ (apply invoke "make" "-j" (if parallel-build?
+ (number->string (parallel-job-count))
+ "1")
+ make-flags))))))
+ (inputs (list glu
+ haxe
+ libjpeg-turbo
+ libpng
+ libuv
+ libvorbis
+ mbedtls-apache
+ mikktspace
+ minimp3
+ openal
+ pcre
+ sdl2
+ sqlite
+ zlib))
+ (native-inputs (list pkg-config))
+ (home-page "https://hashlink.haxe.org/")
+ (synopsis "Virtual machine for the Haxe language")
+ (description
+ "HashLink (HL) is a virtual machine for the Haxe language. It can run
+bytecode produced by the Haxe compiler, or converted to C by HL. The HashLink runtime
+includes the following features:
+@itemize
+@item Fully compatible with the Haxe specification
+@item Support file I/O, regular expressions, network, etc.
+@item Unicode strings by default
+@item Mark-and-not-sweep Garbage Collector
+@item x86 and x86-64 HL/C compilation
+@item x86 and x86-64 HL/JIT compilation
+@end itemize
+
+While the standard HL runtime provides support for Haxe standard library,
+HashLink also provides several libraries that can optionally be used to build
+HL-specific applications. This includes the FMT library for compression and
+image support and SDL for mouse, keyboard, and game controller support,
+OpenGL, and more.")
+ (license license:expat)))