Changes between Version 5 and Version 6 of kmk


Ignore:
Timestamp:
May 26, 2007, 11:09:41 PM (18 years ago)
Author:
bird
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • kmk

    v5 v6  
    1111The current {{{kmk}}} code contains the following changes from [wiki:'GNU make']:
    1212 * It has some extra predefined variables:
     13   * {{{KMK}}} (similar to {{{MAKE}}})
    1314   * {{{KMK_VERSION}}}
    1415   * {{{KMK_FEATURES}}}
     
    1718   * {{{KBUILD_VERSION_MINOR}}}
    1819   * {{{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}}}
    2122 * 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}}}
    2246   * {{{toupper}}}
    2347   * {{{tolower}}}
    24    * {{{compvar}}}
     48   * {{{xargs}}}
     49   * {{{eq}}} ("experimental" GNU make code)
     50   * {{{not}}} ("experimental" GNU make code)
    2551   * {{{kb-src-tool}}} (kBuild internal)
    2652   * {{{kb-obj-base}}} (kBuild internal)
     
    2854   * {{{kb-src-prop}}} (kBuild internal)
    2955   * {{{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, {{{<=}}}.
    3058 * 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.
    3260 * A bunch of builtin utilities which will be invoked without spawning new process or shell. Most of these are taken from BSD.
    3361   * kmk_builtin_append
    3462   * kmk_builtin_cp
     63   * kmk_builtin_cat
    3564   * kmk_builtin_echo
    3665   * kmk_builtin_install
    3766   * kmk_builtin_ln
    3867   * kmk_builtin_mkdir
     68   * kmk_builtin_mv
    3969   * kmk_builtin_rm (clean just wouldn't work without this)
    4070   * kmk_builtin_rmdir
    41    On the todo list is:
    42    * kmk_builtin_mv
    43    * ...
     71   * kmk_builtin_printf
    4472 * 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.
    4573 * 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].