Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: downloads/boost_1_33_1/tools/build/jam_src/RELNOTES @ 12

Last change on this file since 12 was 12, checked in by landauf, 18 years ago

added boost

File size: 30.7 KB
Line 
1Release notes for Jam/MR 2.4
2(aka Jam - make(1) redux)
3
40.  Changes between 2.4rc1 and 2.4rc2:
5
6    THESE NOTES WILL BE REMOVED WITH THE FINAL 2.4 RELEASE, SINCE THEY
7    REFER EXCLUSIVELY TO ADJUSTMENTS IN BEHAVIORS NEW BETWEEN 2.3 and
8    2.4:
9
10        Make MATCH generate empty strings for () subexpressions that
11        match nothing, rather than generating nothing at all.
12        Thanks to David Abrahams.
13
14        GLOB now applies the pattern to the directory-less filename,
15        rather than the whole path. Thanks to Niklaus Giger.
16
17        Make Match rule do productized results, rather than
18        using just $(1[1]) as pattern and $(2[1]) as the string.
19
201.  Release info:
21
22        Jam/MR 2.4
23        March, 21, 2002
24        VERSION 2.4
25
262.  Compatibility
27
28        Jam 2.4 is upward compatible with Jam 2.3
29
30        The Jam 2.4 language is a superset of the 2.3 language;
31        Jamfiles, Jambase, and other rulesets used in 2.3 can be used
32        with the 2.4 language support.
33
343.  Changes since 2.3.
35
363.1.  Changes to Jam Language
37
38        The mechanism for calling rules that return values - "[ rule
39        args ...]", (and 'return' in the rule body), is now a
40        documented part of the language.
41
42        Add "on <target> <rulename> <field1> ..." syntax, to invoke a
43        rule under the influence of a target's specific variables.
44
45        Add "[ on targ rule ... ]" to call a rule returning a value,
46        under the influence of a target's specific variables.
47
48        New 'Glob' builtin that returns a list of files in a list of
49        directories, given a list of patterns.
50
51        New 'while expr { block }' construct.
52
53        New :E=value modifier provides default value if variable unset.
54
55        New :J=joinval modifier concatenates list elements into single
56                element, separated by joinval.
57
58        \ can now be used to escape a space (or any single whitespace
59        character), so that you don't have to resort to quotes.
60
61        New 'Match regexp : string' rule matches regexp against string
62        and returns list of results.
63
64        Rules can now be invoked indirectly, through variable names.
65        If the variable expands to an empty list, no rule is run.
66        If the variable expands to multiple entries, each rule is
67        run with the same arguments.  The result of the rule invocation
68        is the concatenation of the results of the rules invoked.
69
70        'Echo' and 'Exit' now have aliases 'echo' and 'exit', since it
71        is really hard to tell that these are built-in rules and not
72        part of the language, like 'include'.  Real rules continue to
73        start with a capital.
74
753.2.  Jambase Changes
76
77        Support for YACCGEN, the suffix used on generated yacc output.
78
79        Fix ups to have jam and p4 build with borland C 5.5,
80        and minor win98 jam support for jam clean
81
82        SubDirHdrs now takes directory names in the same format as
83        SubInclude : one directory element per word.
84
85        More portable support for specifying includes and #defines:
86        New ASHDRS, CCHDRS, CCDEFS, DEFINES, ObjectDefines, FQuote,
87        FIncludes, FDefines.  Ordering of cc and c++ flags grossly
88        rearranged.
89
90        Jambase has been compacted by applying the new E: and J:
91        expansion modifiers.
92
93        New SoftLink rule, courtesy of David Lindes.  It currently
94        assumes you can pass a -s flag to $(LN).
95
963.3   'jam' Changes (See Jam.html)
97
98        Added '-q' (quit quick) option; jam will exit promptly (as if it
99        received an interrupt), as soon as any target fails.
100
101        Added experimental '-g' (build newest sources first) option:
102        all things being equal, normally targets are simply built in
103        the order they appear in the Jamfiles.  With this flag, targets
104        with the newest sources are built first.   From an idea by Arnt
105        Gulbrandsen.  Undocumented (outside this note).
106
1073.4.  Jam internal code changes
108
109        jamgram.yy now defines YYMAXDEPTH to 10000, what it is on
110        FreeBSD, for older yaccs that left it at 150 or so.  This is
111        needed for the right-recursion now used in the grammar.
112
113        Optimize rule compilation, with right-recursion instead of left.
114
115        Split jam's built-in rules out to builtins.c from compile.c,
116        so that compile.c only deals with the language.
117
118        Split jam's pathsys.h from filesys.h, since they are really
119        two different pieces.
120
121        evaluate_if(), which evaluated the condition tree for 'if' and
122        returned an int, has been replaced with compile_eval(), which does
123        essentially the same but returns a LIST.
124
1254.  Fixed bugs
126
127        Missing TEMPORARY targets with multiple parents no longer spoil one
128        parent's time with another.  The parents' time is used for comparison
129        with dependents, but no longer taken on as the target's own time.
130
131        'actions updated', not 'actions together', now protects targets
132        from being deleted on failed/interrupted updates.
133
134        Fixed broken $(v[1-]), which always returned an empty expansion.
135        Thanks to Ian Godin <ian@sgrail.com>.
136
137        Defining a rule within another rule, and invoking the enclosing
138        rule more than once, would result in giving the first rule a
139        null definition.  Fixed.
140
141        $(d:P) now works properly on the mac, climbing up directories.
142        Thanks to Miklos Fazekas <boga@mac.com>.
143
144        No longer (sometimes) treat \ as a directory separator on
145        UNIX.  It isn't supposed to be, but was due to bungled ifdefs.
146       
147        Applying just :U or :D (or :E, :J) mods no longer causes the
148        variable value to be treated as a filename (parsed and rebuilt
149        using the OS specific pathsys routines). Previously, if _any_
150        mods were present then the value was parsed and rebuilt as if
151        a filename, and that could in certain cases munge the value.
152        Only the file modifiers (:GDBSM) treat the value as a
153        filename.
154
155        Four rules makeCommon, makeGrist, makeString, makeSubDir from
156        jam 2.2 missing in 2.3 have been re-added, with apologies to
157        dtb@cisco.com.
158
159        Return status more likely to be correct when using -d0, now that
160        targets are could as being built even with no debugging output.
161        Thanks to Miklos Fazekas <boga@mac.com>.
162
163        yyacc now suffixes all terminals it defines with _t, so that they
164        don't conflict with other symbols (like RULE with the typedef
165        in rules.h).  Thanks to Michael Allard.
166
167        InstallInto now handles multiple sources properly, rather than
168        acting as if each installed target depended on all sources to
169        be installed.  $(INSTALLGRIST) is now the default grist for
170        installed targets, rather than the hardcoded 'installed'.  Thanks
171        to Stephen Goodson.
172
1735.  Porting
174
175        [MACINTOSH] Paths are now downshifted (internally) so as to
176        handle its case insensitivity.  Thanks to Miklos Fazekas
177        <boga@mac.com>.
178
179        [NT] MS changed the macro for the IA64 Windows NT 64bit
180        compiler.
181
182        [CYGWIN] Cygwin jam porting: dance around bison and yyacc.
183        Use bison's -y flag to use yacc's output file naming
184        conventions, and don't use yyacc on systems whose SUFEXE is
185        set.
186
187        [VMS] The Jambase itself was not formatting the CCHDRS and
188        CCDEFS properly: on VMS they can't be appended to, because
189        multiple /define or /include directives don't work.  Instead
190        now CCHDRS and CCDEFS is reformatted from HDRS and DEFINES
191        anytime those latter two change.  This requires the recent
192        change to jam to allow access to target-specific variables
193        when setting other variables.
194
195        [VMS] Remove exception call when file_dirscan() can't, for
196        some reason, scan a directory.  Use a better set of #ifdefs to
197        determine if we're on a vax, rather than relying on the C
198        compiler being a specific version: we're able to build with
199        the C++ compiler now.
200
201        [VMS] Port new jam to run with just cxx compiler.
202        (The C compiler being a extra-cost item).
203
204        [NT] Add entry for DevStudio when the settings are already in the
205        system environment.
206
207        [NT] default $(MV) to "move /y" in Jambase.
208
209        [MINGW] Mingw port by Max Blagai.
210
211===============================================================================
212===============================================================================
213
214
215======= end
216Release notes for Jam/MR 2.3
217(aka Jam - make(1) redux)
218
2190.  Bugs fixed since 2.3.1
220
221        PATCHLEVEL 2 - 3/12/2001
222
223        NOCARE changed back: it once again does not applies to targets
224        with sources and/or actions.  In 2.3 it was changed to apply to
225        such targets, but that broke header file builds: files that are
226        #included get marked with NOCARE, but if they have source or
227        actions, they still should get built.
228
2291.  Release info:
230
231        Jam/MR 2.3
232        November 16, 2000
233        VERSION 2.3
234        PATCHLEVEL 1
235
2362.  Compatibility
237
238        Jam 2.3 is upward compatible with Jam 2.2.
239
240        The Jam 2.3 language is a superset of the 2.2 language;
241        Jamfiles, Jambase, and other rulesets used in 2.2 can be used
242        with the 2.3 language support.
243
2443.  Changes since 2.2
245
2463.1.  Changes to Jam Language
247
248        Rules now can have values, which can expanded into a list with
249        the new "[ rule args ... ]" syntax.  A rule's value is the value
250        of its last statement, though only the following statements have
251        values: if (value of the leg chosen), switch (ditto), set (value
252        of the resulting variable), return (its arguments).  Note that
253        'return' doesn't actually return.  This support is EXPERIEMENTAL
254        and otherwise undocumented.  (2.3.1)
255
256        Because of the new way lists are processed, if a rule has no
257        targets a warning message is no longer issued.
258
259        NOCARE now applies to targets with sources and/or actions,
260        rather than just those without.
261
2623.2.  Jambase Changes
263
264        The HDRPATTERN variable now allows for leading blanks before
265        the #include, to keep up with ANSI.  By john@nanaon-sha.co.jp
266        (John Belmonte) (2.2.3).
267
268        HDRPATTERN has been adjusted to avoid mistaking cases like:
269
270                # include <time.h> /* could be <sys/time.h> */
271
272        MkDir now NOUPDATE's $(DOT), so that there are no dependencies
273        on the current directory's timestamp.  By john@nanaon-sha.co.jp
274        (John Belmonte).
275
276        The old mock functions like makeDirName, which assigned their
277        results to the variable named as their first argument, have
278        been replaced with real functions using the new [] synxtax.
279        E.g. "makeDirName foo : bar ola" is now "foo = [ fDirName bar ]"
280
281        Install now always does a cp/chmod/etc, rather than using
282        the system's install(1), which invariably seems broken.
283
2843.3.  Jam internal code changes
285
286        $JAMUNAME is set on UNIX.  (2.2.4).
287
288        Jam ANSI-fied (2.3.0).
289
290        jam.h now defines a bunch of symbols used by the other source
291        files, so as minimize compiler- and platform-specific ifdefs.
292
293        OSVER is no longer set by jam.h (it was only set for AIX).
294        Jam does not depend on this variable at all, except to set
295        $(OSFULL), which is used to determine jam's build directory.
296        If the user needs to distinguish between various revs of
297        OSs, he must set OSVER in the environment.
298
2994.  Fixed bugs
300
301        Redefining a rule while it was executing could cause jam to
302        crash.  Reference counts are now used to prevent that, thanks
303        to Matt Armstrong.
304
305        Logic for computing chunk size when executing PIECEMEAL rules
306        has been reworked to be a little more accurate, without danger
307        of overflow, at the cost of being a little more compute intensive.
308        Instead of computing an estimate chunksize in the (now gone)
309        make1chunk(), make1cmds() now just goes full bore and tries to
310        use all args.  When that fails, it backs off by 10% of the source
311        args until the command fits.  It takes a little bit more compute
312        time compared to the old logic, but when you're executing actions
313        to build all of Shinola it's still pretty small in the scheme
314        of things.
315
316        The NT handle leak in execunix.c has been fixed, thanks to
317        Gurusamy Sarathy.  (2.2.1).
318
3195.  Porting
320
321        Platforms newly supported or updated:
322
323            AmigaOS (with gcc), courtesy of Alain Penders (2.2.2).
324
325            Beos
326
327            CYGWIN 1.1.4, courtesy of John Belmonte <john@nanaon-sha.co.jp>.
328
329            IBM AS400 via Visual Age on NT (primitive)
330
331            IBM OS/390 Unix System Services
332
333            Linux SuSE on OS390
334
335            Linux Mips, ARM
336
337            Lynx
338
339            HPUX 11, IA64
340
341            Mac OS X Server, courtesy of Jeff_Sickel@sickel.com (2.2.5).
342
343            Mac Rhapsody
344
345            MPE IX 6.0
346
347            NetBSD
348
349            QNX RTP (QNX 6.0)
350
351            Siemens Sinix
352
353            UNICOS
354
355            VMS 6.2, 7.1
356
357            Windows NT IA64
358
3595.1.  NT Porting Notes
360
361        Always create tmp .bat file for actions if JAMSHELL is set.
362        That way, if JAMSHELL is a .bat file itself, it can handle
363        single-command actions with more than 9 cmd line args.
364
365        COMSPEC is no longer examined: cmd.exe is always used
366        instead.  Only cmd.exe can execute the Jambase rules anyhow.
367
368        Jam can be built with Borland C++ 5.5.
369
370        OS2 fixes: InstallBin now works.  Filenames are now downshifted,
371        so mixed case works better there, too.  file_dirscan() can now scan
372        the root ("c:\" or "\") directory, which it couldn't handle before.
373
374        var_defines now ignores OS=Windows_NT, because it conflicts
375        with Jam's setting of OS (to NT).
376
3775.2. Mac OS 8/9 Notes
378
379        The support for Mac is curious at best.  It runs under MPW.
380
381        It requires CodeWarrior Pro 5, but no longer requires GUSI.
382
383        Use Build.mpw to bootstrap the build.
384
385        The Mac specific definitions in the Jambase are not intended
386        to be of general purpose, but are sufficient to have Jam build
387        itself.
388
389===============================================================================
390===============================================================================
391
392
393Release Notes for Jam 2.2
394
3951.  Release info:
396
397        Jam 2.2
398        October 22, 1997
399        VERSION 2.2
400        PATCHLEVEL 1
401
4022. Compatibility
403
404        Jam 2.2 is a roll-up of 'Jam - make(1) redux' release 2.1+.
405        Most of the changes described below were available before this,
406        in the jam.2.1.plus.tar ball.
407
408        The Jam 2.2 language is a superset of the 2.1 language;
409        Jamfiles, Jambase, and other rulesets used in 2.1 can be used
410        with the 2.2 language support.
411
412        See 'Jambase Changes', below, to see if your Jamfiles need any
413        changes to work with the 2.2 Jambase.
414
415
4163. Changes Since 2.1
417
418        New product name: Jam. (Executable program is still named 'jam'.)
419
420        Documentation rewritten; HTML versions supplied.
421
422
4233.1 Changes to Jam Language
424
425        Rules may now have more fields than just $(<) and $(>).
426
427        Local variables are now supported.
428
429        The expression 'if $(A) in $(B)' is now supported.
430
431        New variable modifiers :U and :L result in uppercased or lowercased
432        values.
433
434        New variable modifier :P reliably results in parent directory
435        of either a file or directory. (Previously, :D was used, but on VMS
436        :D of a directory name is just the directory name.)
437
438        The :S variable modifier now results in the _last_ suffix if a
439        filename has more than one dot (.) in it.
440
441        New predefined $(JAMDATE) variable is initialized at runtime for
442        simple date stamping.
443
444        New predefined variables $(OSVER) and $(OSPLAT) are used to
445        distinguish among operating system versions and hardware platforms,
446        when possible.
447
448        New 'bind' qualifier on action definitions allows variables
449        other than $(<) and $(>) to be bound with SEARCH and LOCATE paths.
450
451        Action buffer size is no longer limited by MAXCMD. Instead, each
452        line in an action is limited by MAXLINE, defined for each OS, and
453        the entire action size is limited by CMDBUF.
454
455
4563.2 Jambase Changes (See Jamfile.html)
457
458        Jambase has been reworked to incorporate new language features.
459
460        A handful of new utility rules has been added: makeString,
461        makeDirName, etc.
462
463        New HDRGRIST variable in Jambase allows for headers with the same
464        name to be distinguished.
465
466        LOCATE_TARGET now has a new flavor, LOCATE_SOURCE, that is used by
467        rules that generate source files (e.g., Yacc and Lex).
468
469        Header file includes now happen in the proper order. The limit of
470        10 include files has been eliminated.
471
472        The old "Install" rule is no longer available.  Use InstallBin,
473        InstallFile, InstallLib, InstallMan, or InstallShell instead.
474
475
4763.3 'jam' Changes (See Jam.html)
477
478        'jam' can now be built as a stand-alone program, with Jambase
479        compiled into the executable. An external or alternate Jambase can
480        still be referenced explicitly with -f.
481
482        On command failure, 'jam' now emits the text of the command that
483        failed.  This is a compromise between the normal -d1 behavior (where
484        commands were never seen) and -d2 (where commands are always seen).
485
486        'jam' now exits non-zero if it doesn't have a total success.  A parse
487        error, sources that can't be found, and targets that can't be built
488        all generate non-zero exit status.
489       
490        The debugging levels (-d flags) have been slightly redefined.
491
492        The supplied Jamfile now builds 'jam' into a platform specific
493        subdirectory. This lets you use the same source directory to
494        build 'jam' for more than one platform.
495
496        The supplied Jamfile does not rebuild generated source files by
497        default. (They are supplied with the distribution.) See Jamfile
498        for more information.
499
500
5014.  Fixed Bugs
502
503        The 'include' bug has finally been fixed, so that include
504        statements take effect exactly when they are executed,
505        rather than after the current statement block.  This also
506        corrects the problem where an 'include' within an 'if'
507        block would wind up including the file one token after the
508        'if' block's closing brace.  Credit goes to Thomas Woods
509        for suggesting that the parse tree generation and parse
510        tree execution be paired in their own loop, rather than
511        having the parser execute the tree directly.
512
513        The setting and extracting of grist has been regularized:
514        normally, if you set a component of a filename (using the
515        :DBSMG= modifiers), you are supposed to include the delimiters
516        that set off the component:  that is, you say "$(x:S=.suffix)",
517        including the ".".  But with grist it was inconsistent
518        between setting and getting: setting grist required no
519        <>'s, while getting grist included them.   Getting grist
520        continues to return the <>'s, but now setting grist can
521        either include them (the new way) or not (the old way).
522
523        'actions together' now suppresses duplicate sources from
524        showing up in $(>).
525
526        Accessing variables whose names contained ['s (as happens with
527        MkDir on VMS) wasn't working, because it treated the [ as an
528        array subscript. Now [ and ] are, like :, handled specially so
529        that they can appear in variable values.
530
531        The 'if' statement now compares all elements in expressions;
532        previously, it only compared the first element of each list.
533
534        If a command line in an action is longer than MAXLINE (formerly
535        MAXCMD), 'jam' now issues an error and exits rather than dumping
536        core.
537
538        If a Jamfile ended without a trailing newline, jam dumped core.
539        This has been fixed.
540
541
5425.  Porting
543
544        See jam.h for the definitive list of supported platforms.
545        Since 2.1, support has been added for:
546
547            Macintosh MPW
548            Alpha VMS
549            Alpha NT
550            NT PowerPC
551            BeOS
552            MVS OE
553            UNIXWARE
554            QNX
555            SINIX (Nixdorf)
556            OS/2
557            Interactive UNIX (ISC), courtesy of Matthew Newhook
558
559
5605.1 NT Support Fixes
561
562        The NT command executor now handles multiple line actions, by writing
563        multi-line actions to a batch file and executing that.
564       
565        Targets are universally lowercased on NT. (Matthew Newhook)
566
567        Concurrent process support is fully enabled for NT.
568        (Gurusamy Sarathy <gsar@engin.umich.edu>)
569       
570        Path handling: Jam now knows that the directory component of "D:\"
571        is "D:\", just as on unix it knows that the directory component of
572        "/" is "/".  It also now successfully gets the timestamp for "D:\"
573        or just plain "\".
574
575
5765.2 VMS Support Fixes
577
578        VMS support is much, much better now.  The path name manipulation
579        routines (in pathvms.c) were more or less rewritten, and they now
580        handle the vagaries of combining directory and file names properly.
581
582        Targets are universally lowercased on VMS.
583
584        Multi-line command blocks on VMS are now executed in a single system()
585        call rather than separate ones for each line, so that actions can
586        be DCL scripts.
587
588===============================================================================
589===============================================================================
590
591
592Release notes for Jam 2.1.
593
5941.  Release info:
595        Jam 2.1
596        February 1, 1996
597        VERSION 2.1
598        PATCHLEVEL 0
599
6002.  Porting
601
602        Linux is now supported.
603
604        FREEBSD is now supported.
605
606        SCO ("M_XENIX") now supported.
607
608        NCR now supported.
609
610        NEXT support from karthy@dannug.dk (Karsten Thygesen)
611
612        DECC support from zinser@axp614.gsi.de (Martin P.J. Zinser)
613
614        I have changes for OS/2, but no way to test them.  Volunteers?
615        I have VMS multiprocess support, but no way to test it.  Volunteers?
616
6172.1.  NT Support fixes.
618
619        The NT support is considerably more real than it was in 2.0.
620        Filent.c had its syntax error corrected, it no longer skips the
621        first entry when scanning directories, and it handles string
622        tables in archives (for long object file names).
623
624        The Jambase was changed a bit to support the various C/C++
625        compilers on NT, although it has only been thorougly tested
626        with MSVC20.
627
628        You still need to set MSVCNT or BCCROOT to the root of the
629        the compiler's directory tree, and you'll get an error if you
630        don't set it (rather than getting a pile of mysterious errors).
631
6322.2.  Other porting fixes.
633
634        SPLITPATH now set up for UNIX (:), NT (;), VMS (,)
635
636        Jambase support for Solaris works better now: the location of
637        AR is hardwired to /usr/ccs/bin/ar and it knowns "install"
638        doesn't take -c.  Solaris -- how the mighty have fallen.
639
640        To handle Linux's wacko yacc, jamgram.h is now included after
641        scan.h so that YYSTYPE is define.
642
6433.  Jambase Changes (see Jamfile.html)
644
645        SubDir now computes the root directory for the source tree, if
646        the variable naming the root directory isn't set in the environment.
647        It counts the number of directory elements leading from the root
648        to the current directory (as passed to SubDir) and uses that many
649        "../"'s to identify the root.  This means that to use SubDir you
650        no longer have to have anything special set in the environment.
651
652        InstallFile is now an alias for InstallLib.
653
654        'first' is now dependency of all pseudo-targets (all, files,
655        exe, lib, shell), so that jamming any of these pseudo-targets
656        also builds any dependencies of 'first'.
657
658        The File rule definition in the Jambase was missing an &.
659
660        The File rule now calls the Clean rule, so that installed files
661        get cleaned.
662
6634.  Jam changes (see Jam.html)
664
665        Variables may now be set on the command line with -svar=value.
666
667        Targets marked with NOUPDATE are now immune to the -a (anyhow)
668        flag.  Previously, the MkDir rule would try to recreate directories
669        that already exist when jam was invoked with -a.
670
671        A new variable, $(JAMVERSION), joins the small list of built-in
672        variables.  It it set to the release of jam, currently "2.1".
673
674        If an actions fails, jam now deletes the target(s).  It won't
675        delete libraries or other targets that are composites.  This is
676        now consistent with jam's behavior on interrupts (it deletes the
677        targets).
678
679        Jam had a nasty bug when setting multiple variables to the same
680        value:  if the first two variable names were the same, the variable
681        value got trashed.  This also affected "on target" variables if
682        the first two targets were the same.  For example:
683
684                FOO on bar.c bar.c foo.c = a b c ;
685
686        This would mangle the value of FOO for bar.c and foo.c.  This has
687        been fixed.
688
689        Jam would generate bogus numbers when reporting the number of
690        targets updated after an interrupt.  It now is more careful about
691        counting.
692
693        The debugging flag -d has been extended.  In addition to supporting
694        -dx (turn on debugging for all levels up to x) there is also now
695        -d+x (turn on debugging at only level x).  The default output
696        level is -d1 (-or d2 if -n is given); this can be turned off with
697        -d0.   The debug levels are listed in jam.1 and jam.h.
698
699        The parsing debug output now uses indenting to indicate when
700        one rule invokes another.
701
702===============================================================================
703===============================================================================
704
705
706Release notes for Jam 2.0.
707
7081.  Release info:
709        Jam 2.0
710        March 10, 1994
711        VERSION 2.0
712        PATCHLEVEL 5
713
7142.  Porting
715
716        Windows/NT is now (crudely) supported, courtesy of Brett Taylor
717        and Laura Wingerd. 
718
719        COHERENT/386 is now supported, courtesy of Fred Smith.
720
721        Solaris archive string table for long archive names is now
722        supported, thanks to Mike Matrigali.
723
7243.  Compatibility
725
726        Jam 2.0 syntax is a superset of Jam 1.0 syntax, and thus it can
727        interpret a Jam 1.0 Jambase.
728
729        The Jam 2.0 Jambase is a superset of the Jam 1.0 Jambase, and
730        thus it can include a Jamfile written for Jam 1.0.
731
7324.  Changes from Jam 1.0 to Jam 2.0
733
7344.1.  Documentation changes
735
736        New Jamfile.5 manual page, with lots of examples and easy
737        reading.  It replaces both the old "Examples" file as well as
738        the old Jambase.5 manual page.
739
740        jam.1 edited by Stephen W. Liddle and Diane Holt.
741
7424.2.  Jambase Changes (see Jamfile.5)
743
7444.2.1.  New rules:
745
746        There are new rules to make handling subdirectories easier:
747        SubDir, SubInclude, SubDirCcFlags, SubDirHdrs.
748
749        There are new rules to handle file-specific CCFLAGS and HDRS:
750        ObjectCcFlags and ObjectHdrs.
751
752        Misc new rules: HardLink, InstallShell, MkDir.
753
754        New rule "clean" that deletes exactly what jam has built, and
755        "uninstall" that deletes exactly what was installed.
756
757        New rules for handling suffixes .s, .f, .cc, .cpp, .C.
758
7594.2.2.  Old rules:
760
761        The InstallBin, Lib, Man, and the new Shell rules now take the
762        destination directory as the target and the files to be copied
763        as sources.  These rules formerly took the files to be copied
764        as targets, and used built-in destination directories of
765        $(BINDIR), $(LIBDIR), $(MANDIR), and $(BINDIR).
766
767        The InstallBin, Lib, Man, and Shell rules use the install(1)
768        program now, instead of doing their own copying.
769
770        The Cc rule now uses -o when possible, rather than moving the
771        result.  Some platforms (Pyramid?) have a broken -o.
772
773        Jambase rules taking libraries, objects, and executables now
774        all ignore the suffixes provided and use the one defined in the
775        Jambase for the platform.
776
777        Stupid yyacc support moved out of Jambase, as jam is its only
778        likely user.
779
780        Jambase now purturbs library sources with a "grist" of
781        SOURCE_GRIST.
782
7834.2.3.  Misc:
784
785        The names of the default rules defined in Jambase have been
786        lowercased and un-abbreviated, to be more imake(1) like.
787
788        The Jambase has been reorganized and sorted, with VMS and NT
789        support moved in from their own files.
790
791        The Jambase has been relocated on UNIX from /usr/local/lib/jam
792        to /usr/local/lib.
793
7944.3.  Jam changes (see jam.1)
795
7964.3.1.   Flags:
797
798        New -a (anyhow) flag: means build everything.
799
800        New -j<x> flag: run jobs in parallel.
801
802        Old -t now rebuilds the touched target, rather that just the
803        target's parents.
804
805        -n now implies -d2, so that you see what's happening.  The
806        debug level can be subsequently overridden.
807
808        New -v to dump version.
809
8104.3.2.  Rules:
811
812        New ALWAYS rule behaves like -t: always builds target.
813
814        New EXIT rule makes it possible to raise a fatal error.
815
816        New LEAVES rule which say target depends only on the update
817        times of the leaf sources.
818
819        New NOUPDATE rule says built targets only if they don't exist.
820
821        NOTIME has been renamed NOTFILE, to more accurately reflect its
822        meaning (it says a target is not to be bound to a file).
823
8244.3.3.  Variables:
825
826        New special variable JAMSHELL: argv template for command execution
827        shell.
828
829        Variables, both normal and target-specific, can have their
830        value appended with the syntax "var += value" or "var on target
831        += value".
832
833        "?=" is now synonymous with "default =".
834
835        Imported enviroment variable values are now split at blanks
836        (:'s if the variable name ends in PATH), so that they become
837        proper list values.
838
8394.3.4.  Misc:
840
841        Files to be sourced with "include" are now bound first, so
842        $(SEARCH) and $(LOCATE) affect them.  They still can't be
843        built, though.
844
845        New modifier on "actions": "existing" causes $(>) to expand
846        only those files that currently exist.
847
8484.3.5.  Bug fixes:
849
850        When scanning tokens known to be argument lists (such as the
851        arguments to rule invocations and variable assignment), the
852        parser now tells the scanner to ignore alphabetic keywords, as
853        all such lists terminate with punctuation keywords (like : or
854        ;).  This way, alphabetic keywords don't need to be quoted when
855        they appear as arguments.
856
857        The scanner has been fixed to handle oversized tokens,
858        unterminated quotes, unterminated action blocks, and tokens
859        abutting EOF (i.e. a token with no white space before EOF).
860
861        The progress report "...on xth target..." used to count all
862        targets, rather than just those with updating actions.  Since
863        the original pronouncement of targets to be udpated included
864        only those with updating actions, the progress report has been
865        changed to match.
866
867        'If' conditionals now must be single arguments.  Previously,
868        they could be zero or more arguments, which didn't make much
869        sense, and made things like 'foo == bar' true.  The comparison
870        operator is '=', and '==' just looked like the second of three
871        arguments in the unary "non-empty argument list" conditional.
872
873        Header files indirectly including themselves were mistakenly
874        reported as being dependent on themselves.  Recursing through
875        header file dependencies is now done after determining the fate
876        of the target.
877
878        The variable expansion support was expanding $(X)$(UNDEF) as if
879        it were $(X).  It now expands to an empty list, like it
880        should.
881
882        The UNIX version of file_build() didn't handle "dir/.suffix"
883        right.  Now it does.
884
885        The VMS command buffer was assumed to be as large as 1024 bytes,
886        which isn't the case everywhere as it is related to some weird
887        quota.  It has been lowered to 256.
888
889        $(>) and $(<) wouldn't expand in action blocks if the targets
890        were marked with NOTIME.  Now they expand properly.
891
892        Malloc() return values are now checked.
893
894        The variable expansion routine var_expand() is now a little
895        faster, by taking a few often needed shortcuts.
896
897        The VMS version of file_build() used the wrong length when
898        re-rooting file names that already had directory compoents.
899        This was fixed.
900
901        Various tracing adjustments were made.
902
9035.  Limitations/Known Bugs
904
905        The new Windows/NT support has only been marginally tested.  It
906        is dependent on certain variables being set depending on which
907        compiler you are using.  You'll need to look in the file
908        Jambase and see what variables are expected to be set.
909
910        The VMS support has been tested, courtesy of the DEC guest
911        machine, but has not been hammered fully in release 2.0.  It
912        was used quite a bit in Jam 1.0.
913
914        Jam clean when there is nothing to clean claims it is updating
915        a target.
916
917        Because the include statement works by pushing a new file in
918        the input stream of the scanner rather than recursively
919        invoking the parser on the new file, multiple include
920        statements in a rule's procedure causes the files to be
921        included in reverse order.
922
923        If the include statement appears inside an if block, the
924        parser's attempt to find the else will cause the text of the
925        included file to appear after the first token following the
926        statement block.  This is rarely what is intended.
927
928        In a rule's actions, only $(<) and $(>) refer to the bound file
929        names:  all other variable references get the unbound names.
930        This is a pain for $(NEEDLIBS), because it means that library
931        path can't be bound using $(SEARCH) and $(LOCATE).
932
933        With the -j flag, errors from failed commands can get
934        staggeringly mixed up.  Also, because targets tend to get built
935        in a quickest-first ordering, dependency information must be
936        quite exact.  Finally, beware of parallelizing commands that
937        drop fixed-named files into the current directory, like yacc(1)
938        does.
939
940        A poorly set $(JAMSHELL) is likely to result in silent
941        failure.
Note: See TracBrowser for help on using the repository browser.