more fixes to set-profile
[k8jam.git] / TODO
blob705a4509ee46fd1df55777f341ab6a709e0d8fe2
1   [*] add "-=" 'assign' (to exclude elements from list)
2   [*] $(>[2:S=.tiles]) -- bugs us out (adds extra char)
3   [.] replace regexp library with new one (from Tcl?)
4   [.] glob: allow ']' and '-' escaping inside ranges
5   [.] InstallConfig target with 'cfgname.new' if old one exists
7   [.] separate make target always relinks .exe; why?
9   [.] optional argument list for rule definition (j+)
10   [.] for local y in $(x) (bj)
11   [.] negative indexing (rel. to EOL) (bj)
13   [?] modules from bj?
14   [?] multipass builds from j+ (QueueJamfile)
16   [.] binding rules
17     Target Binding Detection
19     Whenever a target is bound to a location in the filesystem, Boost
20     Jam will look for a variable called BINDRULE (first ``on'' the
21     target being bound, then in the global module). If non-empty,
22     $(BINDRULE[1]) names a rule which is called with the name of the
23     target and the path it is being bound to. The signature of the rule
24     named by $(BINDRULE[1]) should match the following:
26     rule bind-rule ( target : path )
28     This facility is useful for correct header file scanning, since many
29     compilers will search for #included files first in the directory
30     containing the file doing the #include directive. $(BINDRULE) can be
31     used to make a record of that directory.
33   [?] The BACKTRACE rule
35   [.] semaphores
36     Semaphores
38     It is sometimes desirable to disallow parallel execution of some
39     actions. For example:
41     Old versions of yacc use files with fixed names. So, running two
42     yacc actions is dangerous.
44     One might want to perform parallel compiling, but not do parallel
45     linking, because linking is i/o bound and only gets slower.
47     Craig McPeeters has extended Perforce Jam to solve such problems,
48     and that extension was integrated in Boost.Jam.
50     Any target can be assigned a semaphore, by setting a variable called
51     SEMAPHORE on that target. The value of the variable is the semaphore
52     name. It must be different from names of any declared target, but is
53     arbitrary otherwise.
55     The semantic of semaphores is that in a group of targets which have
56     the same semaphore, only one can be updated at the moment,
57     regardless of "-j" option.