🪄​ The *magical* build system and package manager
Go to file
2023-05-29 00:55:07 +02:00
.github/workflows meta: Renamed osdk -> cutekit + improved logging + better error handling. 2023-05-28 11:28:52 +02:00
cutekit meta: Renamed osdk -> cutekit + improved logging + better error handling. 2023-05-28 11:28:52 +02:00
.gitignore Initial commit 2022-06-26 00:21:53 +02:00
.mypyconfig Initial commit. 2022-06-26 00:22:53 +02:00
LICENSE chore: update license 2023-05-29 00:55:07 +02:00
logo.png meta: Renamed osdk -> cutekit + improved logging + better error handling. 2023-05-28 11:28:52 +02:00
README.md meta: Renamed osdk -> cutekit + improved logging + better error handling. 2023-05-28 11:28:52 +02:00
requirements.txt fix: better init command 2023-05-27 23:42:57 +02:00
setup.cfg Add setup.cfg for packaging 2022-06-26 12:29:24 +02:00
setup.py meta: Renamed osdk -> cutekit + improved logging + better error handling. 2023-05-28 11:28:52 +02:00




CuteKit

The Cute build system and package manager




Table of contents

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"
}

enabledIf

A list of requirements for the package check agaisnt the build props. If the requirement is not met, the package will be disabled.

{
    "enabledIf": {
        "freestanding": [
            false
        ]
    }
}

requires

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:

{
    "requires": [
        "libc",
        "libm"
    ]
}

provides

Alias for the package.

Exemple:

{
    "provides": [
        "hello"
    ]
}

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 __ck_{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"
            ]
        }
    }
}