Changes between Version 5 and Version 6 of kmk
- Timestamp:
- May 26, 2007, 11:09:41 PM (18 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
kmk
v5 v6 11 11 The current {{{kmk}}} code contains the following changes from [wiki:'GNU make']: 12 12 * It has some extra predefined variables: 13 * {{{KMK}}} (similar to {{{MAKE}}}) 13 14 * {{{KMK_VERSION}}} 14 15 * {{{KMK_FEATURES}}} … … 17 18 * {{{KBUILD_VERSION_MINOR}}} 18 19 * {{{KBUILD_VERSION_PATCH}}} 19 * {{{PATH_KBUILD}}} - only when '''installed''' on *nix.20 * {{{PATH_KBUILD_BIN}}} - only when '''installed''' on *nix.20 * {{{PATH_KBUILD}}} 21 * {{{PATH_KBUILD_BIN}}} 21 22 * It has a few new builtin functions: 23 * {{{abspathex}}} 24 * {{{compcmds}}} 25 * {{{compvar}}} 26 * {{{int-add}}} 27 * {{{int-sub}}} 28 * {{{int-mul}}} 29 * {{{int-div}}} 30 * {{{int-mod}}} 31 * {{{int-not}}} 32 * {{{int-and}}} 33 * {{{int-or}}} 34 * {{{int-xor}}} 35 * {{{int-eq}}} 36 * {{{int-ne}}} 37 * {{{int-gt}}} 38 * {{{int-ge}}} 39 * {{{int-lt}}} 40 * {{{int-le}}} 41 * {{{rsort}}} 42 * {{{stack-push}}} 43 * {{{stack-pop}}} 44 * {{{stack-popv}}} 45 * {{{stack-top}}} 22 46 * {{{toupper}}} 23 47 * {{{tolower}}} 24 * {{{compvar}}} 48 * {{{xargs}}} 49 * {{{eq}}} ("experimental" GNU make code) 50 * {{{not}}} ("experimental" GNU make code) 25 51 * {{{kb-src-tool}}} (kBuild internal) 26 52 * {{{kb-obj-base}}} (kBuild internal) … … 28 54 * {{{kb-src-prop}}} (kBuild internal) 29 55 * {{{kb-src-one}}} (kBuild internal) 56 * Explicit multi-target rules, e.i. explicit make rules that output more than one file. 57 * Prepend assignment operator, {{{<=}}}. 30 58 * It contains bugfixes for several bugs in the Windows and OS/2 ports, most importantly path case mixups, broken shell invocation, and abspath. 31 * It has several performance improvements with respect to the kind of work [wiki:kBuild kBuild] puts make thru. Most notably, keeping name and value lengths for variables and thereby skipping a lot of {{{strlen()}}} and being able to use {{{memcpy()}}} instead of {{{strcpy()}}}, and the variable expansion optimization ({{{+=}}}). The latter was a major issue with the way [wiki:kBuild kBuild] is scripted.59 * It has several performance improvements with respect to the kind of work [wiki:kBuild kBuild] puts make thru. Most notably, keeping name and value lengths for variables and thereby skipping a lot of {{{strlen()}}} and being able to use {{{memcpy()}}} instead of {{{strcpy()}}}, and the variable append/prepend optimization ({{{+=}}} and {{{<=}}}). The latter was a major issue with the way [wiki:kBuild kBuild] is scripted. 32 60 * A bunch of builtin utilities which will be invoked without spawning new process or shell. Most of these are taken from BSD. 33 61 * kmk_builtin_append 34 62 * kmk_builtin_cp 63 * kmk_builtin_cat 35 64 * kmk_builtin_echo 36 65 * kmk_builtin_install 37 66 * kmk_builtin_ln 38 67 * kmk_builtin_mkdir 68 * kmk_builtin_mv 39 69 * kmk_builtin_rm (clean just wouldn't work without this) 40 70 * kmk_builtin_rmdir 41 On the todo list is: 42 * kmk_builtin_mv 43 * ... 71 * kmk_builtin_printf 44 72 * A new argument {{{--priority <1..5>}}} which sets the priority of the [wiki:kmk] process. 1 is idle time, 3 is normal, and 5 is highest priority. 45 73 * The special {{{.NOTPARALLEL}}} [wiki:goals goal] has been extended to be able to take a list of [wiki:goals] that must be executed without any parallel building going on. If no list is given, it will work like in vanilla [wiki:'GNU make'] which means the entire makefile will be executed without any parallel building. This extension is required to make the {{{-jN}}} argument useful in [wiki:kBuild].