On May 13, 2004, at 11:48 AM, Dominique Devienne wrote:
>> -----Original Message-----
>> From: Curt Arnold [mailto:carnold@...]
>> I had a request to summarize recent developments and I'll try to add
>> some sense of the direction of near term developments.
>> On April 28, I released 1.0 beta 3, here are the release notes:
> Thanks a lot for the summary, and also the directions.
> Here is my own list of wishes:
> 1) More nested elements to be made datatypes, so they can
> be referenced (refid'd) from several compilers.
> The <defineset> would be my first choice. I could put
> Common defined in <defineset id="common">, and reference
> It in several compilers, adding just compiler/platform
> specific defines in these compilers.
> <versioninfo> would be my second choice. Some projects
> generate many DLLs, and the version info is identical
> except for the library name/description. I'd like to have
> a central <versioninfo id="version"> and override just
> the value that need overriding.
Versioninfo supports both extends and refid. sample/cppunit.ant
demonstrates this by defining a base versioninfo with product name,
version, etc and an extending versioninfo's that specify
> 2) Ability to define 'define's with no value. Currently, there
> is no way I could find to generate a command line that has
> /DNAME= on Windows, i.e. defines the symbol, but it has no value.
> I must use <compilerarg value="/DNAME=" if="win32-static" /> now.
<defineset defines="NAME" if="win32-static"/> should work.
<defineset><define name="NAME" value="Whatever"/></defineset> was added
to support the macro with a value since there was already a mechanism
for a macro without a value <defineset><define
name="NAME"/></defineset> probably wasn't seen as needed.
> 3) Ability to compiler Fortran 90/95 files with modules. The
> .f90 files declaring the modules must be compiled before the
> ones using the modules, otherwise the compilation fails.
> This requires parsing the .f90 files to find out which ones
> are modules. A lesser solution would add the ability to compile
> some files explicitly listed as such before others.
You might try using an embedded <compiler><fileset/></compiler> element
containing the files that must be compiled early. Also, you could have
two <cc> elements back to back.
> 4) Support for Suncc compiler. We have (legacy) non-ANSI C code
> that cannot be compiled with Solaris 'CC', and requires the
> use of 'cc'. We hacked up a compiler/linker adapter for it,
> but I'm afraid we do not fully understand the CppTasks
> architecture and it's probably quite bad (duplicated code).
I added the check sample to have something to test Sun's C89 compiler,
but I haven't confirmed it worked. I don't know the difference between
c89 and cc, they seem identical to me.
> 5) Support for the new & *free* MS Visual C++ Toolkit 2003, which
> is a 'fully' standard and *optimizing* C++ compiler from M$.
> See http://msdn.microsoft.com/visualc/vctoolkit2003/.
> It's basically the VS.NET 7.1 command line compiler, free!
Should work out of the box as long as you invoke \Program
Files\Microsoft Visual C++ Toolkit 2003\vcvars32.bat to set the
environment variables. I have run the Microsoft cross-compiler for
Itanium and other than some warnings for unsupported compiler options,
things went okay. When we get to dealing with cross-compilers, then
I'll look at clthumb, clarm, etc from the CE toolkit.
> 6) Finally, the 'executable' attribute for existing adapter.
> As I already mentioned, we need sometime, the same machine,
> gcc, gcc3, g++, g++3. Again, we hacked up a nasty gcc3
> adapter which is a duplication of the gcc one.
Which will require eliminating the singleton pattern in the compiler
adapters as mentioned in refactoring.
> 7) Ability to define new compiler/linker adapters without having
> to recompile CppTasks to plug in the enums for them.
> Ant 1.6, in addition to AntLibs, added the ability to use
> typedef'd class in a task, just by having a add(Type t).
> Or have an 'classname' attribute to be substituted for the
> compiler or linker 'name' attribute (pre-Ant 1.6 extension
There is a classname attribute in the compilers and linker elements for
this specific need.
> See 'Nested Types' section of
> Beside these, wishes, I'd like the max command line length on
> WinNT/2K/XP be increased from 1024 to 4K or 32K. I hacked it to
> 4K, since running out of it before even specifying file names.
> Win2K is fine with more for sure, and I believe only Win9x/Me
> are constrained to 1024. It's not real easy to find out what's
> the limit for the various Windows, by 32K seems to be the hard
> limit for the decent ones.
I've found it very hard to find reasonable documentation on what the
limits are for various Microsoft OS's. Any references would help.
> This is a long wish list, almost as long as yours ;-) These are
> just wishes of course, but coming from real world use of CppTasks,
> so I hope you'll consider them.
> Thanks again for CppTasks. Best regards, --DD