Thread overview
rdmd and extern(C)
Dec 22, 2010
spir
Dec 23, 2010
Nick Sabalausky
Dec 23, 2010
spir
Dec 23, 2010
Nick Sabalausky
Dec 23, 2010
Nick Sabalausky
December 22, 2010
Hello,

Is it possible use rdmd (to automagically link against imported D modules), when also calling C funcs? I tried to add the C file at the end of the building command, like eg (removed all dmd options):
	rdmd --build-only -ofmyProg myProg.d myCFuncs.o
but rdmd does not seem to transmit additional files to link against to dmd. (In addition to the ones guessed from imports.)

[Also, we would be glad to get some feedback when rdmd fails: currently it ends silently. (At the very minimum: "Failed to compile/link." At best, some more accurate messages such as "Cannot find imported module 'foo.d'.")]

Denis
-- -- -- -- -- -- --
vit esse estrany ☣

spir.wikidot.com

December 22, 2010
On 12/22/10 12:13 PM, spir wrote:
> Hello,
>
> Is it possible use rdmd (to automagically link against imported D modules), when also calling C funcs? I tried to add the C file at the end of the building command, like eg (removed all dmd options):
> 	rdmd --build-only -ofmyProg myProg.d myCFuncs.o
> but rdmd does not seem to transmit additional files to link against to dmd. (In addition to the ones guessed from imports.)
>
> [Also, we would be glad to get some feedback when rdmd fails: currently it ends silently. (At the very minimum: "Failed to compile/link." At best, some more accurate messages such as "Cannot find imported module 'foo.d'.")]
>
> Denis
> -- -- -- -- -- -- --
> vit esse estrany ☣
>
> spir.wikidot.com
>

Looks like a good enhancement for rdmd. That it doesn't "fail successfully" is a bug.

Andrei
December 23, 2010
"Andrei Alexandrescu" <SeeWebsiteForEmail@erdani.org> wrote in message news:iethab$2dj9$1@digitalmars.com...
> On 12/22/10 12:13 PM, spir wrote:
>> Hello,
>>
>> Is it possible use rdmd (to automagically link against imported D
>> modules), when also calling C funcs? I tried to add the C file at the end
>> of the building command, like eg (removed all dmd options):
>> rdmd --build-only -ofmyProg myProg.d myCFuncs.o
>> but rdmd does not seem to transmit additional files to link against to
>> dmd. (In addition to the ones guessed from imports.)
>>
>> [Also, we would be glad to get some feedback when rdmd fails: currently it ends silently. (At the very minimum: "Failed to compile/link." At best, some more accurate messages such as "Cannot find imported module 'foo.d'.")]
>>
>
> Looks like a good enhancement for rdmd. That it doesn't "fail successfully" is a bug.
>

@spir: rdmd's command-line syntax is like this:

rdmd {args to dmd and rdmd} app.d {args sent to app.exe}

So anything after the first *.d param is automatically considered a param for when rdmd runs the app your building, not for rdmd/dmd. Of course, if you're using --build-only, then such params just simply get ignored. In short, you have to do it like this:

rdmd --build-only -ofmyProg myCFuncs.o myProg.d

Unfortunately, that still doesn't work with the official version of rdmd. However...

@Andrei: I submitted an rdmd patch for this not too long ago:

http://d.puremagic.com/issues/show_bug.cgi?id=4928

It fixes this problem for object files, static library files, ".def" files and response files.


December 23, 2010
On Thu, 23 Dec 2010 01:31:29 -0500
"Nick Sabalausky" <a@a.a> wrote:

> > Looks like a good enhancement for rdmd. That it doesn't "fail successfully" is a bug.

May I suggest that rmdm prints out the command it sends to dmd (even when successful)? Not only it's "educative" but it should provide the correct list of modules ;-) (so that solving the issue about C files is then 3s work).

> @spir: rdmd's command-line syntax is like this:
> 
> rdmd {args to dmd and rdmd} app.d {args sent to app.exe}
> 
> So anything after the first *.d param is automatically considered a param for when rdmd runs the app your building, not for rdmd/dmd. Of course, if you're using --build-only, then such params just simply get ignored. In short, you have to do it like this:
> 
> rdmd --build-only -ofmyProg myCFuncs.o myProg.d

Right, than you. Anyway finishing with the "program" module (the only only one that should have a main()) makes sense. And if it's for running its args come next.
But the: how would rdmd makes the distinction when a prog happens to apply on modules? (You know, refactoring tools or such). My choice would be that they must first be 'built-only'.

> Unfortunately, that still doesn't work with the official version of rdmd. However...
> 
> @Andrei: I submitted an rdmd patch for this not too long ago:
> 
> http://d.puremagic.com/issues/show_bug.cgi?id=4928
> 
> It fixes this problem for object files, static library files, ".def" files and response files.


Great!

Denis
-- -- -- -- -- -- --
vit esse estrany ☣

spir.wikidot.com

December 23, 2010
On 12/23/10 12:31 AM, Nick Sabalausky wrote:
> "Andrei Alexandrescu"<SeeWebsiteForEmail@erdani.org>  wrote in message
> news:iethab$2dj9$1@digitalmars.com...
>> On 12/22/10 12:13 PM, spir wrote:
>>> Hello,
>>>
>>> Is it possible use rdmd (to automagically link against imported D
>>> modules), when also calling C funcs? I tried to add the C file at the end
>>> of the building command, like eg (removed all dmd options):
>>> rdmd --build-only -ofmyProg myProg.d myCFuncs.o
>>> but rdmd does not seem to transmit additional files to link against to
>>> dmd. (In addition to the ones guessed from imports.)
>>>
>>> [Also, we would be glad to get some feedback when rdmd fails: currently
>>> it ends silently. (At the very minimum: "Failed to compile/link." At
>>> best, some more accurate messages such as "Cannot find imported module
>>> 'foo.d'.")]
>>>
>>
>> Looks like a good enhancement for rdmd. That it doesn't "fail
>> successfully" is a bug.
>>
>
> @spir: rdmd's command-line syntax is like this:
>
> rdmd {args to dmd and rdmd} app.d {args sent to app.exe}
>
> So anything after the first *.d param is automatically considered a param
> for when rdmd runs the app your building, not for rdmd/dmd. Of course, if
> you're using --build-only, then such params just simply get ignored. In
> short, you have to do it like this:
>
> rdmd --build-only -ofmyProg myCFuncs.o myProg.d
>
> Unfortunately, that still doesn't work with the official version of rdmd.
> However...
>
> @Andrei: I submitted an rdmd patch for this not too long ago:
>
> http://d.puremagic.com/issues/show_bug.cgi?id=4928
>
> It fixes this problem for object files, static library files, ".def" files
> and response files.

Thanks! Did you test on all OSs?

Andrei
December 23, 2010
On 12/23/10 5:23 AM, spir wrote:
> On Thu, 23 Dec 2010 01:31:29 -0500
> "Nick Sabalausky"<a@a.a>  wrote:
>
>>> Looks like a good enhancement for rdmd. That it doesn't "fail
>>> successfully" is a bug.
>
> May I suggest that rmdm prints out the command it sends to dmd (even when successful)? Not only it's "educative" but it should provide the correct list of modules ;-) (so that solving the issue about C files is then 3s work).

The --chatty option should help.

Andrei


December 23, 2010
"Andrei Alexandrescu" <SeeWebsiteForEmail@erdani.org> wrote in message news:ievlbg$elu$2@digitalmars.com...
> On 12/23/10 12:31 AM, Nick Sabalausky wrote:
>> "Andrei Alexandrescu"<SeeWebsiteForEmail@erdani.org>  wrote in message news:iethab$2dj9$1@digitalmars.com...
>>> On 12/22/10 12:13 PM, spir wrote:
>>>> Hello,
>>>>
>>>> Is it possible use rdmd (to automagically link against imported D
>>>> modules), when also calling C funcs? I tried to add the C file at the
>>>> end
>>>> of the building command, like eg (removed all dmd options):
>>>> rdmd --build-only -ofmyProg myProg.d myCFuncs.o
>>>> but rdmd does not seem to transmit additional files to link against to
>>>> dmd. (In addition to the ones guessed from imports.)
>>>>
>>>> [Also, we would be glad to get some feedback when rdmd fails: currently it ends silently. (At the very minimum: "Failed to compile/link." At best, some more accurate messages such as "Cannot find imported module 'foo.d'.")]
>>>>
>>>
>>> Looks like a good enhancement for rdmd. That it doesn't "fail successfully" is a bug.
>>>
>>
>> @spir: rdmd's command-line syntax is like this:
>>
>> rdmd {args to dmd and rdmd} app.d {args sent to app.exe}
>>
>> So anything after the first *.d param is automatically considered a param for when rdmd runs the app your building, not for rdmd/dmd. Of course, if you're using --build-only, then such params just simply get ignored. In short, you have to do it like this:
>>
>> rdmd --build-only -ofmyProg myCFuncs.o myProg.d
>>
>> Unfortunately, that still doesn't work with the official version of rdmd. However...
>>
>> @Andrei: I submitted an rdmd patch for this not too long ago:
>>
>> http://d.puremagic.com/issues/show_bug.cgi?id=4928
>>
>> It fixes this problem for object files, static library files, ".def"
>> files
>> and response files.
>
> Thanks! Did you test on all OSs?
>

All that I have access to. Which is two: WinXP and Kubuntu (both x86, 32-bit).


December 23, 2010
"Nick Sabalausky" <a@a.a> wrote in message news:if04me$1vpa$1@digitalmars.com...
> "Andrei Alexandrescu" <SeeWebsiteForEmail@erdani.org> wrote in message news:ievlbg$elu$2@digitalmars.com...
>> On 12/23/10 12:31 AM, Nick Sabalausky wrote:
>>> "Andrei Alexandrescu"<SeeWebsiteForEmail@erdani.org>  wrote in message news:iethab$2dj9$1@digitalmars.com...
>>>> On 12/22/10 12:13 PM, spir wrote:
>>>>> Hello,
>>>>>
>>>>> Is it possible use rdmd (to automagically link against imported D
>>>>> modules), when also calling C funcs? I tried to add the C file at the
>>>>> end
>>>>> of the building command, like eg (removed all dmd options):
>>>>> rdmd --build-only -ofmyProg myProg.d myCFuncs.o
>>>>> but rdmd does not seem to transmit additional files to link against to
>>>>> dmd. (In addition to the ones guessed from imports.)
>>>>>
>>>>> [Also, we would be glad to get some feedback when rdmd fails:
>>>>> currently
>>>>> it ends silently. (At the very minimum: "Failed to compile/link." At
>>>>> best, some more accurate messages such as "Cannot find imported module
>>>>> 'foo.d'.")]
>>>>>
>>>>
>>>> Looks like a good enhancement for rdmd. That it doesn't "fail successfully" is a bug.
>>>>
>>>
>>> @spir: rdmd's command-line syntax is like this:
>>>
>>> rdmd {args to dmd and rdmd} app.d {args sent to app.exe}
>>>
>>> So anything after the first *.d param is automatically considered a
>>> param
>>> for when rdmd runs the app your building, not for rdmd/dmd. Of course,
>>> if
>>> you're using --build-only, then such params just simply get ignored. In
>>> short, you have to do it like this:
>>>
>>> rdmd --build-only -ofmyProg myCFuncs.o myProg.d
>>>
>>> Unfortunately, that still doesn't work with the official version of
>>> rdmd.
>>> However...
>>>
>>> @Andrei: I submitted an rdmd patch for this not too long ago:
>>>
>>> http://d.puremagic.com/issues/show_bug.cgi?id=4928
>>>
>>> It fixes this problem for object files, static library files, ".def"
>>> files
>>> and response files.
>>
>> Thanks! Did you test on all OSs?
>>
>
> All that I have access to. Which is two: WinXP and Kubuntu (both x86, 32-bit).
>

I have some other rdmd patches in bugzilla too. A bugzilla search on "rdmd" will find them all.