libbsd include path issue

Christian Mauderer list at c-mauderer.de
Sun Jul 23 14:20:37 UTC 2017



Am 23.07.2017 um 15:57 schrieb Gedare Bloom:
> On Sun, Jul 23, 2017 at 8:38 AM, Christian Mauderer <list at c-mauderer.de> wrote:
>> Am 23.07.2017 um 14:05 schrieb Gedare Bloom:
>>> On Sun, Jul 23, 2017 at 8:04 AM, Gedare Bloom <gedare at rtems.org> wrote:
>>>> On Sun, Jul 23, 2017 at 7:49 AM, Gedare Bloom <gedare at rtems.org> wrote:
>>>>> On Sat, Jul 22, 2017 at 1:30 PM, Christian Mauderer <list at c-mauderer.de> wrote:
>>>>>> Hello Sichen,
>>>>>>
>>>>>> as discussed in our private chat I'm quite convinced that your problem
>>>>>> is that the source file is in "freebsd/crypto/openssl/crypto" which
>>>>>> doesn't end on a path called "openssl".
>>>>>>
>>>>>> As far as I can see, there is currently no support in our build system
>>>>>> for such cases. I created a (still quite uggly) hack that tries to copy
>>>>>> the headers to a path in the build tree. Could you please try out the
>>>>>> (mostly untested) attached patch? You should be able to specify
>>>>>> headerPaths() lines in builder.py which have different endings than the
>>>>>> original source paths.
>>>>>>
>>>>> No patch attached
>>>>>
>>>> Nevermind I see it.
>>>>
>>>>>> To our waf experts: Please tell me, that there is a better solution. If
>>>>>> not, it would be good if you could give me some feedback for a better
>>>>>> and cleaner solution. And: I currently only tried half a build. Do you
>>>>>> see any problems on any platforms on build or install with that
>>>>>> solution?
>>>>>>
>>>>> You should be able to specify the 'includes' attribute of the build
>>>>> rule to point it to the right directory wherever the parent of openssl
>>>>> is.
>>>>>
>>>>> But really, this openssl/opensslv.h should be located already in an
>>>>> include/ directory that would be found?
>>>>>
>>>> Can you add crypto/openssl/ to includes?
>>>>
>>> Rather freebsd/crypto. Then include directive should find the openssl
>>> subdirectory.
>>>
>>
>> The problem here is that the opensslv.h is in the directory
>> freebsd/crypto/openssl/crypto. It seems that some makefile magic would
>> install it to openssl/opensslv.h for the normal non-libbsd case (most
>> likely the "link" rule in freebsd/crypto/openssl/crypto/Makefile).
>>
> ah, I see. Then I can't think of any better solution than to make a
> rule something like you did that will copy the header file into an
> appropriate location of the build tree. The other alternative would be
> to create a softlink include/openssl in the source tree, effectively
> doing what the freebsd makefile would do during a build.

I have shortly thought about that too. I think I've seen some functions
in waf that might could create that softlink. But I had two problems
with that:

1. Like I said, I have seen some functions that _might_ could create a
link but I'm not sure what would be the best and correctest way. Any hints?

2. I have no idea how well that would work on a Windows build host. I
know that at least msys2 doesn't support soft links out of the box. They
are replaced by a copy. Any experience regarding that?



More information about the devel mailing list