Skip to content

KISSB Build System

Welcome to KISSB, a pragmatic, script-oriented build system powered by the Tcl scripting language.

KISSB is designed to make build system creation intuitive and straightforward. It uses clear, familiar commands that align with common development practices, providing robust tools for everyday tasks like compiling, packaging, and releasing. At the same time, its API remains simple enough to let you easily tailor workflows to your specific project needs without unnecessary complexity.

Our primary goal isn't to rewrite build systems for every existing programming language. Instead, we aim to offer a flexible, scripted build environment that can effectively orchestrate your existing toolchains or, where beneficial, provide a viable alternative.

A quick example of a build to run a python script:

package require kissb.python3

log.info "Welcome to this project build script"


# Load a python venv (python should be installed)
python3.venv.init {
    log.info "Installing Requirements"
    python3.venv.require PySide6
}

# Run
python3.venv.run.script main.py
import sys
from PySide6.QtCore import Qt
from PySide6.QtWidgets import QApplication, QLabel

if __name__ == "__main__":
    app = QApplication(sys.argv)
    label = QLabel("Hello World", alignment=Qt.AlignCenter)
    label.show()
    sys.exit(app.exec())

Then from the command line:

./kissbw

Language Agnostic Build System

KISSB is a flexible TCL scripting library aimed at building projects no matter which language, tool or output is desired.

It is distributed as a script library, standalone executable or docker image.

log.info "Loading script with commands"
source mylib.tcl

foo # Will print success message
def foo args {
    log.success "Done!"
}
## mylib.lib.tcl is loaded automatically as well-know named file
foolib # Will print success message

## mypackage.pkg.tcl can be loaded on-demand
package require mypackage 1.0

foopackage
# This file is loaded automatically
def foolib args {
    log.success "Done!"
}
package provide mypackage 1.0

# This file is loaded automatically
def foopackage args {
    log.success "Done!"
}

Flexible Language

Based on the TCL language, KISSB offers a very flexible API to create build work flows.

You can use or create build commands, hackable workflows and share your script libraries in your project, user space or directly through git.

KISSB comes with a set of well-known locations and file names for packages and libraries to quickly load scripts.