Subject: [bug#65848] [PATCH 1/1] gnu: Add asl.

From: Simon South <[email-masked]>
Date: Sat, 9 Sep 2023 19:07:37 -0400

* gnu/packages/assembly.scm (asl): New variable.
---
 gnu/packages/assembly.scm | 61 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 61 insertions(+)

diff --git a/gnu/packages/assembly.scm b/gnu/packages/assembly.scm
index 81e38c3f41..f8777ede31 100644
--- a/gnu/packages/assembly.scm
+++ b/gnu/packages/assembly.scm
@@ -13,6 +13,7 @@
 ;;; Copyright © 2021 Guillaume Le Vaillant <[email-masked]>
 ;;; Copyright © 2022 Felix Gruber <[email-masked]>
 ;;; Copyright © 2022 Andy Tai <[email-masked]>
+;;; Copyright © 2023 Simon South <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -33,6 +34,7 @@ (define-module (gnu packages assembly)
   #:use-module (guix build-system meson)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
+  #:use-module ((guix build utils) #:select (parallel-job-count))
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module ((guix licenses) #:prefix license:)
@@ -55,10 +57,69 @@ (define-module (gnu packages assembly)
   #:use-module (gnu packages python)
   #:use-module (gnu packages sphinx)
   #:use-module (gnu packages shells)
+  #:use-module (gnu packages tex)
   #:use-module (gnu packages xml)
   #:use-module ((guix utils)
                 #:select (%current-system cc-for-target)))
 
+(define-public asl
+  (let ((build "247"))
+    (package
+      (name "asl")
+      (version (string-append "1.42-beta-" build))
+      (source
+       (origin
+         (method url-fetch)
+         (uri (string-append
+               "http://john.ccac.rwth-aachen.de:8000/ftp/as/source/c_version/"
+               "asl-current-142-bld" build ".tar.bz2"))
+         (sha256
+          (base32 "1qgz5yzg50vpwzrjqvw8bgnvm67dqhfb8ldxyqwaqmrj3icshp5s"))))
+      (build-system gnu-build-system)
+      (arguments
+       (list
+        #:make-flags #~(list "V=1")     ; ensures output during "check" phase
+        #:phases
+        #~(modify-phases %standard-phases
+            (delete 'bootstrap)
+            (replace 'configure
+              (lambda* (#:key target #:allow-other-keys)
+                (copy-file "Makefile.def-samples/Makefile.def-unknown-linux"
+                           "Makefile.def")
+
+                ;; Use the cross-compilation tools when cross-compiling.
+                (when #$(%current-target-system)
+                  (substitute* "Makefile.def"
+                    (("^(TARG_(CC|LD) = ).*" all prefix)
+                     (string-append prefix target "-gcc\n"))))
+
+                ;; Set the output directories appropriately.
+                (substitute* "Makefile.def"
+                  (("^(DOCDIR = ).*" all prefix)
+                   (string-append prefix #$output:doc "/share/doc/" #$name))
+                  (("/usr/local")
+                   #$output))))
+            (add-after 'check 'build-doc
+              (lambda* (#:key parallel-build? #:allow-other-keys)
+                (invoke "make"
+                        "-j" (if parallel-build?
+                                 (number->string (parallel-job-count))
+                                 "1")
+                        "docs"))))
+        #:test-target "test"))
+      (native-inputs
+       (list (texlive-updmap.cfg (list texlive-german texlive-hyperref))))
+      (outputs '("out" "doc"))
+      (home-page "http://john.ccac.rwth-aachen.de:8000/as/")
+      (synopsis
+       "AS macro cross-assembler for microprocessors and microcontrollers")
+      (description
+       "AS is a portable macro cross-assembler targeting a wide range of
+microprocessors and microcontrollers, including devices from Intel, Motorola,
+MOS Technology, Hitachi, Fujitsu, NEC, Texas Instruments, Zilog and many other
+manufacturers.")
+      (license (list license:gpl2 license:gpl3)))))
+
 (define-public nasm
   (package
     (name "nasm")
-- 
2.41.0