Hitchikers Guide to Porting Phobos / D Runtime to other architectures

Mike none at none.com
Tue Dec 3 17:38:38 PST 2013


On Tuesday, 3 December 2013 at 09:28:11 UTC, Iain Buclaw wrote:
> On 3 December 2013 02:43, Mike <none at none.com> wrote:
>>> Personally I feel that people porting to specific 
>>> architectures should
>>> maintain their differences in separate files under a /ports 
>>> directory
>>> structure - lets say core.stdc.stdio as a cod example. The 
>>> version for
>>> bionic would be under /ports/bionic/core/stdc/stdio.d, and 
>>> that is the
>>> module that gets compiled into the library when building for 
>>> bionic.
>>> When installing, the build process generates a header file of 
>>> the
>>> bionic version of core.stdc.stdio and puts the file in the 
>>> correct
>>> /include/core/stdc/stdio.di location.
>>>
>>> Though it is fine to say using version {} else version {} 
>>> else static
>>> assert(false); when dealing with a small set of 
>>> architectures.  I feel
>>> strongly this is not practical when considering there are 23+
>>> architectures and 12+ platforms that could be in mixed 
>>> combination.
>>> The result would either be lots of code duplications 
>>> everywhere, or
>>> just a wiry long block of spaghetti code.  Every port in one 
>>> file
>>> would (eventually) make it difficult for maintainers IMO.
>>
>>
>> I agree.  Submitted an enhancement here:
>> https://d.puremagic.com/issues/show_bug.cgi?id=11666
>
> Thanks.
>
> My name is Iain.

Iain (sorry for the misspelling),

I'm wondering if you could please elaborate on the following 
statement:

"When installing, the build process generates a header file of 
the bionic version of core.stdc.stdio and puts the file in the 
correct /include/core/stdc/stdio.di location."

Being new to D and the D Runtime build process, while I 
understand the general principle, I'm not seeing exactly how this 
can be implemented.

* How are header files generated in the build process?
* Once all the necessary files are generated, what need to be 
done to tell the compiler to "use this one"?

Also, D has "header files"? Tell me it isn't so.  Did you mean a 
.di file?  Are these called "header files"?


More information about the Digitalmars-d mailing list