kjam build tool
WARNINGThis web site is designed for Firefox, Internet Explorer 6+, Safari, and Opera 9+. We apologize if this site does not render correctly on your browser.
About
Performance
News
Links
Documentation
Using this Manual
Quick Start Guide
Tutorial
KJam Reference
Jambase Reference
Comparison with Jam/MR
F.A.Q.
Kjams main jamfile
Kjams actions jamfile
simple driver
another rules jamfile
Download
KJam is the world's fastest build tool. \n KJam is an efficient build tool. It runs on Windows and Linux. \n Reduces your incremental build time. Improves compile time.\n KJam is a distributed build tool.\n KJam is the fastest build system.\n It can be called a distributed build system or distributed build software.\n It is also the fastest configuration management tool.\n KJam is the fastest build software.\n It produces the fastest build time.\n KJam results in the shortest incremental build times.\n It is compatible with build managers like Parabuild, Luntbuild. Quickbuild, Anthill Professional, BuildForge and FinalBuilder.\n Use KJam if your build is too slow, or if your build takes too long. It is also good if you have long link times.\n

Introduction

KJam is a program construction tool, like make. KJam recursively builds target files from source files, using dependency information and updating actions expressed in a user-provided jamfile, which is written in KJam's own interpreted language.

KJam is modelled after Jam/MR, a build tool developed by Chris Seiwald of Perforce Software. It operates in a way very similar to Jam and its interpreted language is also very similar. KJam was developed in an effort to make significant improvements to Jam while still maintaining its powerful minimalist design. KJam eliminates a number of Jam's legacy features, and concentrates on features designed to make it more useful and more manageable for larger and more complex projects.

KJam is designed to be:

Fast KJam is the fastest build system available today. It is the fastest for both full and incremental builds. It has the fastest dependency scanner of any current build system. Even for projects with many thousands of files, KJam will finish scanning and start building almost instantly. Unlike most current build systems, KJam is designed from the beginning to be multi-threaded, resulting in maximum utilization of multi-processor workstations. Through the use of batched building, a built-in shell, and parallel command execution KJam reduces build times radically. Jam was well known as one of the fastest build systems available. Our performance tests show that KJam is faster.
Scalable KJam is designed to support even the largest projects with hundreds of thousands of files. It may even be run as a distributed peer network of build servers allowing projects to share the build load over a large heterogeneous network of build machines. KJam's dependency scanner uses advanced caching techniques which make it especially efficient when dealing with very large numbers of targets. It has per target viewpathing.
Unintrusive and Clean KJam is small. It has negligible CPU overhead, uses very little memory, and it doesn't create or leave behind temporary files.
Automatic Dependencies KJam computes dependencies for its targets during building. There is no need for a separate off-line make depend step.
A built-in sh-like Shell By default, on any platform, KJam runs its command scripts using its own built-in sh-like shell. This way developers can expect a common set of minimal shell features on every platform. Using a built-in shell allows KJam to report errors in command scripts which reference the errant command directly in the jamfile, something an external shell cannot do. It eliminates another point of difference between multiple platforms making it easier to write actions which run on any platform. The internal shell is also much faster. If necessary users may still specify an external shell for command scripts which require more features.
Batched Building Some compilers, such as MSVC, support building multiple object files from multiple source files with a single invocation of the compiler. This can result in dramatically reduced build times. Unlike most build software, KJam has complete support for building targets in batches.
Customizable Developers can enhance and extend KJam by creating user defined rules to utilize other built-in directives.
Language KJam includes flow-control statements, variables, and a few other features of general purpose languages.
Multiplatform Platform independent rules and platform specific actions can be defined separately from dependency rules.
Highly portable KJam currently runs on WindowsXP, Windows Vista, Linux and Apple Os X. It is designed to be easily portable.
Improved Variable Expansion KJam's variable expansion is much more powerful than Jam's. In addition to having many more modifiers, KJam's variable expansion can be controlled with full support for regular expressions. In general KJam uses regular expression syntax wherever a matching pattern is required. In Jam there are a number of different restricted expression syntaxes used in various places.
Simplified Syntax With the addition of more powerful variable expansion it has been possible to remove a number of language features and maintain equivalent expressive power. The KJam language is simpler. KJam allows named arguments in both rules and actions making the code more readable. In addition the KJam parser is more flexible and more forgiving. Braces are not required around blocks with just one statement.
Better Reporting For large and complex build systems it is important to be able to diagnose problems easily. KJam has extensive and very detailed ways of reporting its internal execution, allowing developers to zero in on problems with their build environment quickly. In multi-threaded mode KJam keeps the output from different processes together instead of interspersing it. KJam can reformat all of its output, and the output of any tools it runs to the width of your shell for improved readability.

While KJam is useful for projects of all sizes, it is designed to support large, complex projects. KJam has been receiving an increasing amount of interest from many of the largest and most respected software development companies.


Contact

To report bugs, request features or otherwise talk to the authors about KJam, send e-mail to kjam@oroboro.com