summaryrefslogtreecommitdiff
path: root/zig.scm
diff options
context:
space:
mode:
Diffstat (limited to 'zig.scm')
-rw-r--r--zig.scm189
1 files changed, 0 insertions, 189 deletions
diff --git a/zig.scm b/zig.scm
deleted file mode 100644
index b3c009f..0000000
--- a/zig.scm
+++ /dev/null
@@ -1,189 +0,0 @@
-(define-module (zig)
- #:use-module (guix packages)
- #:use-module (guix utils)
- #:use-module (guix gexp)
- #:use-module (guix git-download)
- #:use-module ((guix licenses) #:prefix license:)
- #:use-module (guix build-system cmake)
- #:use-module (guix build utils)
- #:use-module (gnu packages)
- #:use-module (gnu packages compression)
- #:use-module (gnu packages gcc)
- #:use-module (gnu packages llvm))
-
-(define-public zig-0.11
- (package
- (name "zig")
- (version "0.11.0")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/ziglang/zig.git")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32 "0qh7c27cd4wcdjj0mbpkarvwypfk1js8hkyxs0z149qv75zkbrca"))
- (patches (search-patches "zig-do-not-link-against-librt.patch"
- "zig-Revert-Never-implicitly-add-rpaths-for-each-lib-dir-.patch"))))
- (build-system cmake-build-system)
- (arguments
- `(#:configure-flags
- (list ,@(if (%current-target-system)
- '(string-append "-DZIG_TARGET_TRIPLE="
- (%current-target-system))
- '())
- (string-append "-DZIG_TARGET_MCPU=baseline")
- "-DZIG_SHARED_LLVM=ON"
- (string-append "-DZIG_LIB_DIR=" (assoc-ref %outputs "out")
- "/lib/zig"))
- #:validate-runpath? #f ; TODO: zig binary can't find ld-linux.
- #:out-of-source? #f ; for tests
- ;; Tests fails in:
- ;; https://github.com/ziglang/zig/issues/18063
- #:tests? #f
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'set-env-variables
- (lambda* (#:key inputs native-inputs #:allow-other-keys)
- ;; Set CC, since the stage 2 zig relies on it to find the libc
- ;; installation, and otherwise silently links against its own.
- (setenv "CC" ,(cc-for-target))
- ;; Set cache dir, otherwise Zig looks for `$HOME/.cache'.
- (setenv "ZIG_GLOBAL_CACHE_DIR"
- (string-append (getcwd) "/zig-cache"))))
- (add-after 'patch-source-shebangs 'patch-more-shebangs
- (lambda* (#:key inputs #:allow-other-keys)
- ;; Zig uses information about /usr/bin/env to determine the
- ;; version of glibc and other data.
- (substitute* "lib/std/zig/system/NativeTargetInfo.zig"
- (("/usr/bin/env") (search-input-file inputs "/bin/env")))))
- (delete 'check)
- (add-after 'install 'check
- (lambda* (#:key outputs tests? #:allow-other-keys)
- (when tests?
- (invoke (string-append (assoc-ref outputs "out") "/bin/zig")
- "build" "test"
- ;; We're not testing the compiler bootstrap chain.
- ;; Non-native tests try to link and execute non-native
- ;; binaries.
- "-Dskip-non-native")))))))
- (inputs
- (list clang-16 ; Clang propagates llvm.
- lld-16
- zlib
- (list zstd "lib")))
- ;; Zig compiles fine with GCC, but also needs native LLVM libraries.
- (native-inputs
- (list llvm-16))
- (native-search-paths
- (list
- (search-path-specification
- (variable "C_INCLUDE_PATH")
- (files '("include")))
- (search-path-specification
- (variable "CPLUS_INCLUDE_PATH")
- (files '("include/c++" "include")))
- (search-path-specification
- (variable "LIBRARY_PATH")
- (files '("lib" "lib64")))))
- (synopsis "General purpose programming language and toolchain")
- (description "Zig is a general-purpose programming language and
-toolchain. Among other features it provides
-@itemize
-@item an Optional type instead of null pointers,
-@item manual memory management,
-@item generic data structures and functions,
-@item compile-time reflection and compile-time code execution,
-@item integration with C using zig as a C compiler, and
-@item concurrency via async functions.
-@end itemize")
- (home-page "https://github.com/ziglang/zig")
- (license license:expat)))
-
-
-(define-public zig
- (package
- (name "zig")
- (version "0.13.0")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/ziglang/zig.git")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32 "0ly8042lbsa8019g0d1jg4l06rxpq2530n9mijq66n4lmx7a5976"))
- (patches (search-patches "zig-do-not-link-against-librt.patch"))))
- (build-system cmake-build-system)
- (arguments
- `(#:configure-flags
- (list ,@(if (%current-target-system)
- '(string-append "-DZIG_TARGET_TRIPLE="
- (%current-target-system))
- '())
- (string-append "-DZIG_TARGET_MCPU=baseline")
- "-DZIG_SHARED_LLVM=ON"
- (string-append "-DZIG_LIB_DIR=" (assoc-ref %outputs "out")
- "/lib/zig"))
- #:validate-runpath? #f ; TODO: zig binary can't find ld-linux.
- #:out-of-source? #f ; for tests
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'set-env-variables
- (lambda* (#:key inputs native-inputs #:allow-other-keys)
- ;; Set CC, since the stage 2 zig relies on it to find the libc
- ;; installation, and otherwise silently links against its own.
- (setenv "CC" ,(cc-for-target))
- ;; Set cache dir, otherwise Zig looks for `$HOME/.cache'.
- (setenv "ZIG_GLOBAL_CACHE_DIR"
- (string-append (getcwd) "/zig-cache"))))
- (add-after 'patch-source-shebangs 'patch-more-shebangs
- (lambda* (#:key inputs #:allow-other-keys)
- ;; Zig uses information about /usr/bin/env to determine the
- ;; version of glibc and other data.
- (substitute* "lib/std/zig/system.zig"
- (("/usr/bin/env") (search-input-file inputs "/bin/env")))))
- (delete 'check)
- (add-after 'install 'check
- (lambda* (#:key outputs tests? #:allow-other-keys)
- (when tests?
- ;; Only run behavioral tests, no-cross
- (invoke (string-append (assoc-ref outputs "out") "/bin/zig")
- "test"
- "-I" "test"
- "test/behavior.zig")))))))
- (inputs
- (list (list gcc "lib")
- clang-18 ; Clang propagates llvm.
- lld-18
- zlib
- (list zstd "lib")))
- ;; Zig compiles fine with GCC, but also needs native LLVM libraries.
- (native-inputs
- (list llvm-18))
- (native-search-paths
- (list
- (search-path-specification
- (variable "C_INCLUDE_PATH")
- (files '("include")))
- (search-path-specification
- (variable "CPLUS_INCLUDE_PATH")
- (files '("include/c++" "include")))
- (search-path-specification
- (variable "LIBRARY_PATH")
- (files '("lib" "lib64")))))
- (synopsis "General purpose programming language and toolchain")
- (description "Zig is a general-purpose programming language and
-toolchain. Among other features it provides
-@itemize
-@item an Optional type instead of null pointers,
-@item manual memory management,
-@item generic data structures and functions,
-@item compile-time reflection and compile-time code execution,
-@item integration with C using zig as a C compiler, and
-@item concurrency via async functions.
-@end itemize")
- (home-page "https://github.com/ziglang/zig")
- (license license:expat)))