Using a betterC dub package in ordinary D
Ferhat Kurtulmuş
aferust at gmail.com
Fri Jan 8 18:46:51 UTC 2021
On Friday, 8 January 2021 at 18:28:36 UTC, Ferhat Kurtulmuş wrote:
> On Friday, 8 January 2021 at 15:40:12 UTC, Bastiaan Veelo wrote:
>> Hi,
>>
>> When I use earcutd [1] in an ordinary D project, I get a link
>> error for the __D7earcutd12__ModuleInfoZ symbol. This is
>> because the earcutd dub.json has `"dflags": ["-betterC"]`. I
>> think this is in error, my understanding of betterC code is
>> that it can be compiled with "-betterC", but does not need to
>> (and must not when used in D context).
>>
>> Am I right? What are the best practices for betterC dub
>> packages?
>>
>> Thanks,
>> Bastiaan.
>>
>>
>> [1] https://code.dlang.org/packages/earcutd
>
> Dear Bastiaaan,
>
> I am not an expert in dub system, but I have just pushed a
> modification in dub.json. I am not sure if it solves your
> problem. My modification is
>
> "configurations": [
> {
> "name": "default",
> "targetType": "library"
> },
> {
> "name": "betterC",
> "targetType": "library",
> "dflags": ["-betterC"]
> }
> ]
>
> now client projects must explicitly pass the subConfiguration
> parameter to compile it with betterC.
I also added this:
version(LDC){
version(D_BetterC){
pragma(LDC_no_moduleinfo);
}
}
Docs say
LDC_no_moduleinfo
This pragma disables the generation of the ModuleInfo metadata to
register the current module with druntime. Note that this, among
other things, leads to any static constructors not being run, and
should only be used in very specific circumstances.
I used that pragma against an error, but I cannot remember what
was that.
More information about the Digitalmars-d-learn
mailing list