Thread overview
What is the current status of D build systems?
Jul 31, 2015
Yuxuan Shui
Jul 31, 2015
Mike Parker
Jul 31, 2015
Yuxuan Shui
Jul 31, 2015
Manu
Jul 31, 2015
Atila Neves
Jul 31, 2015
Steven Dwy
Jul 31, 2015
Trent Forkert
Jul 31, 2015
Yuxuan Shui
Aug 01, 2015
lobo
July 31, 2015
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
July 31, 2015
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
July 31, 2015
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?
July 31, 2015
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.
July 31, 2015
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
July 31, 2015
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.
July 31, 2015
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
July 31, 2015
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.

>
> [...]

August 01, 2015
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