Skip to content

Latest commit

 

History

152 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

KalaMake

KalaMake is a multithreaded CLI for building libraries and executables with .kmake files and it is intended to use as a replacement for other build scripts and generators like Make, Premake, CMake or Ninja. KalaMake automatically uses all available threads from your CPU to always help speed up compilation, or you can fill the jobs field with your desired job count, multithreading is not supported by all languages.

KalaMake currently accepts several commands, most of which come from KalaCLI which is statically linked to KalaMake. Type --help to list all available commands and type --info commandnamehere to list info about that command.

This project relies on several external dependencies, they are not shipped inside this project, please make sure you have that repository cloned into a folder inside the same parent directory as this project folder before compiling this project from source.

Minimal compile example

To compile Kalamake on Windows without Kalamake:

//create the root build dir
mkdir build

//create the target binary dir
mkdir build\release-windows

//create the object dir
mkdir build\release-windows\obj

//go to the target binary dir
cd build\release-windows

//compile cpp files
for /r "..\..\src" %f in (*.cpp) do clang++ -DLIB_STATIC -std=c++20 -c "%f" -I"..\..\include" -I"..\..\..\external-shared\KalaHeaders\include" -I"..\..\..\external-shared\KalaCLI\include" -o "obj\%~nf.obj"

//link into executable
clang++ -o kalamake.exe "obj\*.obj" "..\..\..\external-shared\KalaCLI\release\kalacli.lib"

And on Linux:

//create the root build dir
mkdir build

//create the target binary dir
mkdir build\release-linux

//create the object dir
mkdir build\release-linux\obj

//go to the target binary dir
cd build\release-linux

//compile cpp files
for f in ../../src/**/*.cpp
    clang++ -DLIB_STATIC -std=c++20 -c "$f" -I"../../include" -I../../../external-shared/KalaHeaders/include -I"../../../external-shared/KalaCLI/include" -o obj/(basename $f .cpp).o
end

//link into executable
clang++ -o kalamake obj/*.o ../../../external-shared/KalaCLI/release/libkalacli.a

Supported languages

  • C (89 to 23)
  • C++ (14 to 26)
  • Java (8 to 26)
  • Zig (the language)
  • Python (Requires PyInstaller)
  • Rust (2015 to 2024)

Upcoming languages

  • C#
  • Go
  • Assembly
  • Odin
  • Nim

Currently only Windows (x86_64) and Linux (x86_64) are supported. There are no plans to support BSD, mobile, console, ARM, x86 or macOS.

Links

Donate on PayPal

Official Discord server

Official Youtube channel


Docs

How to build from source

How to use

External libraries

Lost Empire Entertainment and KalaKit ecosystem

About

C++20 CLI for compiling games, software and libraries in multiple languages with the .kmake format on Windows and Linux.

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages