John Reimer wrote:
Hello Bill,
On Sun, Nov 16, 2008 at 6:01 PM, TomD <[EMAIL PROTECTED]> wrote:
John Reimer Wrote:
[...]
Thanks for the example. I've avoided makefiles in the past because,
despite
their power and flexibility, they are too complicated for what
amounts to
a fairly simple task in most cases. Granted, once they are created
for a
project, there shouldn't be much need to fiddle with them more.
Anyway, I'll keep your sample above in mind if I go this route.
Thanks. :)
-JJR
What I have learned this weekend is "don't try to be smart when brute
force
is just enough".
The following script is the fastest way to rebuild dwt on linux:
-----
#!/bin/bash
DMD=/opt/dmd/bin/dmd
DMDFLAGS="-debuglib=tango-base-dmd -defaultlib=tango-base-dmd"
DMDFLAGS=$DMDFLAGS" -I/opt/dmd/import"
DMDFLAGS=$DMDFLAGS" -version=Tango -version=Posix -L-tango-user-dmd"
DMDFLAGS=$DMDFLAGS" -O -release"
WBD=`pwd`
DMDFLAGS="-I$WBD $DMDFLAGS"
echo "Compile command:"
echo $DMD $DMDFLAGS -c -op
find dwt -iname \*.d | xargs $DMD $DMDFLAGS -c -op
echo "done compiling, build libdwt.a"
find dwt -name \*.o | xargs ar -svr libdwt.a
----
That takes 27s on my Laptop. I used to do the same directorywise,
that takes about 1m15s. Looks like the best strategy for a build
tool is to first grab the names of the files to recompile and then
give it to one instance of dmd to compile all of them at once.
Unfortunately,
the -v switch does not help when invoking dmd like this.
This agrees with the conventional wisdom for using dsss, which is to
turn the oneatatime option to off. I believe that causes dmd to be
called once with all the dependent files as args.
--bb
An update:
I'm back to using dsss successfully with acceptable build times. I
followed a setup similar to Frank's and managed to install dsss 0.75
correctly such that it builds a dwt-based project in approximately 38
seconds (with -gc flag active). For debug/test builds, I avoid building
the dwt library itself and simply reference the dwt directory as a
source library while compiling the test project. With a slight
adjustment to the etc/rebuild/dmd-tango-posix config file, I'm now
content with the ease of building sample projects via dsss.
Incidentally, I was originally doing all this on a linux distribution
installed in a virtual machine (VirtualBox originally, then Vmware)
which probably slowed the build times further. I have since moved to
using colinux under Windows XP which has proved to be a delight to work
under. For those interested, there are a couple of linux distribution
projects that use colinux as there base. It basically allows you to run
linux and linux programs full speed as a win32 service. X windows
programs can run seemlessly with win32 apps by using XMing which is
installed as part of the package. The apps run very fast since they are
not being run inside a virtual machine!
Here's the link to just one of the colinux distribtuions (based on
Ubuntu, the one I am currently using):
http://www.andlinux.org/
And here's a link that list a few other options:
http://colinux.wikia.com/wiki/Installation_out_of_the_box
You should still have a fair bit of RAM to run coLinux. I've got 1 GB
on my laptop, but 2+ GB probably would be better.
-JJR
Thanks for introducing me to coLinux! Sadly, no 64-bit support yet,
otherwise I would be installing it as I write this. That's a very
awesome project.