diff options
author | Steven Knight <knight@baldmt.com> | 2008-04-21 06:38:31 (GMT) |
---|---|---|
committer | Steven Knight <knight@baldmt.com> | 2008-04-21 06:38:31 (GMT) |
commit | 736666c4435e553e13b69e57339ec91c9f4f2824 (patch) | |
tree | 512353b30aa2af47f79bcd816ea27ac65cf1303f /doc | |
parent | a6391f26d941d3cba4ec4bf6c499d38e2ce4a014 (diff) | |
download | SCons-736666c4435e553e13b69e57339ec91c9f4f2824.zip SCons-736666c4435e553e13b69e57339ec91c9f4f2824.tar.gz SCons-736666c4435e553e13b69e57339ec91c9f4f2824.tar.bz2 |
Merged revisions 2880-2883,2885-2895 via svnmerge from
http://scons.tigris.org/svn/scons/branches/core
........
r2885 | stevenknight | 2008-04-18 21:38:59 -0700 (Fri, 18 Apr 2008) | 2 lines
Update troubleshooting appendix for new Taskmaster output.
........
r2886 | bdbaddog | 2008-04-19 15:15:03 -0700 (Sat, 19 Apr 2008) | 5 lines
Fix infinite loop in Fortran tool initialization.
Bug 2017.
Steven fixed, I tested.
........
r2887 | garyo | 2008-04-20 17:44:46 -0700 (Sun, 20 Apr 2008) | 1 line
Added this in two sections; simple one when discussing simple builds, and an example in the VariantDir section showing how it still works there.
........
r2888 | stevenknight | 2008-04-20 21:33:01 -0700 (Sun, 20 Apr 2008) | 4 lines
Accomodate test/MSVC/msvc.py's reliance on the Windows Platform SDK
(for now) by making use of the user's %INCLUDE% and %LIB% variables.
Split some independent embedded subtests into their own test scripts.
........
r2889 | stevenknight | 2008-04-20 21:38:05 -0700 (Sun, 20 Apr 2008) | 2 lines
Windows portability fix (line endings).
........
r2890 | stevenknight | 2008-04-20 21:44:24 -0700 (Sun, 20 Apr 2008) | 2 lines
Update Windows portion of if:-elif: block for a variable name change.
........
r2891 | stevenknight | 2008-04-20 21:52:41 -0700 (Sun, 20 Apr 2008) | 3 lines
On Windows, escape backslashes on the --interactive command line input,
so people can build targets in other directories.
........
r2892 | stevenknight | 2008-04-20 21:56:50 -0700 (Sun, 20 Apr 2008) | 3 lines
Fix ripple effects on Windows from redefining how $CXXFLAGS gets
added to C++ command lines.
........
r2893 | stevenknight | 2008-04-20 22:04:50 -0700 (Sun, 20 Apr 2008) | 4 lines
Handle a ripple effect from redefining the file() and open() builtin
functions by explicitly restoring the originals whenever we reset
the global state between tests.
........
r2894 | stevenknight | 2008-04-20 23:17:23 -0700 (Sun, 20 Apr 2008) | 2 lines
Remove by-hand backslash escaping, now that --interactive mode is handling it.
........
r2895 | stevenknight | 2008-04-20 23:23:04 -0700 (Sun, 20 Apr 2008) | 2 lines
Mention the fix for the Fortran suffix out-of-memory bug
........
Diffstat (limited to 'doc')
-rw-r--r-- | doc/user/less-simple.in | 24 | ||||
-rw-r--r-- | doc/user/less-simple.xml | 24 | ||||
-rw-r--r-- | doc/user/separate.in | 57 | ||||
-rw-r--r-- | doc/user/separate.xml | 46 | ||||
-rw-r--r-- | doc/user/troubleshoot.xml | 50 |
5 files changed, 181 insertions, 20 deletions
diff --git a/doc/user/less-simple.in b/doc/user/less-simple.in index 76afa30..7b45271 100644 --- a/doc/user/less-simple.in +++ b/doc/user/less-simple.in @@ -209,6 +209,30 @@ </section> <section> + <title>Making a list of files with Glob()</title> + + <para> + + You can also use the Glob() function to find all files matching a + certain template, using standard the shell pattern matching + characters *, ?, and [abc] to match any of a, b, or c. [!abc] is + also supported, to match any character <emphasis>except</emphasis> + a, b, or c. This makes many multi-source-file builds quite easy: + + </para> + + <sconstruct> + Program('program', Glob('*.c')) + </sconstruct> + + <para> + + The SCons man page has more details on using Glob() with Variant + dirs and Repositories and returning strings rather than Nodes. + + </section> + + <section> <title>Specifying Single Files Vs. Lists of Files</title> <para> diff --git a/doc/user/less-simple.xml b/doc/user/less-simple.xml index eea3425..c6ded70 100644 --- a/doc/user/less-simple.xml +++ b/doc/user/less-simple.xml @@ -198,6 +198,30 @@ </section> <section> + <title>Making a list of files with Glob()</title> + + <para> + + You can also use the Glob() function to find all files matching a + certain template, using standard the shell pattern matching + characters *, ?, and [abc] to match any of a, b, or c. [!abc] is + also supported, to match any character <emphasis>except</emphasis> + a, b, or c. This makes many multi-source-file builds quite easy: + + </para> + + <programlisting> + Program('program', Glob('*.c')) + </programlisting> + + <para> + + The SCons man page has more details on using Glob() with Variant + dirs and Repositories and returning strings rather than Nodes. + + </section> + + <section> <title>Specifying Single Files Vs. Lists of Files</title> <para> diff --git a/doc/user/separate.in b/doc/user/separate.in index be7e6c5..dc77af3 100644 --- a/doc/user/separate.in +++ b/doc/user/separate.in @@ -466,6 +466,63 @@ program using the F<build/foo.c> path name. </section> + <section> + <title>Using Glob() with &VariantDir;</title> + + <para> + + The Glob() file name pattern matching function + works just as usual when using &VariantDir;. + For example, if the + <filename>src/SConscript</filename> + looks like this: + + </para> + + <scons_example name="example_glob_builddir_sconscript"> + <file name="SConstruct"> + VariantDir('build', 'src') + SConscript('build/SConscript') + </file> + <file name="src/SConscript" printme="1"> + env = Environment() + env.Program('hello', Glob('*.c')) + </file> + <file name="src/f1.c"> + #include "f2.h" + int main() { printf(f2()); } + </file> + <file name="src/f2.c"> + const char * f2() { return("Hello, world!\n"); } + </file> + <file name="src/f2.h"> + const char * f2(); + </file> + </scons_example> + + <para> + + Then with the same &SConstruct; file as in the previous section, + and source files f1.c and f2.c in src, we would see the following + output: + + </para> + + <scons_output example="example_glob_builddir_sconscript"> + <scons_output_command>ls src</scons_output_command> + <scons_output_command>scons -Q</scons_output_command> + <scons_output_command>ls build</scons_output_command> + </scons_output> + + <para> + + The Glob function returns Nodes in the build/ tree, as + you'd expect. + + </para> + + </section> + <!-- <section> diff --git a/doc/user/separate.xml b/doc/user/separate.xml index 57ade04..c5e90e0 100644 --- a/doc/user/separate.xml +++ b/doc/user/separate.xml @@ -457,6 +457,52 @@ program using the F<build/foo.c> path name. </section> + <section> + <title>Using Glob() with &VariantDir;</title> + + <para> + + The Glob() file name pattern matching function + works just as usual when using &VariantDir;. + For example, if the + <filename>src/SConscript</filename> + looks like this: + + </para> + + <programlisting> + env = Environment() + env.Program('hello', Glob('*.c')) + </programlisting> + + <para> + + Then with the same &SConstruct; file as in the previous section, + and source files f1.c and f2.c in src, we would see the following + output: + + </para> + + <screen> + % <userinput>ls src</userinput> + SConscript f1.c f2.c f2.h + % <userinput>scons -Q</userinput> + cc -o build/f1.o -c build/f1.c + cc -o build/f2.o -c build/f2.c + cc -o build/hello build/f1.o build/f2.o + % <userinput>ls build</userinput> + SConscript f1.c f1.o f2.c f2.h f2.o hello + </screen> + + <para> + + The Glob function returns Nodes in the build/ tree, as + you'd expect. + + </para> + + </section> + <!-- <section> diff --git a/doc/user/troubleshoot.xml b/doc/user/troubleshoot.xml index dc90622..0a34559 100644 --- a/doc/user/troubleshoot.xml +++ b/doc/user/troubleshoot.xml @@ -1115,11 +1115,10 @@ % <userinput>scons -Q --debug=stacktrace</userinput> scons: *** Source `prog.c' not found, needed by target `prog.o'. Stop. scons: internal stack trace: - File "bootstrap/src/engine/SCons/Job.py", line 131, in start + File "bootstrap/src/engine/SCons/Job.py", line 187, in start File "bootstrap/src/engine/SCons/Script/Main.py", line 169, in prepare - File "bootstrap/src/engine/SCons/Taskmaster.py", line 169, in prepare - File "bootstrap/src/engine/SCons/Node/FS.py", line 2551, in prepare - File "bootstrap/src/engine/SCons/Node/__init__.py", line 349, in prepare + File "bootstrap/src/engine/SCons/Taskmaster.py", line 184, in prepare + File "bootstrap/src/engine/SCons/Executor.py", line 171, in prepare </screen> <para> @@ -1174,24 +1173,35 @@ <screen> % <userinput>scons -Q --taskmastertrace=- prog</userinput> - Taskmaster: 'prog': children: - ['prog.o'] - waiting on unfinished children: - ['prog.o'] - Taskmaster: 'prog.o': children: - ['inc.h', 'prog.c'] - waiting on unfinished children: - ['inc.h', 'prog.c'] - Taskmaster: 'prog.c': evaluating prog.c - Taskmaster: 'inc.h': evaluating inc.h - Taskmaster: 'prog.o': children: - ['inc.h', 'prog.c'] - evaluating prog.o + + Taskmaster: Looking for a node to evaluate + Taskmaster: Considering node <no_state 'prog'> and its children: + Taskmaster: <no_state 'prog.o'> + Taskmaster: Considering node <no_state 'prog.o'> and its children: + Taskmaster: <no_state 'prog.c'> + Taskmaster: <no_state 'inc.h'> + Taskmaster: Considering node <no_state 'prog.c'> and its children: + Taskmaster: Evaluating <pending 'prog.c'> + + Taskmaster: Looking for a node to evaluate + Taskmaster: Considering node <no_state 'inc.h'> and its children: + Taskmaster: Evaluating <pending 'inc.h'> + + Taskmaster: Looking for a node to evaluate + Taskmaster: Considering node <pending 'prog.o'> and its children: + Taskmaster: <up_to_date 'prog.c'> + Taskmaster: <up_to_date 'inc.h'> + Taskmaster: Evaluating <pending 'prog.o'> cc -o prog.o -c -I. prog.c - Taskmaster: 'prog': children: - ['prog.o'] - evaluating prog + + Taskmaster: Looking for a node to evaluate + Taskmaster: Considering node <pending 'prog'> and its children: + Taskmaster: <executed 'prog.o'> + Taskmaster: Evaluating <pending 'prog'> cc -o prog prog.o + + Taskmaster: Looking for a node to evaluate + Taskmaster: No candidate anymore. </screen> <para> |