Whole mess of patches

Adriaan de Groot <[email protected]> Thu, 19 Jan 2006 00:28:17 +0100
Newsgroups gmane.comp.tools.aap.devel
Message-ID <[email protected]>
--nextPart1197847.YVG5TWgtYb
Content-Type: multipart/mixed;
  boundary="Boundary-01=_S8szDQqrzGBhmOu"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

--Boundary-01=_S8szDQqrzGBhmOu
Content-Type: text/plain;
  charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

[Actually, not patches -- I'm attaching the files in their entirety.]

1) kde.aap -- an AAP module that handles building KDE applications, in=20
particular the DCOP bindings. I believe this is a new file / module.

2) libtool.aap -- AAP support for GNU libtool. This adds the .libs hack Bra=
m=20
pointed out earlier, as well as doing proper installation for :ltprogram=20
targets.

3) qt.aap -- Qt for AAP, incorporating search path and improved logic for=20
$QTDIR.

4) ref-modules.sgml -- Documentation for the modules. I've added a nicer=20
introduction and moved the individual modules into sect1 elements instead o=
f=20
in a variablelist so that they are typeset nicer. And I've written some doc=
s=20
for the Qt module, like I promised.

=2D-=20
These are your friends - Adem
    GPG: FEA2 A3FE Adriaan de Groot

--Boundary-01=_S8szDQqrzGBhmOu
Content-Type: text/plain;
  charset="us-ascii";
  name="kde.aap"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
	filename="kde.aap"

# KDE (tm) module for the A-A-P build system.
#
# Written by Adriaan de Groot. Copyright is assigned to
# Bram Moolenaar and Stichting NlNet Labs.  Released under
# the GPL, version 2. There should be a file named COPYING
# in the main A-A-P directory with the complete text of
# this license.

# The KDE module includes support for the following:
#
# * Identifying KDEDIR, where KDE is installed. This is
#   available to recipes as $m_kde.KDEDIR. Recipes should use
#   $m_kde.KDEDIR/include for KDE includes, etc.
# * Support for DCOP skel and stub files. A target may list
#   a header file containing extra DCOP information in the
#   sources list, like so:
#       interface.h { filetype=skel } { var_LTOBJSUF = _skel.lo }
#   or so:
#       interface.h { filetype=stub } { var_LTOBJSUF = _stub.lo }
#
#   It is important to list both the filetype and the OBJSUF.
#   The header file is added to the sources, and the generation
#   of skeleton or stub C++ code is done in $BDIR.

# There is no support as yet for:
# * dcoplng
# * KDE icons
# * XDG files

# There is no special support for the following, but you can
# use normal AAP constructs to achieve the desired goals:
# * Installing servicetypes and application .desktop files.
#   This can be done through INSTALL_DATA; for instance by
#   assigning names of all the desktop files to a variable
#   and adding that to INSTALL_DATA :
#       _top.INSTALL_DATA += $*service_DATA { installdir = services }
#   here it is important to set { installdir } properly
#   _and_ to have PKGNAME set. Since KDE normally installs
#   directly under $PREFIX, set PKGNAME=

:import qt

KDEDIR = `os.environ.get("KDEDIR")`
@if not KDEDIR:
  @for dir in ['/usr/X11R6', '/usr', '/usr/local']:
    @if os.path.isdir(dir) and os.path.isfile(dir + "/include/kglobal.h"):
      KDEDIR = `dir`
  @if not KDEDIR:
    :error No KDEDIR specified; KDE could not be found automatically.
  # Patently impossible
  @if not os.path.isdir(KDEDIR):
    :error Autodetected KDE directory ($KDEDIR) is not a directory.

@if not os.path.isdir(KDEDIR):
  :error Environment variable KDEDIR ($KDEDIR) does not specify the KDE directory.

@if not os.path.isfile(KDEDIR + "/include/kglobal.h"):
  :error KDE directory ($KDEDIR) is missing include/kglobal.h


# Filetypes in KDE
:filetype
  declare h

###
### KDE Configuration support
###
### KDE configuration files are (preferably) described
### by an XML file; settings for the XML file are stored
### in a separate .kcfgc file in INI style. List the
### INI style file as a source to generate the configuration
### classes and compile them.
###

:filetype
  suffix kcfgc kcfgc

:python
  define_action("kcfgc",1,"""
    src = $-source
    dir = `os.path.dirname(src)`
    @if not dir:
    @  dir = "."
    :syseval grep ^File= $src |
      :syseval sed 's+File=\s*++' |
      :assign kcfgfile
    :sys kconfig_compiler -d $BDIR/$dir $dir/$-kcfgfile $src
    """,
    {},["kcfgc"],["h","cpp"],"`sufreplace('.kcfgc','.cpp',bdir(source))`")

:action depend kcfgc
  :print  : >! $target


:rule {global} {sourceexists} %.h : %.kcfgc
  :do kcfgc $source

:route kcfgc cpp object,ltobject
  kcfgc `bdir(sufreplace("",".cpp",source))`
  compile

###
### KDE DCOP support
###
### DCOP interfaces are defined in headers that contain the
### kdcop: tag; these should be spotted and processed specially
### to generate stub files (interfaces for calling remote methods)
### and skeleton files (implementations for the methods).
###

:filetype
  regexp _stub.cpp stub
  regexp _skel.cpp skel
  declare dcop
  declare kidl

:action compile dcop
  :sys dcopidl $-source > `bdir(sufreplace('','.kidl',source),0)`

:action compile kidl
  :sys dcopidl2cpp `bdir(source,0)`

:rule {global} %_stub.h : %.kidl
  :do compile $source{filetype=kidl}

:rule {global} {sourceexists} %.kidl : %.h
  :do compile $source{filetype=dcop}


:rule {global} {sourceexists} %.stub : %.h
  :copy $-source `bdir(target,0)`

:rule {global} {sourceexists} %.skel : %.h
  :copy $-source `bdir(target,0)`

:rule {global} {sourceexists} $BDIR/%_skel.cpp : %.h
  :sys dcopidl $-source > `bdir(sufreplace('','.kidl',source),0)`
  :sys dcopidl2cpp `bdir(sufreplace('','.kidl',source),0)`

:rule {global} {sourceexists} $BDIR/%_stub.cpp : %.h
  :sys dcopidl $-source > `bdir(sufreplace('','.kidl',source),0)`
  :sys dcopidl2cpp `bdir(sufreplace('','.kidl',source),0)`

:action compile ltobject skel
  :do compile `bdir(source)` { filetype=cpp } { target=$target }

:route skel ltobject
  compile

:action compile ltobject stub
  :do compile `bdir(source)` { filetype=cpp } { target=$target }

:route stub ltobject
  compile


:action build ltprogram ltobject
      :do ltbuild_cxx $source

:action cxx_build ltprogram ltobject
      :do ltbuild_cxx $source

:python
  def install_icons(path, list):
    print "Path: " + path
    for iconname in string.split(list):
      print "  Item: " + iconname
      for iconsize in [ 'cr16', 'cr22', 'cr32', 'cr48', 'cr64', 'hi16', 'hi22', 'hi32', 'hi48' ] :
        for icontype in [ 'action', 'app' ] :
          candidate = os.path.join( path, iconsize + "-" + icontype + "-" + iconname + ".png" )
          print candidate
          if os.path.exists( candidate ) :
            print candidate

--Boundary-01=_S8szDQqrzGBhmOu
Content-Type: text/plain;
  charset="us-ascii";
  name="libtool.aap"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
	filename="libtool.aap"

# libtool module for the A-A-P build system.
#
# Written by Adriaan de Groot. Copyright is assigned to
# Bram Moolenaar and Stichting NlNet Labs.  Released under
# the GPL, version 2. There should be a file named COPYING
# in the main A-A-P directory with the complete text of
# this license.
# Last Change: 2005 Dec 27

_top.LTSUF = .la
_top.LTPRE = lib
_top.LTOBJSUF = .lo

# Spend some time searching for the libtool program.
# This is very shellscript-ish, since I don't know
# any better. I expect libtool is posix-specific.
# "libtool15" is used on FreeBSD.

@if not _top.get("top_srcdir"):
    _top.top_srcdir = .

@libtool_locations = [ _no.get("LIBTOOL"), os.environ.get("LIBTOOL"), "libtool", os.path.join(_top.get("top_srcdir"), "libtool") ]
@libtool_locations.append( "/usr/local/gnu-autotools/bin/libtool" )
@for libtool in libtool_locations :
    @if libtool:
        @try:
            :syseval $libtool --version 2>&1 | :assign libtool_ver
            @if not libtool_ver:
                @continue
            @libtool_ver = re.sub("^[^)]*\) *", "", libtool_ver)
            @libtool_ver = re.sub("[^0-9.].*", "", libtool_ver)
            @if libtool_ver >= "1.5":
                @break
            @else:
                :log $libtool -- bad version
                libtool_ver=
        @except:
            libtool_ver=
@if not libtool_ver:
    :error Cannot find a proper libtool version (>= 1.5)
LIBTOOL = $libtool


# Initially, there is nothing to install.
_top.INSTALL_LTLIB = ""

# Declare a filetype to indicate that a program can be
# built with libtool.
:filetype
    declare ltprogram

# Define the compile actions
:python
    define_action("compile", 1, """
        @if not _no.get("target"):
            target = `src2obj(fname)`
        :attr {buildaction = cxx_build} $target       # Need to build with $CXX
        @if DEFER_ACTION_NAME:
            :do $DEFER_ACTION_NAME {target = $target} $source
        @else:
            :buildcheck $OPTIMIZE $?DEBUG
            :sys $LIBTOOL --mode=compile --tag=CXX $CXX $CPPFLAGS $?DEFINE $?INCLUDE `cflags_normal()` $CXXFLAGS -c -o $target $source
        """,
        outtypes = ["ltobject"],
        intypes = ["cpp"],
        defer_var_names = ["CXX_COMPILE_ACTION", "COMPILE_ACTION"])

# :route cpp ltobject {buildaction = cxx_build}
#     compile

:python
    define_action("compile", 1, """
        @if not _no.get("target"):
            target = `src2obj(fname)`
        @if DEFER_ACTION_NAME:
            :do $DEFER_ACTION_NAME {target = $target} $source
        @else:
            :buildcheck $OPTIMIZE $?DEBUG
            :sys $LIBTOOL --mode=compile --tag=C $CC $CPPFLAGS $?DEFINE $?INCLUDE `cflags_normal()` $CFLAGS -c -o $target $source
        """,
        outtypes = ["ltobject"],
        intypes = ["c"],
        defer_var_names = ["C_COMPILE_ACTION", "COMPILE_ACTION"])

# :route c ltobject
#     compile

# It may be useful to use { filetype= } in :ltlib commands,
# so that buildltlib can use the correct tag.
:python
    define_action("buildltlib", 1, """
            :sys $LIBTOOL --mode=link --tag=CXX $CXX $?LDFLAGS $?LTLIBS $?LIBS -o $target $source
            """,
            outtypes = ["default"],
            intypes = ["ltobject", "default"])

# This rule is still here so you can use the { filetype= }
# attribute to select to build a program with libtool or without.
:action build ltprogram default
    :sys $LIBTOOL --mode=link --tag=CXX
                g++ -o $target $source $LDFLAGS $?LTLIBS $?LIBS


# :do installtlib
:action installltlib default
  @for i in var2dictlist(source):
      @if i.has_key("installvar") and not i.get("installvar"):
	  @continue
      destltlib = $DESTDIR/$PREFIX/$DLLDIR
      @if i.has_key("installdir") and i.has_key("keepdir"):
	  :error Library $i has both {installdir} and {keepdir} set.
      @if i.has_key("installdir"):
          @destltlib = os.path.join(destltlib, i["installdir"])
      @destltlib = os.path.abspath(destltlib)
      @try:
          @os.makedirs(destltlib)
      @except OSError:
          :log $destltlib already exists
      @if i.has_key("keepdir"):
          @destltlib = os.path.join(destltlib, i["name"])
      @else:
	  @destltlib = os.path.join(destltlib, os.path.basename(i["name"]))
      @destltlib = os.path.abspath(destltlib)
      :sys $LIBTOOL --mode=install /usr/bin/install `i["name"]` $destltlib

:action ltbuild default
      # $LTLIBS is set, use libtool for linking
      :sys $LIBTOOL --mode=link --tag=C
              $CC $LDFLAGS `cflags_normal()` -o $target $source $?LTLIBS $?LIBS

:action ltbuild_cxx default
      # $LTLIBS is set, use libtool for linking
      :sys $LIBTOOL --mode=link --tag=CXX
              $CXX $LDFLAGS `cflags_normal()` -o $target $source $?LTLIBS $?LIBS

:action installexec ltprogram
  @for i in var2dictlist(source):
      @if i.has_key("installvar") and not i.get("installvar"):
          @continue
      destltlib = $DESTDIR/$PREFIX/$EXECDIR
      @if i.has_key("installdir") and i.has_key("keepdir"):
          :error Application $i has both {installdir} and {keepdir} set.
      @if i.has_key("installdir"):
          @destltlib = os.path.join(destltlib, i["installdir"])
      @destltlib = os.path.abspath(destltlib)
      @try:
          @os.makedirs(destltlib)
      @except OSError:
          :log $destltlib already exists
      @if i.has_key("keepdir"):
          @destltlib = os.path.join(destltlib, i["name"])
      @else:
          @destltlib = os.path.join(destltlib, os.path.basename(i["name"]))
      @destltlib = os.path.abspath(destltlib)
      :sys $LIBTOOL --mode=install /usr/bin/install `i["name"]` $destltlib

:rule %.lo : .libs/%.o

# vim: set sw=4 sts=4 tw=79 et :

--Boundary-01=_S8szDQqrzGBhmOu
Content-Type: text/plain;
  charset="us-ascii";
  name="qt.aap"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
	filename="qt.aap"

# Qt (tm) module for the A-A-P build system.
#
# Written by Adriaan de Groot. Copyright is assigned to
# Bram Moolenaar and Stichting NlNet Labs.  Released under
# the GPL, version 2. There should be a file named COPYING
# in the main A-A-P directory with the complete text of
# this license.

QTDIR = `os.environ.get("QTDIR")`
@if not QTDIR:
  @for dir in ['/usr/X11R6', '/usr', '/usr/local', '/usr/lib/qt3']:
    @if os.path.isdir(dir) and os.path.isfile(dir + "/include/qglobal.h"):
      QTDIR = `dir`
  @if not QTDIR:
    :error No QTDIR specified; Qt could not be found automatically.
  # Patently impossible
  @if not os.path.isdir(QTDIR):
    :error Autodetected Qt directory ($QTDIR) is not a directory.

@if not os.path.isdir(QTDIR):
  :error Environment variable QTDIR ($QTDIR) does not specify the Qt directory.

@if not os.path.isfile(QTDIR + "/include/qglobal.h"):
  :error Qt directory ($QTDIR) is missing include/qglobal.h

moc = $QTDIR/bin/moc
@if not os.path.isfile(moc):
  :error moc ($moc) is not executable.

# Filetypes in Qt & KDE
:filetype
      suffix ui ui    # designer files
      suffix moc moc  # moc files
      declare h       # header files, just to be complete

# This is for the intermediate mocs, which get #included
:action h2moc default
      :sys $moc -o $-target $source

:rule {global} {sourceexists} %.moc : %.h
      :do h2moc { target = `bdir(target)` } $source


# Designer files

# Two actions, because h files are often considered C or C++ sources.
:action ui2h h ui
      :sys uic -tr i18n $source > `bdir(target,0)`
:action ui2h cpp ui
      :sys uic -tr i18n $source > `bdir(target,0)`

:action ui2cpp cpp ui
      :do ui2h { target = `bdir(sufreplace("",".h",source))` { filetype=h } }
               $source { filetype=ui }
      :sys echo "#include <klocale.h>" > $target
      :sys uic -tr tr2i18n -impl `sufreplace("",".h",source)` $source > $(target).temp
      :sys sed -e "s,tr2i18n( \"\" ),QString::null,g"
              -e "s,tr2i18n( \"\"\, \"\" ),QString::null,g"
              -e "s,image\([0-9][0-9]*\)_data,img\1_dbSelection_base,g"
              $(target).temp >> $target
      :sys rm -rf $(target).temp
      :sys echo "#include \""`sufreplace("",".moc",source)`"\"" >> $target

:route ui h
      ui2h

:route ui cpp object,ltobject
      ui2cpp `sufreplace("",".cc",source)`
      compile

:route ui h moc
      ui2h `sufreplace("",".h",source)`
      h2moc

:rule {global} {sourceexists} %.cc : %.ui
      :do ui2cpp { target = $(target[0]) } $source

:rule {global} {sourceexists} %.h { filetype=h } : %.ui
      :do ui2h { target = $(target[0]) } $source

# vim: set sw=4 sts=4 tw=79 et :

--Boundary-01=_S8szDQqrzGBhmOu
Content-Type: text/sgml;
  charset="us-ascii";
  name="ref-modules.sgml"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
	filename="ref-modules.sgml"

<!--  vim: set sw=3D2 sts=3D2 et ft=3Ddocbk:

  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

=2D->

<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=3D"mod-d">d</link></term>
    <listitem>
      <para>
        Support for the <link linkend=3D"mod-d">"D" programming language</l=
ink>.=20
        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=3D"mod-libtool">libtool</link></term>
    <listitem>
      <para>
        Adds support for <link linkend=3D"mod-libtool">GNU libtool</link>,=
=20
	so that you can use it to build
        shared libraries in a portable manner.
        Automatically imported if you use a
        <link linkend=3D"cmd-ltlib">:ltlib</link> command.
	This is a prerequisite for the KDE module.
      </para>
    </listitem>
  </varlistentry>

  <varlistentry>
    <term><link linkend=3D"mod-qt">Qt&trade;</link></term>
    <listitem>
      <para>
        Adds support for the <link linkend=3D"mod-qt">Qt&trade; library</li=
nk>=20
	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=3D"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=20
        <xref linkend=3D"ref-tools"/> for supported D tools.
      </para>
      <table frame=3D"none">
        <title>Variables of the D module</title>
        <tgroup cols=3D"2">
          <colspec colwidth=3D"170"/>
          <thead>
            <row>
              <entry align=3D"left">name</entry>
              <entry align=3D"left">type&nbsp;&nbsp;</entry>
              <entry align=3D"left">description</entry>
            </row>
          </thead>
          <tbody>
            <row>
              <entry valign=3D"top"><anchor id=3D"var-d_compile_action"/> $=
D_COMPILE_ACTION
              </entry>
              <entry valign=3D"top"> Aap </entry>
              <entry valign=3D"top"> When not empty, specifies the action n=
ame to be=20
                executed for compiling a D file into an object, dllobject o=
r libobject=20
                file. See <xref linkend=3D"user-tools"/>. </entry>
            </row>
            <row>
              <entry valign=3D"top"><anchor id=3D"var-d_build_action"/> $D_=
BUILD_ACTION
              </entry>
              <entry valign=3D"top"> Aap </entry>
              <entry valign=3D"top"> When not empty, specifies the action n=
ame to be=20
                executed for building a program or library from object file=
s compiled
                by a D compiler. A "buildaction" attribute on one of the ob=
ject files=20
                is used before $D_BUILD_ACTION. See <xref linkend=3D"user-t=
ools"/>.=20
              </entry>
            </row>
            <row>
              <entry valign=3D"top"><anchor id=3D"var-d_builddll_action"/> =
$D_BUILDDLL_ACTION
              </entry>
              <entry valign=3D"top"> Aap </entry>
              <entry valign=3D"top"> When not empty, specifies the action n=
ame to be=20
                executed for building a dynamic link library from object fi=
les compiled
                by a D compiler. A "buildaction" attribute on one of the ob=
ject files=20
                is used before $D_BUILDDLL_ACTION. See <xref linkend=3D"use=
r-tools"/>.=20
              </entry>
           </row>
           <row>
             <entry valign=3D"top"><anchor id=3D"var-d_buildlib_action"/> $=
D_BUILDLIB_ACTION
             </entry>
             <entry valign=3D"top"> Aap </entry>
             <entry valign=3D"top"> When not empty, specifies the action na=
me to be=20
               executed for building a static library from object files com=
piled
               by a D compiler. A "buildaction" attribute on one of the obj=
ect files=20
               is used before $D_BUILDLIB_ACTION. See <xref linkend=3D"user=
=2Dtools"/>.=20
            </entry>
          </row>
          <row>
            <entry valign=3D"top"><anchor id=3D"var-d_buildonestep_action"/=
> $D_BUILDONESTEP_ACTION
            </entry>
            <entry valign=3D"top"> Aap </entry>
            <entry valign=3D"top"> When not empty, specifies the action nam=
e to be=20
              executed for building a program directly from D source.
              See <xref linkend=3D"user-tools"/>.=20
            </entry>
          </row>
          <row>
            <entry valign=3D"top"><anchor id=3D"var-d_builddllonestep_actio=
n"/> $D_BUILDDLLONESTEP_ACTION
            </entry>
            <entry valign=3D"top"> Aap </entry>
            <entry valign=3D"top"> When not empty, specifies the action nam=
e to be=20
              executed for building a dynamic link library directly from D=
=20
              source. See <xref linkend=3D"user-tools"/>.=20
            </entry>
          </row>
          <row>
            <entry valign=3D"top"><anchor id=3D"var-d_buildlibonestep_actio=
n"/> $D_BUILDLIBONESTEP_ACTION
            </entry>
            <entry valign=3D"top"> Aap </entry>
            <entry valign=3D"top"> When not empty, specifies the action nam=
e to=20
              be executed for building a static library directly from D sou=
rce.
              See <xref linkend=3D"user-tools"/>.=20
           </entry>
          </row>
          <row>
           <entry valign=3D"top"><anchor id=3D"var-dflags"/> $DFLAGS </entr=
y>
           <entry valign=3D"top"> user </entry>
           <entry valign=3D"top"> Compiler arguments passed to the D
                compiler. </entry>
          </row>
          <row>
           <entry valign=3D"top"><anchor id=3D"var-dlinkflags"/> $DLINKFLAG=
S </entry>
            <entry valign=3D"top"> user </entry>
            <entry valign=3D"top"> Arguments passed to the linker; in most =
cases
                libraries to link with. </entry>
          </row>
          <row>
            <entry valign=3D"top"><anchor id=3D"var-dimport"/> $DIMPORT </e=
ntry>
            <entry valign=3D"top"> user </entry>
            <entry valign=3D"top"> Import directories used for the D compil=
er.
              Always use the "-Ipath" form and don't use it for other=20
              switches. A-A-P will convert it to what the compiler actually=
=20
              uses. This variable is also used when checking for dependenci=
es.
              </entry>
          </row>
          <row>
            <entry valign=3D"top"><anchor id=3D"var-dversion"/> $DVERSION <=
/entry>
            <entry valign=3D"top"> user </entry>
            <entry valign=3D"top"> Version arguments passed to the D compil=
er.=20
             Always use the "-version=3D..." form, the tool will convert it=
 to
             what the compiler actually uses.</entry>
          </row>
          <row>
            <entry valign=3D"top"><anchor id=3D"var-ddebug"/> $DDEBUG </ent=
ry>
            <entry valign=3D"top"> user </entry>
            <entry valign=3D"top"> Debug arguments passed to the D compiler=
=2E=20
              Always use the "-debug"/"-debug=3D..." form, the tool will co=
nvert
              it to what the compiler actually uses. To enable symbolic deb=
ug
              information, set the the <link linkend=3D"var-debug">$DEBUG</=
link>=20
              to "yes". For other language independent debugging switches, =
like=20
              enabling profiling hooks, use $DFLAGS.
              </entry>
            </row>=20
          <row>
            <entry valign=3D"top"><anchor id=3D"var-dimplib"/> $DIMPLIB </e=
ntry>
            <entry valign=3D"top"> user </entry>
            <entry valign=3D"top"> If this variable is set to 'yes', an imp=
ort
              library will be created when building a dll on the Windows
              platform.
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table>=20

</sect1>

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

      <anchor id=3D"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=3D"cmd-ltlib">:ltlib</link> command.
      </para>
</sect1>

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

      <anchor id=3D"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=20
      for the .moc files -- the former is the usual style
      of the KDE project, the latter appears only infrequently.
      </note>
      </para>
</sect1>


--Boundary-01=_S8szDQqrzGBhmOu--

--nextPart1197847.YVG5TWgtYb
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (FreeBSD)

iD8DBQBDzs8XdqzuAf6io/4RAkKDAJwLwThoEZcPKrJ9Eu3jJFywXiYx1gCeKdqK
oUy/MB5EsmI3emcOVLr3ie4=
=znE/
-----END PGP SIGNATURE-----

--nextPart1197847.YVG5TWgtYb--


-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems?  Stop!  Download the new AJAX search engine that makes
searching your log files as easy as surfing the  web.  DOWNLOAD SPLUNK!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=103432&bid=230486&dat=121642