osdk | ||
osdk-old | ||
.gitignore | ||
.mypyconfig | ||
LICENSE | ||
README.md | ||
requirements.txt | ||
setup.cfg | ||
setup.py |
osdk
The operating system development kit
Macros
@latest
Find the latest version of a command in the path.
"cc": {
"cmd": ["@latest", "clang"], // clang-14
/* ... */
@uname
Query the system for information about the current operating system.
"cc": {
"cmd": ["@uname", "machine"], // "x86_64"
/* ... */
@include
Include a file
@join
Join two objects
Example:
["@join", {"a": 1}, {"b": 2}] // {"a": 1, "b": 2}
@concat
Concatenate strings
Example:
["@concat", "a", "b", "c"] // "abc"
@exec
Execute a command and return the output
Example:
["@exec", "uname", "-m"] // "x86_64"
Manifest file format
id
The id of the package. This is used to identify the package in the manifest file.
Exemple:
{
"id": "hello"
}
type
The type of the package. This is used to identify the package in the manifest file.
Exemple:
{
"type": "exe"
}
description
The description of the package for the user.
Exemple:
{
"description": "Hello world"
}
deps
Dependencies of the package. The name listed here must be the same as the id of the package or member of a provide list.
Exemple:
{
"deps": [
"libc",
"libm"
]
}
provide
Alias for the package.
Exemple:
{
"provide": [
"hello"
]
}
requires
A list of requirements for the package check agaisnt the build props. If the requirement is not met, the package will be disabled.
Target file format
id
The id of the target. This is used to identify the target in the target file.
type
Should be target
.
props
A list of properties for the target.
Exemple:
{
"props": {
"arch": "x86_64",
"vendor": "pc",
"os": "linux",
"env": "gnu",
"abi": "elf",
"cpu": "x86_64",
"features": "fxsr,sse,sse2"
}
}
Theses values are exposed the translation unit as __osdk_{prop}__
.
tools
A list of tools for the target.
{
"tools": {
"cc": {
"cmd": ["@latest", "clang"],
"args": [
"-target",
"x86_64-unknown-windows",
"-ffreestanding",
"-fno-stack-protector",
"-fshort-wchar",
"-mno-red-zone"
]
},
"cxx": {
"cmd": ["@latest", "clang++"],
"args": [
"-target",
"x86_64-unknown-windows",
"-ffreestanding",
"-fno-stack-protector",
"-fshort-wchar",
"-mno-red-zone"
]
},
"ld": {
"cmd": ["@latest", "clang++"],
"args": [
"-target",
"x86_64-unknown-windows",
"-nostdlib",
"-Wl,-entry:efi_main",
"-Wl,-subsystem:efi_application",
"-fuse-ld=lld-link"
]
},
"ar": {
"cmd": ["@latest", "llvm-ar"],
"args": [
"rcs"
]
},
"as": {
"cmd": "nasm",
"args": [
"-f",
"win64"
]
}
}
}