Thread overview
CDC- Compile D Code
Jul 03, 2009
Eric Poggel
Jul 03, 2009
Michael P.
Jul 03, 2009
Eric Poggel
Jul 03, 2009
Michael P.
Jul 04, 2009
Eric Poggel
July 03, 2009
Hello,

I wrote a new build tool for D.  I'm calling it CDC (for Compile D Code).  It's hosted at http://dsource.org/projects/cdc .  I'm open to any ideas or constructive criticism.  My target here is anyone looking for a very simple build solution, not an everything and the kitchen sink project like DSSS (not that that's a bad thing).


From the project description:

This is a D programming language build script (and library) that can be used to compile D (version 1) source code. Unlike Bud, DSSS/Rebuild, Jake, and similar tools, CDC is contained within a single file that can easily be distributed with projects. This simplifies the build process since no other tools are required. The customBuild() function can be utilized to turn CDC into a custom build script for your project.

CDC's only requirement is a D compiler. It is/will be supported on any operating system supported by the language. It works with dmd, ldc (soon), and gdc, phobos or tango.

CDC can be used just like dmd, except for the following improvements.

    * CDC can accept paths as as well as individual source files for
      compilation. Each path is recursively searched for source,
      library,
      object, and ddoc files.
    * CDC automatically creates a modules.ddoc file for use with
      CandyDoc? and similar documentation utilities.
    * CDC defaults to use the compiler that was used to build itself.
      Compiler flags are passed straight through to that compiler.
    * The -op flag is always used, to prevent name conflicts in object
      and doc files.
    * Documentation files are all placed in the same folder with their
      full package names. This makes relative links between documents
      easier.
July 03, 2009
Eric Poggel Wrote:

> Hello,
> 
> I wrote a new build tool for D.  I'm calling it CDC (for Compile D Code).  It's hosted at http://dsource.org/projects/cdc .  I'm open to any ideas or constructive criticism.  My target here is anyone looking for a very simple build solution, not an everything and the kitchen sink project like DSSS (not that that's a bad thing).
> 
> 
>  From the project description:
> 
> This is a D programming language build script (and library) that can be used to compile D (version 1) source code. Unlike Bud, DSSS/Rebuild, Jake, and similar tools, CDC is contained within a single file that can easily be distributed with projects. This simplifies the build process since no other tools are required. The customBuild() function can be utilized to turn CDC into a custom build script for your project.
> 
> CDC's only requirement is a D compiler. It is/will be supported on any operating system supported by the language. It works with dmd, ldc (soon), and gdc, phobos or tango.
> 
> CDC can be used just like dmd, except for the following improvements.
> 
>      * CDC can accept paths as as well as individual source files for
>        compilation. Each path is recursively searched for source,
>        library,
>        object, and ddoc files.
>      * CDC automatically creates a modules.ddoc file for use with
>        CandyDoc? and similar documentation utilities.
>      * CDC defaults to use the compiler that was used to build itself.
>        Compiler flags are passed straight through to that compiler.
>      * The -op flag is always used, to prevent name conflicts in object
>        and doc files.
>      * Documentation files are all placed in the same folder with their
>        full package names. This makes relative links between documents
>        easier.

It didn't build right away for me with DMD1.045 + Phobos.
I changed line 141 which is:
import std.c.time : sleep;
to
import std.c.time : sleep, usleep;
And it built fine.
The errors were:
michael@ubuntu:~/d/cdc/trunk$ dmd cdc.d
cdc.d(623): Error: undefined identifier usleep
cdc.d(623): Error: function expected before (), not usleep of type int
July 03, 2009
Michael P. wrote:
> Eric Poggel Wrote:
> 
>> Hello,
>>
>> I wrote a new build tool for D.  I'm calling it CDC (for Compile D Code).  It's hosted at http://dsource.org/projects/cdc .  I'm open to any ideas or constructive criticism.  My target here is anyone looking for a very simple build solution, not an everything and the kitchen sink project like DSSS (not that that's a bad thing).
>>
>>
>>  From the project description:
>>
>> This is a D programming language build script (and library) that can be used to compile D (version 1) source code. Unlike Bud, DSSS/Rebuild, Jake, and similar tools, CDC is contained within a single file that can easily be distributed with projects. This simplifies the build process since no other tools are required. The customBuild() function can be utilized to turn CDC into a custom build script for your project.
>>
>> CDC's only requirement is a D compiler. It is/will be supported on any operating system supported by the language. It works with dmd, ldc (soon), and gdc, phobos or tango.
>>
>> CDC can be used just like dmd, except for the following improvements.
>>
>>      * CDC can accept paths as as well as individual source files for
>>        compilation. Each path is recursively searched for source,
>>        library,
>>        object, and ddoc files.
>>      * CDC automatically creates a modules.ddoc file for use with
>>        CandyDoc? and similar documentation utilities.
>>      * CDC defaults to use the compiler that was used to build itself.
>>        Compiler flags are passed straight through to that compiler.
>>      * The -op flag is always used, to prevent name conflicts in object
>>        and doc files.
>>      * Documentation files are all placed in the same folder with their
>>        full package names. This makes relative links between documents
>>        easier.
> 
> It didn't build right away for me with DMD1.045 + Phobos.
> I changed line 141 which is:
> import std.c.time : sleep;
> to
> import std.c.time : sleep, usleep;
> And it built fine.
> The errors were:
> michael@ubuntu:~/d/cdc/trunk$ dmd cdc.d
> cdc.d(623): Error: undefined identifier usleep
> cdc.d(623): Error: function expected before (), not usleep of type int

Thanks.  Your patch is now committed.
July 03, 2009
Eric Poggel wrote:
> CDC's only requirement is a D compiler. It is/will be supported on any operating system supported by the language. It works with dmd, ldc (soon), and gdc, phobos or tango.

$ ./cdc -v cdc.d
/usr/bin/ld: unknown flag: -ocdc

Seems to be missing a space ?
    translate["-of"] = "-o";


Works OK on Mac OS X otherwise...
(tested with Phobos if it matters)

--anders
July 03, 2009
Eric Poggel Wrote:

> Michael P. wrote:
> > Eric Poggel Wrote:
> > 
> >> Hello,
> >>
> >> I wrote a new build tool for D.  I'm calling it CDC (for Compile D Code).  It's hosted at http://dsource.org/projects/cdc .  I'm open to any ideas or constructive criticism.  My target here is anyone looking for a very simple build solution, not an everything and the kitchen sink project like DSSS (not that that's a bad thing).
> >>
> >>
> >>  From the project description:
> >>
> >> This is a D programming language build script (and library) that can be used to compile D (version 1) source code. Unlike Bud, DSSS/Rebuild, Jake, and similar tools, CDC is contained within a single file that can easily be distributed with projects. This simplifies the build process since no other tools are required. The customBuild() function can be utilized to turn CDC into a custom build script for your project.
> >>
> >> CDC's only requirement is a D compiler. It is/will be supported on any operating system supported by the language. It works with dmd, ldc (soon), and gdc, phobos or tango.
> >>
> >> CDC can be used just like dmd, except for the following improvements.
> >>
> >>      * CDC can accept paths as as well as individual source files for
> >>        compilation. Each path is recursively searched for source,
> >>        library,
> >>        object, and ddoc files.
> >>      * CDC automatically creates a modules.ddoc file for use with
> >>        CandyDoc? and similar documentation utilities.
> >>      * CDC defaults to use the compiler that was used to build itself.
> >>        Compiler flags are passed straight through to that compiler.
> >>      * The -op flag is always used, to prevent name conflicts in object
> >>        and doc files.
> >>      * Documentation files are all placed in the same folder with their
> >>        full package names. This makes relative links between documents
> >>        easier.
> > 
> > It didn't build right away for me with DMD1.045 + Phobos.
> > I changed line 141 which is:
> > import std.c.time : sleep;
> > to
> > import std.c.time : sleep, usleep;
> > And it built fine.
> > The errors were:
> > michael@ubuntu:~/d/cdc/trunk$ dmd cdc.d
> > cdc.d(623): Error: undefined identifier usleep
> > cdc.d(623): Error: function expected before (), not usleep of type int
> 
> Thanks.  Your patch is now committed.

No problem.
Also, on the home page, http://dsource.org/projects/cdc, it says the homepage is http://yage3d.net in that little box. Might want to change that as well.
July 04, 2009
Anders F Björklund wrote:
> Eric Poggel wrote:
>> CDC's only requirement is a D compiler. It is/will be supported on any operating system supported by the language. It works with dmd, ldc (soon), and gdc, phobos or tango.
> 
> $ ./cdc -v cdc.d
> /usr/bin/ld: unknown flag: -ocdc
> 
> Seems to be missing a space ?
>     translate["-of"] = "-o";
> 
> 
> Works OK on Mac OS X otherwise...
> (tested with Phobos if it matters)
> 
> --anders
Fixed.  thanks for the bug report.