new rule: SubIncludeOnce varname : TOP ... ;
[k8jam.git] / doc / ChangeLog
blobf0afd5e1c71f69ae609788f619f80dec6a5315ac
1   [+] PWD/Pwd built-in added; usage:
2       pwd = [ PWD ] ;
3   [+] SORT/Sort built-in added; usage:
4       sorted = [ SORT $(list) ] ;
5   [+] COMMAND/Command built-in added; usage:
6       res = [ COMMAND shellcmd-list [[ : options ]] ];
7       options:
8         exit-status, exit-code:
9           return exit code as last list element
10         no-output:
11           don't return command output
12         no-trim:
13           don't trim command output;
14           default: trim left and right
15         no-trim-left:
16           don't left-trim command output
17         no-trim-right:
18           don't right-trim command output
19         status-first, code-first:
20           put exit code first
21         parse-output:
22           parse output as list (break on whitespaces -- <= ' ')
23         no-space-break:
24           don't break on spaces (' ') when 'parse-output' activated
25         no-tab-break:
26           don't break on tabs ('\t') when 'parse-output' activated
27         no-nl-break, no-lf-break:
28           don't break on LF ('\n') when 'parse-output' activated
29         no-cr-break:
30           don't break on CR ('\r') when 'parse-output' activated
31   [+] COMMAND/Command built-in synthax changed; new synthax:
32       res = [ COMMAND shellcmd-list [[ : options ]] ];
33       new options (added to common description)
34   [+] COMMAND/Command built-in now can parse command output
36   [+] rule RemoveOpt
37       # VAR = [ RemoveOpt options-to-remove : options-list ] ;
38       # remove options from list
39   [+] rule RemoveOptWild
40       # VAR = [ RemoveOpt regexp-options-to-remove : options-list ] ;
41       # remove options from list with egrep-like regexps
42   [+] rule profile
43       # profile "name" ;
44       # set compile flags for profile; works only for gcc/g++
45       # available profiles:
46       #  none, default: don't change
47       #  empty: remove optimisation flags
48       #  speed: optimise for speed and pIII
49       #  size: optimise for size
50       #  debug: don't optimize, add debug info
51       #  standard: -O2
52   [+] rule ObjectNoAliasing
53       # ObjectNoAliasing filelist ;
54       # turn off aliasing optimization for specified files
55       # works only for gcc/g++
57   [*] MainC++ wasn't working properly
58   [*] XXXC++ variables changed to XXXC++ZZZ
59   [+] LOCATE_BIN and ALL_LOCATE_BIN variables added (for Main and MainC++ targets)
60       so now one can do something like this:
61         ALL_LOCATE_TARGET = $(TOP)/build/obj ;
62         ALL_LOCATE_BIN = $(TOP)/build ;
63       and have a nice bunch of *.o files in build/obj and binary in build/
64   [+] new rule: lib-config
65       call $(1) --cflags and $(1) --libs (many libs provides such configurators)
66       add necessary flags to compiler and linker vars
67       return "tan" (non-empty string) if library is present
68       if $(2) != "" -- don't add flags, just check
69   [+] PATH_SEPARATOR variable added
70   [*] build process changed (.o and .a moved to subdir)
71   [+] allow []...] and [^]...] in globs (so ranges can include ']')
72   [+] :Q now quotes all special shell chars, not only '\'
73   [*] some regexprs was broken by tab expansion; fixed
74   [*] OPTIMC++ renamed to C++OPTIM
76   [+] LOCATE_LIB, LOCATE_LIBSO and ALL_LOCATE_LIB[SO] variables added (for Library and SharedLibrary targets)
77       so now one can do something like this:
78         ALL_LOCATE_TARGET = $(TOP)/build/obj ;
79         ALL_LOCATE_LIB = $(TOP)/build/liba ;
80         ALL_LOCATE_LIBSO = $(TOP)/build/libso ;
81         ALL_LOCATE_BIN = $(TOP)/build ;
82       and have a nice bunch of files in various dirs.
84   [*] JAMCMDARGS now set before parsing Jamfiles (and what sense was to set it after? %-)
85   [+] JAM_TARGETS variable added; scripts are free to modify it, so we can easy define targets from whithin
87   [+] SubIncludeOnce varname : TOP ... ;
88       will do SubInclude if 'varname' is not set (and will set 'varname')
89       so one can include all necessary libraries in all necessary projects