1 [+] PWD/Pwd built-in added; usage:
3 [+] SORT/Sort built-in added; usage:
4 sorted = [ SORT $(list) ] ;
5 [+] COMMAND/Command built-in added; usage:
6 res = [ COMMAND shellcmd-list [[ : options ]] ];
8 exit-status, exit-code:
9 return exit code as last list element
11 don't return command output
13 don't trim command output;
14 default: trim left and right
16 don't left-trim command output
18 don't right-trim command output
19 status-first, code-first:
22 parse output as list (break on whitespaces -- <= ' ')
24 don't break on spaces (' ') when 'parse-output' activated
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
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
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
44 # set compile flags for profile; works only for gcc/g++
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
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 (MainC++ --> C++Main)
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 iff 'varname' is not set (and will set 'varname')
89 so one can include all necessary libraries in all necessary projects
91 [+] partial Objective C support:
92 ObjC-Main, std. set of OBJC* vars
93 OBJC_GNUSTEP_BASE_LIB = gnustep-base ;
94 OBJC_GNUSTEP_GUI_LIB = gnustep-gui ;
95 rules: ObjCUseGNUstepBase, ObjCUseGNUstepGui, ObjCUseGNUstep
97 [+] 'lib-config-ex' rule:
98 lib-config-ex "command" : "var-name-to-modify"
99 "var-name-to-modify" can be omited;
100 rule returs value of command
103 Echo-n: same as Echo, but does not writes '\n'
104 O-Flush: flush standard output (for Echo-n)
105 [+] added rules: LinkFlagsOn, C++LinkFlagsOn, ObjCLinkFlagsOn
106 same as Object*Flags, but for linker flags
107 we need this due to 'gristing' in multidir builds
109 [+] new variable: JAM_FORCE_GCC_OPTIONS
110 set it to override GCC detection
112 [+] rule set-profile:
113 selects 'debug', 'standard', 'speed' or 'size' profile according to vars:
116 OPT_SPEED = 1 : speed
119 [+] rule set-default-subdir-locates (sets my defaults for ALL_LOCATE_XXX: _build/, etc)
121 [+] alias for set-default-subdir-locates: set-default-target-locations ;
125 [+] jam now correctly creates dirs for files like 'dir/source'
126 [+] alias for set-default-subdir-locates: set-default-locations ;
128 [+] added acions for WINDOZE=1 (my own way to cross-build windoze soft with wine and mingw)
130 WINE -- wine command; default is "wine"
131 MGPATH -- path to mingw bin dir; default is "c:\mingw\bin\" (note the last '\')
132 MGCC -- mingw gcc compiler name; default is "mingw32-gcc.exe";
133 MG -- mingw g++ compiler name; default is "mingw32-g++.exe -static-libgcc"
134 vars for 'windoze-fix' rule (this rule should be invoked in Jamrules; it is harmless to
135 invoke it for any build scheme):
136 WINDOZE_THREADS -- if not empty, add "-mthreads"
137 WINSUBSYS -- either 'console' or 'windows'; default is 'console'
138 WINLIBS -- list of windoze libraries to add; default is '-lkernel32'
140 [!] WARNING! COMPATIBILITY BREAKING CHANGE!
141 [*] old SubInclude rule renamed to SubIncludeMany
142 [*] new SubInclude rule works as SubIncludeOnce (autogenerates guard var)
144 [+] new built-in: [ ExprI1 num0 op num1 ]
145 integer math; understands 5 standard ops ('%' as C '%')
146 [ ExprI1 40 + 2 ] ==> "42"
147 [+] new built-in: [ Split str : delims ]
148 split `str` using `delims`
149 [ Split "a,b,c;d" : ",;" ] ==> a b c d