summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--var/spack/repos/builtin/packages/cbqn/package.py62
1 files changed, 62 insertions, 0 deletions
diff --git a/var/spack/repos/builtin/packages/cbqn/package.py b/var/spack/repos/builtin/packages/cbqn/package.py
new file mode 100644
index 0000000000..7dd69d90d2
--- /dev/null
+++ b/var/spack/repos/builtin/packages/cbqn/package.py
@@ -0,0 +1,62 @@
+# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other
+# Spack Project Developers. See the top-level COPYRIGHT file for details.
+#
+# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+
+from spack.package import *
+
+
+class Cbqn(MakefilePackage):
+ """A BQN implementation in C"""
+
+ # Alternative homepage not specific to this implementation:
+ # https://mlochbaum.github.io/BQN/index.html
+ homepage = "https://github.com/dzaima/CBQN"
+ git = "https://github.com/dzaima/CBQN"
+
+ maintainers("ashermancinelli")
+
+ # Licenses listed in the order they appear in the repo's licensing section
+ # https://github.com/dzaima/CBQN/tree/master#licensing
+ license(
+ "MIT AND Apache-2.0 AND BSL-1.0 AND LGPL-3.0-only AND GPL-3.0-only AND MPL-2.0",
+ checked_by="ashermancinelli",
+ )
+
+ version("master", branch="master")
+ version("develop", branch="develop")
+ version("0.7.0", tag="v0.7.0")
+
+ depends_on("c", type="build")
+
+ variant("repl", default=True, description="Enable built-in REPL")
+ variant("ffi", default=True, description="Enable FFI support")
+ variant(
+ "build_type",
+ values=("o3n", "o3", "o3g", "c", "shared-o3", "debug", "static-bin", "static-lib"),
+ default="o3",
+ multi=False,
+ description="Make target to use.",
+ )
+
+ depends_on("cxx", when="+repl", type="build")
+ depends_on("libffi", when="+ffi")
+
+ def build(self, spec, prefix):
+ make_args = []
+ make_args.append("FFI={0}".format(int(spec.satisfies("+ffi"))))
+ make_args.append("REPLXX={0}".format(int(spec.satisfies("+repl"))))
+
+ # Makes logs easier to read
+ make_args.append("notui=1")
+
+ # The build types map directly to the make target
+ make_args.append(spec.variants["build_type"].value)
+
+ if spec.version not in ("develop", "master"):
+ make_args.append("version={0}".format(spec.version))
+
+ make(*make_args)
+
+ def install(self, spec, prefix):
+ make("PREFIX={0}".format(prefix), "install")