'ps' : 1,
'pdf' : 0,
'text' : 0,
- 'graphics' : [ 'arch', 'builder', 'job-task', 'node', 'scanner', 'sig' ],
+ 'graphics' : [
+ 'arch.fig',
+ 'builder.fig',
+ 'job-task.fig',
+ 'node.fig',
+ 'scanner.fig',
+ 'sig.fig'
+ ],
},
'reference' : {
'htmlindex' : 'book1.html',
'ps' : 1,
'pdf' : 1,
'text' : 0,
+ 'graphics' : [
+ 'SCons-win32-install-1.jpg',
+ 'SCons-win32-install-2.jpg',
+ 'SCons-win32-install-3.jpg',
+ 'SCons-win32-install-4.jpg',
+ ],
},
}
tar_deps.extend([html, htmlindex])
tar_list.extend([html, htmldir])
- if fig2dev:
- for g in docs[doc].get('graphics', []):
- fig = os.path.join(build, doc, '%s.fig' % g)
- jpg = os.path.join(htmldir, '%s.jpg' % g)
+ for g in docs[doc].get('graphics', []):
+ if g[-4:] == '.fig' and fig2dev:
+ fig = os.path.join(build, doc, g)
+ jpg = os.path.join(htmldir, g[:-4] + '.jpg')
env.Command(jpg, fig,
"%s -L jpeg -q 100 $SOURCES $TARGET" % fig2dev)
env.Depends(html, jpg)
Local(jpg)
+ else:
+ src = os.path.join(build, doc, g)
+ Local(env.Install(htmldir, src))
if docs[doc].get('ps') and jadetex:
env.Command(ps, main, [
tar_deps.append(ps)
tar_list.append(ps)
- if fig2dev:
- for g in docs[doc].get('graphics', []):
- fig = os.path.join(build, doc, '%s.fig' % g)
- eps = os.path.join(build, 'PS', '%s.eps' % g)
+ for g in docs[doc].get('graphics', []):
+ if g[-4:] == '.fig' and fig2dev:
+ fig = os.path.join(build, doc, g)
+ eps = os.path.join(build, 'PS', g[:-4] + '.eps')
env.Command(eps, fig, "%s -L eps $SOURCES $TARGET" % fig2dev)
env.Depends(ps, eps)
Local(eps)
+ else:
+ src = os.path.join(build, doc, g)
+ Local(env.Install(htmldir, src))
if docs[doc].get('pdf') and pdfjadetex:
env.Command(pdf, main, [
<!ENTITY CheckCXXHeader "<function>CheckCXXHeader</function>">
<!ENTITY CheckFunc "<function>CheckFunc</function>">
<!ENTITY CheckHeader "<function>CheckHeader</function>">
-<!ENTITY CheckLibrary "<function>CheckLibrary</function>">
+<!ENTITY CheckLib "<function>CheckLib</function>">
+<!ENTITY CheckLibWithHeader "<function>CheckLibWithHeader</function>">
<!ENTITY CheckType "<function>CheckType</function>">
<!ENTITY TryAction "<function>TryAction</function>">
<!ENTITY TryBuild "<function>TryBuild</function>">
tasks.sgml
troubleshoot.sgml
variants.sgml
+SCons-win32-install-1.jpg
+SCons-win32-install-2.jpg
+SCons-win32-install-3.jpg
+SCons-win32-install-4.jpg
Download the <filename>scons-0.95.win32.exe</filename>
file from the &SCons; download page at
<ulink url="http://www.scons.org/download.html">http://www.scons.org/download.html</ulink>.
- Then all you need to is execute the file
+ Then all you need to do is execute the file
(usually by clicking on its icon in Windows Explorer).
These will take you through a small
sequence of windows that will install
-->
+ <!--
+
+ XXX - don't have the kinks worked out on how to
+ get these to display properly in all formats,
+ so comment them out for now.
+
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="SCons-win32-install-1.jpg" format="jpg" align="center">
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="SCons-win32-install-2.jpg" format="jpg" align="center">
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="SCons-win32-install-3.jpg" format="jpg" align="center">
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="SCons-win32-install-4.jpg" format="jpg" align="center">
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+
+ -->
+
</section>
</section>
Download the <filename>scons-0.95.win32.exe</filename>
file from the &SCons; download page at
<ulink url="http://www.scons.org/download.html">http://www.scons.org/download.html</ulink>.
- Then all you need to is execute the file
+ Then all you need to do is execute the file
(usually by clicking on its icon in Windows Explorer).
These will take you through a small
sequence of windows that will install
-->
+ <!--
+
+ XXX - don't have the kinks worked out on how to
+ get these to display properly in all formats,
+ so comment them out for now.
+
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="SCons-win32-install-1.jpg" format="jpg" align="center">
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="SCons-win32-install-2.jpg" format="jpg" align="center">
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="SCons-win32-install-3.jpg" format="jpg" align="center">
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+
+ <screenshot>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="SCons-win32-install-4.jpg" format="jpg" align="center">
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+
+ -->
+
</section>
</section>
<section>
<title>How &SCons; Handles Java Dependencies</title>
- <scons_output example="java">
+ <para>
+
+ In addition to searching the source directory for
+ <filename>.java</filename> files,
+ &SCons; actually runs the <filename>.java</filename> files
+ through a stripped-down Java parser that figures out
+ what classes are defined.
+ In other words, &SCons; knows,
+ without you having to tell it,
+ what <filename>.class</filename> files
+ will be produced by the &javac; call.
+ So our one-liner example from the preceding section:
+
+ </para>
+
+ <scons_example name="java-classes">
+ <file name="SConstruct" printme="1">
+ Java('classes', 'src')
+ </file>
+ <file name="src/Example1.java">
+ public class Example1
+ {
+ public static void main(String[] args)
+ {
+ System.out.println("Hello Java world!\n");
+ }
+ }
+ public class AdditionalClass1
+ {
+ public static void main(String[] args)
+ {
+ System.out.println("Hello Java world!\n");
+ }
+ }
+ </file>
+ <file name="src/Example2.java">
+ public class Example2
+ {
+ class Inner2 {
+ public static void main(String[] args)
+ {
+ System.out.println("Hello Java world!\n");
+ }
+ }
+ }
+ </file>
+ <file name="src/Example3.java">
+ public class Example3
+ {
+ public static void main(String[] args)
+ {
+ System.out.println("Hello Java world!\n");
+ }
+ }
+ public class AdditionalClass3
+ {
+ public static void main(String[] args)
+ {
+ System.out.println("Hello Java world!\n");
+ }
+ }
+ </file>
+ </scons_example>
+
+ <para>
+
+ Will not only tell you reliably
+ that the <filename>.class</filename> files
+ in the <filename>classes</filename> subdirectory
+ are up-to-date:
+
+ </para>
+
+ <scons_output example="java-classes">
<command>scons -Q</command>
<command>scons -Q classes</command>
</scons_output>
+ <para>
+
+ But it will also remove all of the generated
+ <filename>.class</filename> files,
+ even for inner classes,
+ without you having to specify them manually.
+ For example, if our
+ <filename>Example1.java</filename>
+ and
+ <filename>Example3.java</filename>
+ files both define additional classes,
+ and the class defined in <filename>Example2.java</filename>
+ has an inner class,
+ running <userinput>scons -c</userinput>
+ will clean up all of those <filename>.class</filename> files
+ as well:
+
+ </para>
+
+ <scons_output example="java-classes">
+ <command>scons -Q</command>
+ <command>scons -Q -c classes</command>
+ </scons_output>
+
</section>
<section>
<section>
<title>How &SCons; Handles Java Dependencies</title>
+ <para>
+
+ In addition to searching the source directory for
+ <filename>.java</filename> files,
+ &SCons; actually runs the <filename>.java</filename> files
+ through a stripped-down Java parser that figures out
+ what classes are defined.
+ In other words, &SCons; knows,
+ without you having to tell it,
+ what <filename>.class</filename> files
+ will be produced by the &javac; call.
+ So our one-liner example from the preceding section:
+
+ </para>
+
+ <programlisting>
+ Java('classes', 'src')
+ </programlisting>
+
+ <para>
+
+ Will not only tell you reliably
+ that the <filename>.class</filename> files
+ in the <filename>classes</filename> subdirectory
+ are up-to-date:
+
+ </para>
+
<screen>
% <userinput>scons -Q</userinput>
javac -d classes -sourcepath src src/Example1.java src/Example2.java src/Example3.java
scons: `classes' is up to date.
</screen>
+ <para>
+
+ But it will also remove all of the generated
+ <filename>.class</filename> files,
+ even for inner classes,
+ without you having to specify them manually.
+ For example, if our
+ <filename>Example1.java</filename>
+ and
+ <filename>Example3.java</filename>
+ files both define additional classes,
+ and the class defined in <filename>Example2.java</filename>
+ has an inner class,
+ running <userinput>scons -c</userinput>
+ will clean up all of those <filename>.class</filename> files
+ as well:
+
+ </para>
+
+ <screen>
+ % <userinput>scons -Q</userinput>
+ javac -d classes -sourcepath src src/Example1.java src/Example2.java src/Example3.java
+ % <userinput>scons -Q -c classes</userinput>
+ Removed classes/Example1.class
+ Removed classes/AdditionalClass1.class
+ Removed classes/Example2$Inner2.class
+ Removed classes/Example2.class
+ Removed classes/Example3.class
+ Removed classes/AdditionalClass3.class
+ </screen>
+
</section>
<section>
<para>
Check for the availability of a library
- using the &CheckLibrary; method.
+ using the &CheckLib; method.
You only specify the basename of the library,
you don't need to add a <literal>lib</literal>
prefix or a <literal>.a</literal> or <literal>.lib</literal> suffix:
<para>
- If the library requires the inclusion of
- a header file to compile successfully,
- add that as a second argument:
+ Because the ability to use a library successfully
+ often depends on having access to a header file
+ that describes the library's interface,
+ you can check for a library
+ <emphasis>and</emphasis> a header file
+ at the same time by using the
+ &CheckLibWithHeader; method:
</para>
env = conf.Finish()
</sconstruct>
+ <para>
+
+ This is essentially shorthand for
+ separate calls to the &CheckHeader; and &CheckLib;
+ functions.
+
+ </para>
+
</section>
<section>
<para>
Check for the availability of a library
- using the &CheckLibrary; method.
+ using the &CheckLib; method.
You only specify the basename of the library,
you don't need to add a <literal>lib</literal>
prefix or a <literal>.a</literal> or <literal>.lib</literal> suffix:
<para>
- If the library requires the inclusion of
- a header file to compile successfully,
- add that as a second argument:
+ Because the ability to use a library successfully
+ often depends on having access to a header file
+ that describes the library's interface,
+ you can check for a library
+ <emphasis>and</emphasis> a header file
+ at the same time by using the
+ &CheckLibWithHeader; method:
</para>
env = conf.Finish()
</programlisting>
+ <para>
+
+ This is essentially shorthand for
+ separate calls to the &CheckHeader; and &CheckLib;
+ functions.
+
+ </para>
+
</section>
<section>
- Allow the env.WhereIs() method to take a "reject" argument to
let it weed out specific path names.
+ From Christoph Wiedemann:
+
+ - Add new Moc() and Uic() Builders for more explicit control over
+ Qt builds, plus new construction variables to control them:
+ $QT_AUTOSCAN, $QT_DEBUG, $QT_MOCCXXPREFIX, $QT_MOCCXXSUFFIX,
+ $QT_MOCHPREFIX, $QT_MOCHSUFFIX, $QT_UICDECLPREFIX, $QT_UICDECLSUFFIX,
+ $QT_UICIMPLPREFIX, $QT_UICIMPLSUFFIX and $QT_UISUFFIX.
+
+ - Add a new single_source keyword argument for Builders that enforces
+ a single source file on calls to the Builder.
+
RELEASE 0.95 - Mon, 08 Mar 2004 06:43:20 -0600
the flags from the environment used to specify the target, not
the environment that first has the Qt Builders attached.
- - Add new Moc() and Uic() Builders for Qt, and a slew of $QT_*
- construction variables to control them.
-
- - Add a new single_source keyword argument for Builders that enforces
- a single source file on calls to the Builder.
-
RELEASE 0.94 - Fri, 07 Nov 2003 05:29:48 -0600
DScan.add_skey('.x') => env.Append(DSUFFIXES = ['.x'])
FortranScan.add_skey('.x') => env.Append(FORTRANSUFFIXES = ['.x'])
- - The internal "node_factory" keyword argument has been removed;
- the separate and more flexible "target_factory" and "source_factory"
- keywords should be used instead.
+ - The "node_factory" and "scanner" keyword arguments to the Builder()
+ function have been removed. In their place, the separate and more
+ flexible "target_factory," "source_factory," "target_scanner" and
+ "source scanner" keywords should be used instead.
- SCons now treats file "extensions" that contain all digits (for
example, "file.123") as part of the file basename, for easier
'MANIFEST',
'os_spawnv_fix.diff',
'setup.cfg',
+ 'SCons-win32-install-1.jpg',
+ 'SCons-win32-install-2.jpg',
+ 'SCons-win32-install-3.jpg',
+ 'SCons-win32-install-4.jpg',
]
src_remove_list = [