Subject: [bug#27344] [PATCH v3 6/8] gnu: Add freehdl.

From: [email-masked] (Ludovic Courtès)
Date: Fri, 13 Oct 2017 10:21:47 +0200

Theodoros Foradis <[email-masked]> skribis:

> Ludovic Courtès writes:
>
>> Theodoros Foradis <[email-masked]> skribis:
>>
>>> * gnu/packages/engineering.scm (freehdl): New variable.
>>
>> I’ve applied the patch.  \o/
>>
>> I have one question for which I couldn’t find an answer in the previous
>> discussions:
>>
>>> +         (add-after 'configure 'patch-freehdl-pc
>>> +           (lambda* (#:key inputs #:allow-other-keys)
>>> +             (substitute* "freehdl.pc"
>>> +               (("=g\\+\\+")
>>> +                (string-append "=" (assoc-ref inputs "gcc")
>>> +                               "/bin/g++"))
>>> +               (("=libtool")
>>> +                (string-append "=" (assoc-ref inputs "libtool")
>>> +                               "/bin/libtool")))
>>> +             #t))
>>
>> The effect of this is to retain a reference to GCC, Libtool, and all
>> their dependencies, which makes the closure of FreeHDL much bigger.
>>
>> We could avoid it by just putting this in ‘freehdl.pc’:
>>
>>   cxx=g++
>>   libtool=libtool
>>
>> Now, whether this will work depends on whether/how users of ‘freehdl.pc’
>> use these variables.
>>
>> Could you check whether that would work?
>
> Yes, I have tested this and it should work. Freehdl is a VHDL to C
> compiler, so the user should be responsible for having a gcc toolchain
> in his environment to run the simulations.

Just to be clear: does FreeHDL invoke the C compiler by itself, or is it
up to the user to compile the C code produced by FreeHDL?

In the former case, FreeHDL should definitely keep a reference to the C
compiler; otherwise it wouldn’t work out-of-the-box.  In the latter
case, it doesn’t have to keep a reference to the C compiler.

> We can remove this phase (patch-freehdl-pc) altogether. Shall I submit
> this patch?

I can do it on your behalf if you confirm that it’s FreeHDL does not
invoke the C compiler directly.

Thank you!

Ludo’.