<!--  vim: set sw=2 sts=2 et ft=docbk:

  Part of the A-A-P recipe executive: Standard Modules

  Copyright (C) 2002-2003 Stichting NLnet Labs
  Permission to copy and use this file is specified in the file COPYING.
  If this file is missing you can find it here: http://www.a-a-p.org/COPYING

-->

<para>
  There is no standard module for the "C" language.  This language is
  supported without the need to import a module.
</para>

<para>
The following modules are distributed with &Aap;:
<variablelist>
  <varlistentry>
    <term><link linkend="mod-d">d</link></term>
    <listitem>
      <para>
        Support for the <link linkend="mod-d">"D" programming language</link>. 
        With this module imported,
        <computeroutput>:program</computeroutput>, <computeroutput>:dll
        </computeroutput> and <computeroutput>:lib</computeroutput> commands
        can be used as easily as with C or C++.
      </para>
    </listitem>
  </varlistentry>

  <varlistentry>
    <term><link linkend="mod-libtool">libtool</link></term>
    <listitem>
      <para>
        Adds support for <link linkend="mod-libtool">GNU libtool</link>, 
	so that you can use it to build
        shared libraries in a portable manner.
        Automatically imported if you use a
        <link linkend="cmd-ltlib">:ltlib</link> command.
	This is a prerequisite for the KDE module.
      </para>
    </listitem>
  </varlistentry>

  <varlistentry>
    <term><link linkend="mod-qt">Qt&trade;</link></term>
    <listitem>
      <para>
        Adds support for the <link linkend="mod-qt">Qt&trade; library</link> 
	from Trolltech&trade;.
        This automatically searches for the Qt library in several
        likely places; see also the $QTDIR variable.
        Support is added for .ui (Qt Designer) files
        as sources, and
        for .moc (Qt Meta-Object system) as dependencies
        generated from header files.
      </para>
    </listitem>
  </varlistentry>

</variablelist>


</para>

<sect1><title>The "D" Programming Language</title>

      <anchor id="mod-d"/>
      <para>
        Support for the "D" programming language. With this module imported,
        <computeroutput>:program</computeroutput>, <computeroutput>:dll
        </computeroutput> and <computeroutput>:lib</computeroutput> commands
        can be used as easily as with C or C++. To customize compilation and
        linking, the variables below can be filled. See also 
        <xref linkend="ref-tools"/> for supported D tools.
      </para>
      <table frame="none">
        <title>Variables of the D module</title>
        <tgroup cols="2">
          <colspec colwidth="170"/>
          <thead>
            <row>
              <entry align="left">name</entry>
              <entry align="left">type&nbsp;&nbsp;</entry>
              <entry align="left">description</entry>
            </row>
          </thead>
          <tbody>
            <row>
              <entry valign="top"><anchor id="var-d_compile_action"/> $D_COMPILE_ACTION
              </entry>
              <entry valign="top"> Aap </entry>
              <entry valign="top"> When not empty, specifies the action name to be 
                executed for compiling a D file into an object, dllobject or libobject 
                file. See <xref linkend="user-tools"/>. </entry>
            </row>
            <row>
              <entry valign="top"><anchor id="var-d_build_action"/> $D_BUILD_ACTION
              </entry>
              <entry valign="top"> Aap </entry>
              <entry valign="top"> When not empty, specifies the action name to be 
                executed for building a program or library from object files compiled
                by a D compiler. A "buildaction" attribute on one of the object files 
                is used before $D_BUILD_ACTION. See <xref linkend="user-tools"/>. 
              </entry>
            </row>
            <row>
              <entry valign="top"><anchor id="var-d_builddll_action"/> $D_BUILDDLL_ACTION
              </entry>
              <entry valign="top"> Aap </entry>
              <entry valign="top"> When not empty, specifies the action name to be 
                executed for building a dynamic link library from object files compiled
                by a D compiler. A "buildaction" attribute on one of the object files 
                is used before $D_BUILDDLL_ACTION. See <xref linkend="user-tools"/>. 
              </entry>
           </row>
           <row>
             <entry valign="top"><anchor id="var-d_buildlib_action"/> $D_BUILDLIB_ACTION
             </entry>
             <entry valign="top"> Aap </entry>
             <entry valign="top"> When not empty, specifies the action name to be 
               executed for building a static library from object files compiled
               by a D compiler. A "buildaction" attribute on one of the object files 
               is used before $D_BUILDLIB_ACTION. See <xref linkend="user-tools"/>. 
            </entry>
          </row>
          <row>
            <entry valign="top"><anchor id="var-d_buildonestep_action"/> $D_BUILDONESTEP_ACTION
            </entry>
            <entry valign="top"> Aap </entry>
            <entry valign="top"> When not empty, specifies the action name to be 
              executed for building a program directly from D source.
              See <xref linkend="user-tools"/>. 
            </entry>
          </row>
          <row>
            <entry valign="top"><anchor id="var-d_builddllonestep_action"/> $D_BUILDDLLONESTEP_ACTION
            </entry>
            <entry valign="top"> Aap </entry>
            <entry valign="top"> When not empty, specifies the action name to be 
              executed for building a dynamic link library directly from D 
              source. See <xref linkend="user-tools"/>. 
            </entry>
          </row>
          <row>
            <entry valign="top"><anchor id="var-d_buildlibonestep_action"/> $D_BUILDLIBONESTEP_ACTION
            </entry>
            <entry valign="top"> Aap </entry>
            <entry valign="top"> When not empty, specifies the action name to 
              be executed for building a static library directly from D source.
              See <xref linkend="user-tools"/>. 
           </entry>
          </row>
          <row>
           <entry valign="top"><anchor id="var-dflags"/> $DFLAGS </entry>
           <entry valign="top"> user </entry>
           <entry valign="top"> Compiler arguments passed to the D
                compiler. </entry>
          </row>
          <row>
           <entry valign="top"><anchor id="var-dlinkflags"/> $DLINKFLAGS </entry>
            <entry valign="top"> user </entry>
            <entry valign="top"> Arguments passed to the linker; in most cases
                libraries to link with. </entry>
          </row>
          <row>
            <entry valign="top"><anchor id="var-dimport"/> $DIMPORT </entry>
            <entry valign="top"> user </entry>
            <entry valign="top"> Import directories used for the D compiler.
              Always use the "-Ipath" form and don't use it for other 
              switches. A-A-P will convert it to what the compiler actually 
              uses. This variable is also used when checking for dependencies.
              </entry>
          </row>
          <row>
            <entry valign="top"><anchor id="var-dversion"/> $DVERSION </entry>
            <entry valign="top"> user </entry>
            <entry valign="top"> Version arguments passed to the D compiler. 
             Always use the "-version=..." form, the tool will convert it to
             what the compiler actually uses.</entry>
          </row>
          <row>
            <entry valign="top"><anchor id="var-ddebug"/> $DDEBUG </entry>
            <entry valign="top"> user </entry>
            <entry valign="top"> Debug arguments passed to the D compiler. 
              Always use the "-debug"/"-debug=..." form, the tool will convert
              it to what the compiler actually uses. To enable symbolic debug
              information, set the the <link linkend="var-debug">$DEBUG</link> 
              to "yes". For other language independent debugging switches, like 
              enabling profiling hooks, use $DFLAGS.
              </entry>
            </row> 
          <row>
            <entry valign="top"><anchor id="var-dimplib"/> $DIMPLIB </entry>
            <entry valign="top"> user </entry>
            <entry valign="top"> If this variable is set to 'yes', an import
              library will be created when building a dll on the Windows
              platform.
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table> 

</sect1>

<sect1><title>GNU Libtool</title>

      <anchor id="mod-libtool"/>
      <para>
        Adds support for GNU libtool, so that you can use it to build
        shared libraries in a portable manner.
        Automatically imported if you use a
        <link linkend="cmd-ltlib">:ltlib</link> command.
      </para>
</sect1>

<sect1><title>The Qt Library</title>

      <anchor id="mod-qt"/>
      <para>
        Adds support for the Qt&trade; library, distributed by Trolltech.
	Qt is a toolkit for graphical user interfaces,
	and forms the basis for the KDE Desktop environment.
	Qt adds a form of introspection to C++ as well as a
	way to loosely couple components through the signals and slots
	mechanism.
      </para>

      <para>
      The Qt module attempts to automatically locate the Qt libraries
      and headers on your system. If this fails, an error will be printed.
      You can set the environment variable QTDIR to tell &Aap; where
      Qt is installed if the automatic detection does not find it.
      </para>

      <para>
      When the Qt module is loaded, an additional source file type
      ui is added; these are files created by Qt's Designer application
      which describe a GUI. You can list a .ui file as a source file
      in any program, library or other &Aap; target.
      The .ui files are processed by uic to produce C++ code which
      is later compiled.
      </para>

      <para>
      As part of the Qt object system, header files (and sometimes
      C++ sources) are progessed to create moc (Meta Object Compiler)
      files; these .moc files are typically included from the C++ code.
      The Qt module for &Aap; automatically detects this additional
      dependency and processes headers and C++ sources appropriately.
      <note>
      You must use headername.moc and not headername.moc.cpp 
      for the .moc files -- the former is the usual style
      of the KDE project, the latter appears only infrequently.
      </note>
      </para>
</sect1>

