www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - What is the current status of D build systems?

reply "Yuxuan Shui" <yshuiv7 gmail.com> writes:
Hi,

I'm working on a project that mixes both C and D code, and does 
code generation as well.

I've been using a shell script to hack this together, since I 
can't figure out how to do this with dub.

Now I'm looking for a proper build system for building this 
project. reggae (https://github.com/atilaneves/reggae) seems to 
be promising, but it has bugs with indirect dependencies and 
failed to build my project. I have come across cmake-d and a 
modified version of cmake 
(https://github.com/trentforkert/cmake). I haven't tested them 
yet, because neither of them is updated recently, and I don't 
know if I should invest time in them.

So I want to know what is the current status of those build 
systems? Are they abandoned or still actively developed? And are 
there any other build systems I should look into?

Thanks.

---
Regards,
Yuxuan Shui
Jul 30 2015
next sibling parent reply "Mike Parker" <aldacron gmail.com> writes:
On Friday, 31 July 2015 at 00:13:42 UTC, Yuxuan Shui wrote:

 are there any other build systems I should look into?
Premake [1] supports mixing languages in the same build script. It's not a build tool itself, but can generate makefiles and IDE projects. Manu [2] maintains extensions for D support. [1] https://premake.github.io/ [2] https://github.com/premake/premake-dlang
Jul 30 2015
parent reply "Yuxuan Shui" <yshuiv7 gmail.com> writes:
On Friday, 31 July 2015 at 02:00:41 UTC, Mike Parker wrote:
 On Friday, 31 July 2015 at 00:13:42 UTC, Yuxuan Shui wrote:

 are there any other build systems I should look into?
Premake [1] supports mixing languages in the same build script. It's not a build tool itself, but can generate makefiles and IDE projects. Manu [2] maintains extensions for D support. [1] https://premake.github.io/ [2] https://github.com/premake/premake-dlang
It seems premake-dlang is not capable of fetch dub packages, is that correct?
Jul 30 2015
parent Manu via Digitalmars-d <digitalmars-d puremagic.com> writes:
On 31 July 2015 at 13:20, Yuxuan Shui via Digitalmars-d
<digitalmars-d puremagic.com> wrote:
 On Friday, 31 July 2015 at 02:00:41 UTC, Mike Parker wrote:
 On Friday, 31 July 2015 at 00:13:42 UTC, Yuxuan Shui wrote:

 are there any other build systems I should look into?
Premake [1] supports mixing languages in the same build script. It's not a build tool itself, but can generate makefiles and IDE projects. Manu [2] maintains extensions for D support. [1] https://premake.github.io/ [2] https://github.com/premake/premake-dlang
It seems premake-dlang is not capable of fetch dub packages, is that correct?
In that it doesn't have a special command to fetch dub packages, that is true. Premake projects are expressed with a scripting language though (Lua), so it's very easy to execute dub commands to fetch packages as part of your script if that's what you want to do. I haven't received any interest in built-in dub integration, but it's theoretically possible to make a built-in solution for fetching dub packages as part of the process quite easily. Using dub as a build system though is off the table though if you mix languages. It may be useful as a package manager, but generating standard makefiles for the multi-language build is necessary.
Jul 31 2015
prev sibling next sibling parent "Atila Neves" <atila.neves gmail.com> writes:
On Friday, 31 July 2015 at 00:13:42 UTC, Yuxuan Shui wrote:
 Hi,

 I'm working on a project that mixes both C and D code, and does 
 code generation as well.

 [...]
I'll get that bug fixed soon. I planned on doing it today but ran out of time. Atila
Jul 31 2015
prev sibling next sibling parent "Steven Dwy" <yoplitein gmail.com> writes:
On Friday, 31 July 2015 at 00:13:42 UTC, Yuxuan Shui wrote:
 I have come across cmake-d and a modified version of cmake 
 (https://github.com/trentforkert/cmake). I haven't tested them 
 yet, because neither of them is updated recently, and I don't 
 know if I should invest time in them.
I'm not sure about cmake-d. I think dcarp stated somewhere that he wasn't actively using D any more, or something to that effect. The fork of CMake is still active. Trentforkert said he is just waiting for things to progress in the D ecosystem before continuing work. (Mostly related to shared libraries.) If you're willing to build and use the fork (it's actually really easy,) then you can use the CMake generator I wrote for dub a few months back. Simply run `dub generate cmake` and it will spit out build scripts for your project and all of its dependencies.
Jul 31 2015
prev sibling parent reply "Trent Forkert" <trentforkert+d gmail.com> writes:
On Friday, 31 July 2015 at 00:13:42 UTC, Yuxuan Shui wrote:
 I have come across cmake-d and a modified version of cmake 
 (https://github.com/trentforkert/cmake).
Oh hey, that's me!
 I haven't tested them yet, because neither of them is
 updated recently, and I don't know if I should invest time
 in them.
I've got a handful of work-in-progress changes I've yet to push publicly, and even more I've yet to commit. (Yes, I have weird work habits.)
 So I want to know what is the current status of those build 
 systems?
I'm still around, and I fix bugs when they get in my way or someone else complains.
 Are they abandoned
No. Neglected, but not abandoned.
 or still actively developed?
If I can find the time (and the files, which hopefully survived a recent Linux distro-switch), I'll see about cleaning up and publishing the additional changes I have soon, and getting things on to a more recent version of CMake. As Steven Dwy said, I put the project on a bit of a hiatus while waiting for shared lib support to be ironed out (specifically, the behavior of `export`). Part of my unpublished changes includes a change that renders my previous concerns on that front solved regardless of what becomes of `export`. I would still like to be able to run tests for building shared libraries, and I won't even consider upstreaming until I can. Like I said though, I'll deal with bug reports if you file them. - Trent Forkert
Jul 31 2015
parent reply "Yuxuan Shui" <yshuiv7 gmail.com> writes:
On Friday, 31 July 2015 at 22:40:25 UTC, Trent Forkert wrote:
 On Friday, 31 July 2015 at 00:13:42 UTC, Yuxuan Shui wrote:
 [...]
Oh hey, that's me!
 [...]
I've got a handful of work-in-progress changes I've yet to push publicly, and even more I've yet to commit. (Yes, I have weird work habits.) [...]
Hi, I just want to let you know I've tried to build my project with your cmake fork, and it worked like a charm :) Good to hear it's still alive. Let's hope the situation about shared libraries can improve and you can move on.
 [...]
Jul 31 2015
parent "lobo" <swamplobo gmail.com> writes:
On Friday, 31 July 2015 at 23:59:07 UTC, Yuxuan Shui wrote:
 On Friday, 31 July 2015 at 22:40:25 UTC, Trent Forkert wrote:
 On Friday, 31 July 2015 at 00:13:42 UTC, Yuxuan Shui wrote:
 [...]
Oh hey, that's me!
 [...]
I've got a handful of work-in-progress changes I've yet to push publicly, and even more I've yet to commit. (Yes, I have weird work habits.) [...]
Hi, I just want to let you know I've tried to build my project with your cmake fork, and it worked like a charm :) Good to hear it's still alive. Let's hope the situation about shared libraries can improve and you can move on.
 [...]
I use CMake on mixed C/D projects and dub for D-only projects. On one project I'm using CMake to invoke dub to keep the D libs up to date and no another I invoke CMake from dub to build the C cruft. I find both work extremely well and are much better than shell scripts or plain Makefile bashing. bye, lobo
Jul 31 2015