Compile time executable calling?

deadalnix deadalnix at gmail.com
Mon Jul 15 21:26:40 PDT 2013


On Friday, 12 July 2013 at 21:54:02 UTC, Walter Bright wrote:
> On 7/12/2013 1:42 PM, Tofu Ninja wrote:
>> So I had an idea recently, wouldn't it be cool to have the 
>> ability to call an
>> executable at compile time and capture its output. Something 
>> like the string
>> imports but instead of opening and reading a text file, it run 
>> an executable,
>> waits for it to finish, and grabs its output.
>>
>> It would get really cool if you could pass this executable 
>> some args and then
>> mix in its out put into your own code. It could be used 
>> similarly to how CTFE
>> are used but with out the overhead of trying to compile that 
>> function and what
>> not and with out the limitations on what it can do.
>>
>> I could imagine all sorts of things that would be possible 
>> with this that is
>> currently not.
>>
>> Not sure if this is something that could be implemented 
>> easily, but seems like
>> something that could be done and something that would be 
>> really cool.
>
> This is actually done in the makefile that builds DMD. A 
> program (optabgen) is compiled and then run. Optabgen's output 
> is several .c files which are then compiled into DMD's binary. 
> The programs impcnvgen and idgen do similar things.
>
> It is a very powerful technique.

I did similar stuff for a mixed D/C++ program. The build 
contained some intermediary utilities used to spit out infos 
about the C++ code (typically sizeof and other characteristics 
like that) that could then be used to generate part of the 
binding in D.


More information about the Digitalmars-d mailing list