-
Notifications
You must be signed in to change notification settings - Fork 1.1k
/
opam
37 lines (34 loc) · 2.45 KB
/
opam
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
opam-version: "2.0"
maintainer: "Nathan Holland <nholland94@gmail.com>"
authors: "Nathan Holland <nholland94@gmail.com>"
homepage: "https://github.com/nholland94/spirv-ocaml"
bug-reports: "https://github.com/nholland94/spirv-ocaml/issues"
license: "MIT"
dev-repo: "git+https://github.com/nholland94/spirv-ocaml.git"
build: [
[make "SpirV.cmo"] {!ocaml:native}
[make "SpirV.cma"] {!ocaml:native}
[make "SpirV.cmx"] {ocaml:native}
[make "SpirV.cmxa"] {ocaml:native}
[make "SpirV.cmxs"] {ocaml:native}
]
install: [make "install"]
remove: [make "uninstall"]
depends: [
"ocaml"
"ocamlfind" {build}
"batteries" {>= "2.5.0"}
]
synopsis: "SPIR-V Compiler Library"
description: """
This library provides a code-generated SPIR-V compiler for use in OCaml projects.
SpirV operations are specified using label variants (the number of spirv operations exceeds the ocaml type tag size, so a normal type variant won't work). SpirV enumerants are represented as OCaml type variants. For the case of flag types, enumerants are represented as a list of flags. Enumerants that normally specify extended operands wrap the extended operands as a tuple of arguments to the OCaml type constructor. Literal integers are represented with the `int32` type (for `int32` literals, add an `l` at the end; e.g. `10l`). Literal strings are represented with regular OCaml strings.
When specifying literal values to the `OpConstant` instruction, the values are wrapped with the `big_int_or_float` type (there is no check against the return type of `OpConstant` right now). The default op for a `OpSpecConstantOp` instruction is specified using the type `spec_op`. The values of `spec_op` are the valid `OpSpecConstantOp` instructions, except that the result type and result are removed and the `Op` prefix is removed (e.g. ```OpSpecConstantOp (type_id, result_id, `IAdd (constant_a, constant_b))``).
Extended instructions are currently implemented through a function abstraction. The extended instruction and it's operands are specified with a function in `OpExtInst` which has the type signature `unit -> int32 list`. The idea behind this is that extended instructions can be provided through other OCaml libraries which would return the compiled instruction and operands as a list of SpirV words."""
url {
src: "https://github.com/nholland94/spirv-ocaml/archive/1.1.2.tar.gz"
checksum: [
"sha256=8a79ad0ccfaa28cb3e37b74bb89c6af6ba4a648511848538025222f153858044"
"md5=61c0d0a064b4d30e8860d6890ff0aa08"
]
}