diff --git a/pkgs/o/openkal-opensbi.lua b/pkgs/o/openkal-opensbi.lua new file mode 100644 index 0000000..5b92ca6 --- /dev/null +++ b/pkgs/o/openkal-opensbi.lua @@ -0,0 +1,53 @@ +-- openkal-opensbi — openkal on the RISC-V Supervisor Binary Interface. +-- +-- ⭐ The PORTABLE RISC-V backend, as distinct from a board's own. A board +-- backend writes to a device address, and that address is a board fact: the +-- same binary on a second RISC-V machine writes to something that is not a +-- UART and prints nothing. SBI's console is a call into firmware that already +-- knows the machine, so one image runs under OpenSBI on QEMU's `virt` and on a +-- real board without being rebuilt. +-- +-- ⚠️ NO `deps`. The only mcpp dependency is the specification package, declared +-- in this package's own manifest; nothing needs installing. +package = { + spec = "1", + namespace = "mcpplibs", + name = "openkal-opensbi", + description = "An implementation of openkal on the RISC-V Supervisor Binary Interface, portable across every machine whose firmware provides one", + licenses = {"Apache-2.0"}, + repo = "https://github.com/mcpplibs/openkal-opensbi", + type = "package", + + xpm = { + linux = { + ["0.1.0"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/openkal-opensbi/archive/refs/tags/0.1.0.tar.gz", + CN = "https://gitcode.com/mcpp-res/openkal-opensbi/releases/download/0.1.0/openkal-opensbi-0.1.0.tar.gz", + }, + sha256 = "6b5b81be59171f6f0d8e5d2e586a7f502479a2f309efb7fb1ab17c77a7579884", + }, + }, + macosx = { + ["0.1.0"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/openkal-opensbi/archive/refs/tags/0.1.0.tar.gz", + CN = "https://gitcode.com/mcpp-res/openkal-opensbi/releases/download/0.1.0/openkal-opensbi-0.1.0.tar.gz", + }, + sha256 = "6b5b81be59171f6f0d8e5d2e586a7f502479a2f309efb7fb1ab17c77a7579884", + }, + }, + windows = { + ["0.1.0"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/openkal-opensbi/archive/refs/tags/0.1.0.tar.gz", + CN = "https://gitcode.com/mcpp-res/openkal-opensbi/releases/download/0.1.0/openkal-opensbi-0.1.0.tar.gz", + }, + sha256 = "6b5b81be59171f6f0d8e5d2e586a7f502479a2f309efb7fb1ab17c77a7579884", + }, + }, + }, + + -- The package's own manifest, inside the tarball's wrap directory. + mcpp = "*/mcpp.toml", +} diff --git a/pkgs/o/openkal-uefi.lua b/pkgs/o/openkal-uefi.lua new file mode 100644 index 0000000..876809a --- /dev/null +++ b/pkgs/o/openkal-uefi.lua @@ -0,0 +1,53 @@ +-- openkal-uefi — openkal on UEFI Boot Services. +-- +-- ⚠️ The consuming project targets `x86_64-windows-gnu` with three link flags +-- (`-nostdlib`, `--subsystem,10`, `-e,efi_main`), which is not a workaround: a +-- UEFI application IS PE/COFF with subsystem 10, entered through the Microsoft +-- x64 calling convention, and that target already has both properties. +-- +-- An earlier analysis held that a new "PE freestanding" target would be needed +-- first. Measured otherwise — the flags above produce +-- IMAGE_SUBSYSTEM_EFI_APPLICATION with no DLL imports, verified booting under +-- OVMF. +package = { + spec = "1", + namespace = "mcpplibs", + name = "openkal-uefi", + description = "An implementation of openkal on UEFI Boot Services, for applications the firmware loads before an operating system exists", + licenses = {"Apache-2.0"}, + repo = "https://github.com/mcpplibs/openkal-uefi", + type = "package", + + xpm = { + linux = { + ["0.1.0"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/openkal-uefi/archive/refs/tags/0.1.0.tar.gz", + CN = "https://gitcode.com/mcpp-res/openkal-uefi/releases/download/0.1.0/openkal-uefi-0.1.0.tar.gz", + }, + sha256 = "2b8a5035cd738e8b23d4ece7ea70cf6d2aba8c8b1150c613c8f1deb94092035a", + }, + }, + macosx = { + ["0.1.0"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/openkal-uefi/archive/refs/tags/0.1.0.tar.gz", + CN = "https://gitcode.com/mcpp-res/openkal-uefi/releases/download/0.1.0/openkal-uefi-0.1.0.tar.gz", + }, + sha256 = "2b8a5035cd738e8b23d4ece7ea70cf6d2aba8c8b1150c613c8f1deb94092035a", + }, + }, + windows = { + ["0.1.0"] = { + url = { + GLOBAL = "https://github.com/mcpplibs/openkal-uefi/archive/refs/tags/0.1.0.tar.gz", + CN = "https://gitcode.com/mcpp-res/openkal-uefi/releases/download/0.1.0/openkal-uefi-0.1.0.tar.gz", + }, + sha256 = "2b8a5035cd738e8b23d4ece7ea70cf6d2aba8c8b1150c613c8f1deb94092035a", + }, + }, + }, + + -- The package's own manifest, inside the tarball's wrap directory. + mcpp = "*/mcpp.toml", +}