Cross-dependencies and output folders and more

Dobes Vandermeer <dobes-1FMcoIRdraL2eFz/[email protected]>
Newsgroups gmane.comp.tools.aap.user
Message-ID <[email protected]>
I want to build my system, which is structured like this:

Libs/expat - Build a lib file
Libs/tomcrypt - Build a lib file
Libs/Utility - Build a lib file
Libs/ProtocolHandler - depends on Libs/Utility, Libs/tomcrypt,
Libs/expat
windows/ShellExtension - depends on Libs/ProtocolHandler and the others
by proxy
Java/xml - java-style source tree, want to produce xml.jar
Java/protocol - java-style source tree, want to produce protocol.jar,
using xml.jar

I also want to output the results into specific multiple places:

output/bin/* -- last built binaries for me to run
output/jars/* -- last build jars for me to use
output/Resources/* -- icon files and so on

When building installers, we have to construct a several special build
trees:

client_bundle/bin
client_bundle/jars
client_bundle/Resources

server_bundle/bin
server_bundle/jars

(more)

The output binaries used for testing have to simulate the installation
tree because the binaries use their own location to find their
configuration & the jar files.  The installer builders we are using are
somewhat restrictive about where they will get their files from, so we
want the install folders to be specially laid out.

We currently use Jam, and its "grist" feature was worked out very well,
because we can have multiple targets with the same filename but a
different "grist".  
How is this done in aap?  
Would I use :publish or :install?  And if so, can I have this done even
when not running 'aap install'?

How should I handle the cross-tree dependencies?  We I use:

Libs/ProtocolHandler/main.app:
:include {once} ../expat
:include {once} ../tomcrypt

Or maybe:
:child ../expat
:child ../tomcrypt

?

In our jam system, we have some top level files, Jamrules and
Jamrules.local, that allow us to specify useful variables and build
actions.

In aap, you seem to be recommending that we put:

include ../../common.aap

Since we know every file will have exactly the same line, couldn't we
imply insert that line?  In jam, you say:

SubDir TOP Libs expat ;

And it reverse-engineers the location of Jamrules and loads it.

SCons is even better -- it searches upwards for the top build script for
you, and loads it.  

Does aap have any kind of automatic tree detection?  It would be great
if I could omit not only the :include ../../common.app, but also any
lines for cross-tree dependencies (other than a line saying that this
executable links with that library, or this library uses that library so
link that one if you link this one).

Some of my source code is generated as part of the build process, and
the generator is also built in the build tree.   How do I tell aap how
to run my tool to generate those source files?  Is it ":action build
<whatever> ?"

With Jam, I can specify new rules, like "MakeNSISInstaller".  I can
apply this rule to build multiple different installers with different
input and output files.  Can I create an equivalent ":makensisinstaller
xxx : yyy" in aas?  Or how is this meant to be done?

BTW, these might make good FAQ entries (even if they are in the
documentation); I'm probably not the only one.

I'd like to use aap for my project, but I'm not a Python programmer
(yet) so I can't really hack it up to add these features if they aren't
there.



-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program.
Does SourceForge.net help you be more productive?  Does it
help you create better code?   SHARE THE LOVE, and help us help
YOU!  Click Here: http://sourceforge.net/donate/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.