summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/SCons')
-rw-r--r--src/engine/SCons/Tool/DCommon.py12
-rw-r--r--src/engine/SCons/Tool/dmd.py11
-rw-r--r--src/engine/SCons/Tool/dmd.xml168
-rw-r--r--src/engine/SCons/Tool/gdc.py8
-rw-r--r--src/engine/SCons/Tool/gdc.xml262
-rw-r--r--src/engine/SCons/Tool/ldc.py15
-rw-r--r--src/engine/SCons/Tool/ldc.xml166
7 files changed, 411 insertions, 231 deletions
diff --git a/src/engine/SCons/Tool/DCommon.py b/src/engine/SCons/Tool/DCommon.py
index 02a5e73..c08f040 100644
--- a/src/engine/SCons/Tool/DCommon.py
+++ b/src/engine/SCons/Tool/DCommon.py
@@ -1,3 +1,5 @@
+from __future__ import print_function
+
"""SCons.Tool.DCommon
Common code for the various D tools.
@@ -32,6 +34,7 @@ __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
import os.path
+
def isD(env, source):
if not source:
return 0
@@ -42,6 +45,7 @@ def isD(env, source):
return 1
return 0
+
def addDPATHToEnv(env, executable):
dPath = env.WhereIs(executable)
if dPath:
@@ -49,6 +53,14 @@ def addDPATHToEnv(env, executable):
if os.path.isdir(phobosDir):
env.Append(DPATH=[phobosDir])
+
+def allAtOnceEmitter(target, source, env):
+ if env['DC'] in ('ldc2', 'dmd'):
+ env.SideEffect(str(target[0]) + '.o', target[0])
+ env.Clean(target[0], str(target[0]) + '.o')
+ return target, source
+
+
# Local Variables:
# tab-width:4
# indent-tabs-mode:nil
diff --git a/src/engine/SCons/Tool/dmd.py b/src/engine/SCons/Tool/dmd.py
index 3722936..76e885b 100644
--- a/src/engine/SCons/Tool/dmd.py
+++ b/src/engine/SCons/Tool/dmd.py
@@ -1,3 +1,5 @@
+from __future__ import print_function
+
"""SCons.Tool.dmd
Tool-specific initialization for the Digital Mars D compiler.
@@ -124,11 +126,10 @@ def generate(env):
env['DLIBDIRSUFFIX'] = ''
env['_DLIBDIRFLAGS'] = '${_concat(DLIBDIRPREFIX, LIBPATH, DLIBDIRSUFFIX, __env__, RDirs, TARGET, SOURCE)}'
-
env['DLIB'] = 'lib' if env['PLATFORM'] == 'win32' else 'ar cr'
env['DLIBCOM'] = '$DLIB $_DLIBFLAGS {0}$TARGET $SOURCES $_DLIBFLAGS'.format('-c ' if env['PLATFORM'] == 'win32' else '')
- #env['_DLIBFLAGS'] = '${_concat(DLIBFLAGPREFIX, DLIBFLAGS, DLIBFLAGSUFFIX, __env__)}'
+ # env['_DLIBFLAGS'] = '${_concat(DLIBFLAGPREFIX, DLIBFLAGS, DLIBFLAGSUFFIX, __env__)}'
env['DLIBFLAGPREFIX'] = '-'
env['DLIBFLAGSUFFIX'] = ''
@@ -152,10 +153,16 @@ def generate(env):
SCons.Tool.createStaticLibBuilder(env)
+ env['BUILDERS']['ProgramAllAtOnce'] = SCons.Builder.Builder(
+ action='$DC $_DINCFLAGS $_DVERFLAGS $_DDEBUGFLAGS $_DFLAGS -of$TARGET $DLINKFLAGS $__DRPATH $SOURCES $_DLIBDIRFLAGS $_DLIBFLAGS',
+ emitter=SCons.Tool.DCommon.allAtOnceEmitter,
+ )
+
def exists(env):
return env.Detect(['dmd', 'gdmd'])
+
# Local Variables:
# tab-width:4
# indent-tabs-mode:nil
diff --git a/src/engine/SCons/Tool/dmd.xml b/src/engine/SCons/Tool/dmd.xml
index f8936c1..dbbe9eb 100644
--- a/src/engine/SCons/Tool/dmd.xml
+++ b/src/engine/SCons/Tool/dmd.xml
@@ -32,10 +32,6 @@ Sets construction variables for D language compiler DMD.
<sets>
<item>DC</item>
<item>DCOM</item>
-<item>_DINCFLAGS</item>
-<item>_DVERFLAGS</item>
-<item>_DDEBUGFLAGS</item>
-<item>_DFLAGS</item>
<item>SHDC</item>
<item>SHDCOM</item>
<item>DPATH</item>
@@ -59,21 +55,177 @@ Sets construction variables for D language compiler DMD.
<item>SHDLINKCOM</item>
<item>DLIBLINKPREFIX</item>
<item>DLIBLINKSUFFIX</item>
-<item>_DLIBFLAGS</item>
<item>DLIBDIRPREFIX</item>
<item>DLIBDIRSUFFIX</item>
-<item>_DLIBDIRFLAGS</item>
<item>DLIB</item>
<item>DLIBCOM</item>
-<item>_DLIBFLAGS</item>
<item>DLIBFLAGPREFIX</item>
<item>DLIBFLAGSUFFIX</item>
+<item>DLINKFLAGPREFIX</item>
+<item>DLINKFLAGSUFFIX</item>
<item>RPATHPREFIX</item>
<item>RPATHSUFFIX</item>
-<item>_RPATH</item>
</sets>
<uses>
</uses>
</tool>
+<cvar name="DC">
+<summary>
+<para>
+The D compiler to use.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DCOM">
+<summary>
+<para>
+ The command line used to compile a D file to an object file.
+ Any options specified in the &cv-link-DFLAGS; construction variable
+ is included on this command line.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DDEBUG">
+<summary>
+<para>
+ List of debug tags to enable when compiling.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DFLAGS">
+<summary>
+<para>
+ General options that are passed to the D compiler.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DLIB">
+<summary>
+<para>
+ Name of the lib tool to use for D codes.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DLIBCOM">
+<summary>
+<para>
+ The command line to use when creating libraries.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DLINK">
+<summary>
+<para>
+ Name of the linker to use for linking systems including D sources.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DLINKCOM">
+<summary>
+<para>
+ The command line to use when linking systems including D sources.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DLINKFLAGS">
+<summary>
+<para>
+List of linker flags.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DPATH">
+<summary>
+<para>
+ List of paths to search for import modules.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DVERSIONS">
+<summary>
+<para>
+ List of version tags to enable when compiling.
+</para>
+</summary>
+</cvar>
+
+<cvar name="SHDC">
+<summary>
+<para>
+ The name of the compiler to use when compiling D source
+ destined to be in a shared objects.
+</para>
+</summary>
+</cvar>
+
+<cvar name="SHDCOM">
+<summary>
+<para>
+ The command line to use when compiling code to be part of shared objects.
+</para>
+</summary>
+</cvar>
+
+<cvar name="SHDLINK">
+<summary>
+<para>
+ The linker to use when creating shared objects for code bases
+ include D sources.
+</para>
+</summary>
+</cvar>
+
+<cvar name="SHDLINKCOM">
+<summary>
+<para>
+ The command line to use when generating shared objects.
+</para>
+</summary>
+</cvar>
+
+<cvar name="SHDLINKFLAGS">
+<summary>
+<para>
+ The list of flags to use when generating a shared object.
+</para>
+</summary>
+</cvar>
+
+<builder name="ProgramAllAtOnce">
+ <summary>
+ <para>
+ Builds an executable from D sources without first creating individual
+ objects for each file.
+ </para>
+ <para>
+ D sources can be compiled file-by-file as C and C++ source are, and
+ D is integrated into the &scons; Object and Program builders for
+ this model of build. D codes can though do whole source
+ meta-programming (some of the testing frameworks do this). For this
+ it is imperative that all sources are compiled and linked in a single call of
+ the D compiler. This builder serves that purpose.
+ </para>
+ <example_commands>
+ env.ProgramAllAtOnce('executable', ['mod_a.d, mod_b.d', 'mod_c.d'])
+ </example_commands>
+ <para>
+ This command will compile the modules mod_a, mod_b, and mod_c in a
+ single compilation process without first creating object files for
+ the modules. Some of the D compilers will create executable.o others
+ will not.
+ </para>
+ </summary>
+</builder>
+
</sconsdoc>
diff --git a/src/engine/SCons/Tool/gdc.py b/src/engine/SCons/Tool/gdc.py
index 32199b3..9433643 100644
--- a/src/engine/SCons/Tool/gdc.py
+++ b/src/engine/SCons/Tool/gdc.py
@@ -1,3 +1,5 @@
+from __future__ import print_function
+
"""SCons.Tool.gdc
Tool-specific initialization for the GDC compiler.
@@ -128,10 +130,16 @@ def generate(env):
SCons.Tool.createStaticLibBuilder(env)
+ env['BUILDERS']['ProgramAllAtOnce'] = SCons.Builder.Builder(
+ action='$DC $_DINCFLAGS $_DVERFLAGS $_DDEBUGFLAGS $_DFLAGS -o $TARGET $DLINKFLAGS $__DRPATH $SOURCES $_DLIBDIRFLAGS $_DLIBFLAGS',
+ emitter=SCons.Tool.DCommon.allAtOnceEmitter,
+ )
+
def exists(env):
return env.Detect('gdc')
+
# Local Variables:
# tab-width:4
# indent-tabs-mode:nil
diff --git a/src/engine/SCons/Tool/gdc.xml b/src/engine/SCons/Tool/gdc.xml
index 20544b0..5ef1f9a 100644
--- a/src/engine/SCons/Tool/gdc.xml
+++ b/src/engine/SCons/Tool/gdc.xml
@@ -32,10 +32,6 @@ Sets construction variables for the D language compiler GDC.
<sets>
<item>DC</item>
<item>DCOM</item>
-<item>_DINCFLAGS</item>
-<item>_DVERFLAGS</item>
-<item>_DDEBUGFLAGS</item>
-<item>_DFLAGS</item>
<item>SHDC</item>
<item>SHDCOM</item>
<item>DPATH</item>
@@ -57,16 +53,18 @@ Sets construction variables for the D language compiler GDC.
<item>SHDLINK</item>
<item>SHDLINKFLAGS</item>
<item>SHDLINKCOM</item>
+<item>DLIBLINKPREFIX</item>
+<item>DLIBLINKSUFFIX</item>
+<item>DLIBDIRPREFIX</item>
+<item>DLIBDIRSUFFIX</item>
<item>DLIB</item>
<item>DLIBCOM</item>
-<item>_DLIBFLAGS</item>
<item>DLIBFLAGPREFIX</item>
<item>DLIBFLAGSUFFIX</item>
<item>DLINKFLAGPREFIX</item>
<item>DLINKFLAGSUFFIX</item>
<item>RPATHPREFIX</item>
<item>RPATHSUFFIX</item>
-<item>_RPATH</item>
</sets>
<uses>
</uses>
@@ -75,7 +73,7 @@ Sets construction variables for the D language compiler GDC.
<cvar name="DC">
<summary>
<para>
-DC.
+The D compiler to use.
</para>
</summary>
</cvar>
@@ -83,7 +81,9 @@ DC.
<cvar name="DCOM">
<summary>
<para>
-DCOM.
+ The command line used to compile a D file to an object file.
+ Any options specified in the &cv-link-DFLAGS; construction variable
+ is included on this command line.
</para>
</summary>
</cvar>
@@ -91,39 +91,7 @@ DCOM.
<cvar name="DDEBUG">
<summary>
<para>
-DDEBUG.
-</para>
-</summary>
-</cvar>
-
-<cvar name="DDEBUGPREFIX">
-<summary>
-<para>
-DDEBUGPREFIX.
-</para>
-</summary>
-</cvar>
-
-<cvar name="DDEBUGSUFFIX">
-<summary>
-<para>
-DDEBUGSUFFIX.
-</para>
-</summary>
-</cvar>
-
-<cvar name="DFILESUFFIX">
-<summary>
-<para>
-DFILESUFFIX.
-</para>
-</summary>
-</cvar>
-
-<cvar name="DFLAGPREFIX">
-<summary>
-<para>
-DFLAGPREFIX.
+ List of debug tags to enable when compiling.
</para>
</summary>
</cvar>
@@ -131,31 +99,7 @@ DFLAGPREFIX.
<cvar name="DFLAGS">
<summary>
<para>
-DFLAGS.
-</para>
-</summary>
-</cvar>
-
-<cvar name="DFLAGSUFFIX">
-<summary>
-<para>
-DFLAGSUFFIX.
-</para>
-</summary>
-</cvar>
-
-<cvar name="DINCPREFIX">
-<summary>
-<para>
-DINCPREFIX.
-</para>
-</summary>
-</cvar>
-
-<cvar name="DINCSUFFIX">
-<summary>
-<para>
-DINCSUFFIX.
+ General options that are passed to the D compiler.
</para>
</summary>
</cvar>
@@ -163,7 +107,7 @@ DINCSUFFIX.
<cvar name="DLIB">
<summary>
<para>
-DLIB.
+ Name of the lib tool to use for D codes.
</para>
</summary>
</cvar>
@@ -171,55 +115,7 @@ DLIB.
<cvar name="DLIBCOM">
<summary>
<para>
-DLIBCOM.
-</para>
-</summary>
-</cvar>
-
-<cvar name="DLIBDIRPREFIX">
-<summary>
-<para>
-DLIBDIRPREFIX.
-</para>
-</summary>
-</cvar>
-
-<cvar name="DLIBDIRSUFFIX">
-<summary>
-<para>
-DLIBDIRSUFFIX.
-</para>
-</summary>
-</cvar>
-
-<cvar name="DLIBFLAGPREFIX">
-<summary>
-<para>
-DLIBFLAGPREFIX.
-</para>
-</summary>
-</cvar>
-
-<cvar name="DLIBFLAGSUFFIX">
-<summary>
-<para>
-DLIBFLAGSUFFIX.
-</para>
-</summary>
-</cvar>
-
-<cvar name="DLIBLINKPREFIX">
-<summary>
-<para>
-DLIBLINKPREFIX.
-</para>
-</summary>
-</cvar>
-
-<cvar name="DLIBLINKSUFFIX">
-<summary>
-<para>
-DLIBLINKSUFFIX.
+ The command line to use when creating libraries.
</para>
</summary>
</cvar>
@@ -227,7 +123,7 @@ DLIBLINKSUFFIX.
<cvar name="DLINK">
<summary>
<para>
-DLINK.
+ Name of the linker to use for linking systems including D sources.
</para>
</summary>
</cvar>
@@ -235,15 +131,7 @@ DLINK.
<cvar name="DLINKCOM">
<summary>
<para>
-DLINKCOM.
-</para>
-</summary>
-</cvar>
-
-<cvar name="DLINKFLAGPREFIX">
-<summary>
-<para>
-DLINKFLAGPREFIX.
+ The command line to use when linking systems including D sources.
</para>
</summary>
</cvar>
@@ -251,15 +139,7 @@ DLINKFLAGPREFIX.
<cvar name="DLINKFLAGS">
<summary>
<para>
-DLINKFLAGS.
-</para>
-</summary>
-</cvar>
-
-<cvar name="DLINKFLAGSUFFIX">
-<summary>
-<para>
-DLINKFLAGSUFFIX.
+List of linker flags.
</para>
</summary>
</cvar>
@@ -267,15 +147,7 @@ DLINKFLAGSUFFIX.
<cvar name="DPATH">
<summary>
<para>
-DPATH.
-</para>
-</summary>
-</cvar>
-
-<cvar name="DVERPREFIX">
-<summary>
-<para>
-DVERPREFIX.
+ List of paths to search for import modules.
</para>
</summary>
</cvar>
@@ -283,15 +155,7 @@ DVERPREFIX.
<cvar name="DVERSIONS">
<summary>
<para>
-DVERSIONS.
-</para>
-</summary>
-</cvar>
-
-<cvar name="DVERSUFFIX">
-<summary>
-<para>
-DVERSUFFIX.
+ List of version tags to enable when compiling.
</para>
</summary>
</cvar>
@@ -299,7 +163,8 @@ DVERSUFFIX.
<cvar name="SHDC">
<summary>
<para>
-SHDC.
+ The name of the compiler to use when compiling D source
+ destined to be in a shared objects.
</para>
</summary>
</cvar>
@@ -307,7 +172,7 @@ SHDC.
<cvar name="SHDCOM">
<summary>
<para>
-SHDCOM.
+ The command line to use when compiling code to be part of shared objects.
</para>
</summary>
</cvar>
@@ -315,7 +180,8 @@ SHDCOM.
<cvar name="SHDLINK">
<summary>
<para>
-SHDLINK.
+ The linker to use when creating shared objects for code bases
+ include D sources.
</para>
</summary>
</cvar>
@@ -323,7 +189,7 @@ SHDLINK.
<cvar name="SHDLINKCOM">
<summary>
<para>
-SHDLINKCOM.
+ The command line to use when generating shared objects.
</para>
</summary>
</cvar>
@@ -331,57 +197,35 @@ SHDLINKCOM.
<cvar name="SHDLINKFLAGS">
<summary>
<para>
-SHDLINKFLAGS.
-</para>
-</summary>
-</cvar>
-
-<cvar name="_DDEBUGFLAGS">
-<summary>
-<para>
-_DDEBUGFLAGS.
-</para>
-</summary>
-</cvar>
-
-<cvar name="_DFLAGS">
-<summary>
-<para>
-_DFLAGS.
-</para>
-</summary>
-</cvar>
-
-<cvar name="_DINCFLAGS">
-<summary>
-<para>
-_DINCFLAGS.
-</para>
-</summary>
-</cvar>
-
-<cvar name="_DLIBDIRFLAGS">
-<summary>
-<para>
-_DLIBDIRFLAGS.
-</para>
-</summary>
-</cvar>
-
-<cvar name="_DLIBFLAGS">
-<summary>
-<para>
-_DLIBFLAGS.
-</para>
-</summary>
-</cvar>
-
-<cvar name="_DVERFLAGS">
-<summary>
-<para>
-_DVERFLAGS.
-</para>
-</summary>
-</cvar>
+ The list of flags to use when generating a shared object.
+</para>
+</summary>
+</cvar>
+
+<builder name="ProgramAllAtOnce">
+ <summary>
+ <para>
+ Builds an executable from D sources without first creating individual
+ objects for each file.
+ </para>
+ <para>
+ D sources can be compiled file-by-file as C and C++ source are, and
+ D is integrated into the &scons; Object and Program builders for
+ this model of build. D codes can though do whole source
+ meta-programming (some of the testing frameworks do this). For this
+ it is imperative that all sources are compiled and linked in a single call of
+ the D compiler. This builder serves that purpose.
+ </para>
+ <example_commands>
+ env.ProgramAllAtOnce('executable', ['mod_a.d, mod_b.d', 'mod_c.d'])
+ </example_commands>
+ <para>
+ This command will compile the modules mod_a, mod_b, and mod_c in a
+ single compilation process without first creating object files for
+ the modules. Some of the D compilers will create executable.o others
+ will not.
+ </para>
+ </summary>
+</builder>
</sconsdoc>
diff --git a/src/engine/SCons/Tool/ldc.py b/src/engine/SCons/Tool/ldc.py
index ade95db..d0585af 100644
--- a/src/engine/SCons/Tool/ldc.py
+++ b/src/engine/SCons/Tool/ldc.py
@@ -1,3 +1,5 @@
+from __future__ import print_function
+
"""SCons.Tool.ldc
Tool-specific initialization for the LDC compiler.
@@ -103,24 +105,23 @@ def generate(env):
env['DSHLINK'] = '$DC'
env['DSHLINKFLAGS'] = SCons.Util.CLVar('$DLINKFLAGS -shared -defaultlib=phobos2-ldc')
# Hack for Fedora the packages of which use the wrong name :-(
- if os.path.exists('/usr/lib64/libphobos-ldc.so') or os.path.exists('/usr/lib32/libphobos-ldc.so') or os.path.exists('/usr/lib/libphobos-ldc.so') :
+ if os.path.exists('/usr/lib64/libphobos-ldc.so') or os.path.exists('/usr/lib32/libphobos-ldc.so') or os.path.exists('/usr/lib/libphobos-ldc.so'):
env['DSHLINKFLAGS'] = SCons.Util.CLVar('$DLINKFLAGS -shared -defaultlib=phobos-ldc')
env['SHDLINKCOM'] = '$DLINK -of=$TARGET $DSHLINKFLAGS $__DSHLIBVERSIONFLAGS $__DRPATH $SOURCES $_DLIBDIRFLAGS $_DLIBFLAGS'
env['DLIBLINKPREFIX'] = '' if env['PLATFORM'] == 'win32' else '-L-l'
env['DLIBLINKSUFFIX'] = '.lib' if env['PLATFORM'] == 'win32' else ''
- #env['_DLIBFLAGS'] = '${_concat(DLIBLINKPREFIX, LIBS, DLIBLINKSUFFIX, __env__, RDirs, TARGET, SOURCE)}'
+ # env['_DLIBFLAGS'] = '${_concat(DLIBLINKPREFIX, LIBS, DLIBLINKSUFFIX, __env__, RDirs, TARGET, SOURCE)}'
env['_DLIBFLAGS'] = '${_stripixes(DLIBLINKPREFIX, LIBS, DLIBLINKSUFFIX, LIBPREFIXES, LIBSUFFIXES, __env__)}'
env['DLIBDIRPREFIX'] = '-L-L'
env['DLIBDIRSUFFIX'] = ''
env['_DLIBDIRFLAGS'] = '${_concat(DLIBDIRPREFIX, LIBPATH, DLIBDIRSUFFIX, __env__, RDirs, TARGET, SOURCE)}'
-
env['DLIB'] = 'lib' if env['PLATFORM'] == 'win32' else 'ar cr'
env['DLIBCOM'] = '$DLIB $_DLIBFLAGS {0}$TARGET $SOURCES $_DLIBFLAGS'.format('-c ' if env['PLATFORM'] == 'win32' else '')
- #env['_DLIBFLAGS'] = '${_concat(DLIBFLAGPREFIX, DLIBFLAGS, DLIBFLAGSUFFIX, __env__)}'
+ # env['_DLIBFLAGS'] = '${_concat(DLIBFLAGPREFIX, DLIBFLAGS, DLIBFLAGSUFFIX, __env__)}'
env['DLIBFLAGPREFIX'] = '-'
env['DLIBFLAGSUFFIX'] = ''
@@ -144,10 +145,16 @@ def generate(env):
SCons.Tool.createStaticLibBuilder(env)
+ env['BUILDERS']['ProgramAllAtOnce'] = SCons.Builder.Builder(
+ action='$DC $_DINCFLAGS $_DVERFLAGS $_DDEBUGFLAGS $_DFLAGS -of=$TARGET $DLINKFLAGS $__DRPATH $SOURCES $_DLIBDIRFLAGS $_DLIBFLAGS',
+ emitter=SCons.Tool.DCommon.allAtOnceEmitter,
+ )
+
def exists(env):
return env.Detect('ldc2')
+
# Local Variables:
# tab-width:4
# indent-tabs-mode:nil
diff --git a/src/engine/SCons/Tool/ldc.xml b/src/engine/SCons/Tool/ldc.xml
index f07144b..9593f41 100644
--- a/src/engine/SCons/Tool/ldc.xml
+++ b/src/engine/SCons/Tool/ldc.xml
@@ -32,10 +32,6 @@ Sets construction variables for the D language compiler LDC2.
<sets>
<item>DC</item>
<item>DCOM</item>
-<item>_DINCFLAGS</item>
-<item>_DVERFLAGS</item>
-<item>_DDEBUGFLAGS</item>
-<item>_DFLAGS</item>
<item>SHDC</item>
<item>SHDCOM</item>
<item>DPATH</item>
@@ -59,23 +55,177 @@ Sets construction variables for the D language compiler LDC2.
<item>SHDLINKCOM</item>
<item>DLIBLINKPREFIX</item>
<item>DLIBLINKSUFFIX</item>
-<item>_DLIBFLAGS</item>
<item>DLIBDIRPREFIX</item>
<item>DLIBDIRSUFFIX</item>
-<item>_DLIBDIRFLAGS</item>
<item>DLIB</item>
<item>DLIBCOM</item>
-<item>_DLIBFLAGS</item>
<item>DLIBFLAGPREFIX</item>
<item>DLIBFLAGSUFFIX</item>
<item>DLINKFLAGPREFIX</item>
<item>DLINKFLAGSUFFIX</item>
<item>RPATHPREFIX</item>
<item>RPATHSUFFIX</item>
-<item>_RPATH</item>
</sets>
<uses>
</uses>
</tool>
+<cvar name="DC">
+<summary>
+<para>
+The D compiler to use.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DCOM">
+<summary>
+<para>
+ The command line used to compile a D file to an object file.
+ Any options specified in the &cv-link-DFLAGS; construction variable
+ is included on this command line.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DDEBUG">
+<summary>
+<para>
+ List of debug tags to enable when compiling.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DFLAGS">
+<summary>
+<para>
+ General options that are passed to the D compiler.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DLIB">
+<summary>
+<para>
+ Name of the lib tool to use for D codes.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DLIBCOM">
+<summary>
+<para>
+ The command line to use when creating libraries.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DLINK">
+<summary>
+<para>
+ Name of the linker to use for linking systems including D sources.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DLINKCOM">
+<summary>
+<para>
+ The command line to use when linking systems including D sources.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DLINKFLAGS">
+<summary>
+<para>
+List of linker flags.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DPATH">
+<summary>
+<para>
+ List of paths to search for import modules.
+</para>
+</summary>
+</cvar>
+
+<cvar name="DVERSIONS">
+<summary>
+<para>
+ List of version tags to enable when compiling.
+</para>
+</summary>
+</cvar>
+
+<cvar name="SHDC">
+<summary>
+<para>
+ The name of the compiler to use when compiling D source
+ destined to be in a shared objects.
+</para>
+</summary>
+</cvar>
+
+<cvar name="SHDCOM">
+<summary>
+<para>
+ The command line to use when compiling code to be part of shared objects.
+</para>
+</summary>
+</cvar>
+
+<cvar name="SHDLINK">
+<summary>
+<para>
+ The linker to use when creating shared objects for code bases
+ include D sources.
+</para>
+</summary>
+</cvar>
+
+<cvar name="SHDLINKCOM">
+<summary>
+<para>
+ The command line to use when generating shared objects.
+</para>
+</summary>
+</cvar>
+
+<cvar name="SHDLINKFLAGS">
+<summary>
+<para>
+ The list of flags to use when generating a shared object.
+</para>
+</summary>
+</cvar>
+
+<builder name="ProgramAllAtOnce">
+ <summary>
+ <para>
+ Builds an executable from D sources without first creating individual
+ objects for each file.
+ </para>
+ <para>
+ D sources can be compiled file-by-file as C and C++ source are, and
+ D is integrated into the &scons; Object and Program builders for
+ this model of build. D codes can though do whole source
+ meta-programming (some of the testing frameworks do this). For this
+ it is imperative that all sources are compiled and linked in a single call of
+ the D compiler. This builder serves that purpose.
+ </para>
+ <example_commands>
+ env.ProgramAllAtOnce('executable', ['mod_a.d, mod_b.d', 'mod_c.d'])
+ </example_commands>
+ <para>
+ This command will compile the modules mod_a, mod_b, and mod_c in a
+ single compilation process without first creating object files for
+ the modules. Some of the D compilers will create executable.o others
+ will not.
+ </para>
+ </summary>
+</builder>
+
</sconsdoc>