Hello
Thanks for looking into this
Here is updated webrev.

http://cr.openjdk.java.net/~vkempik/8248495/webrev.03/

Regards, Vladimir.

> 1 июля 2020 г., в 21:59, Erik Joelsson <erik.joels...@oracle.com> написал(а):
> 
> I think this looks ok, but would like Magnus' input as he is already involved 
> in this review.
> 
> /Erik
> 
> On 2020-07-01 02:45, Vladimir Kempik wrote:
>> Hello
>> 
>> Please take a look at updated webrev - 
>> http://cr.openjdk.java.net/~vkempik/8248495/webrev.02/ 
>> <http://cr.openjdk.java.net/~vkempik/8248495/webrev.02/>
>> 
>> I decided to use AC_CHECK_HEADERS instead AC_CHECK_FILE as it doesn’t work 
>> in cross-compilation scenario.
>> 
>> libffi binary is located in absolutely standard location, so -lffi was 
>> enough.
>> 
>> Thanks, Vladimir
>> 
>>> 30 июня 2020 г., в 23:09, Magnus Ihse Bursie 
>>> <magnus.ihse.bur...@oracle.com> написал(а):
>>> 
>>> 
>>> On 2020-06-30 21:08, Vladimir Kempik wrote:
>>>> Hello
>>>> 
>>>> I agree modding  hpp files is a bad idea
>>>> 
>>>> Thanks for idea with setting LIBFFI_CFLAGS
>>>> 
>>>> here is updated webrev: 
>>>> http://cr.openjdk.java.net/~vkempik/8248495/webrev.01/
>>> I still think you are doing this too complicated, and the wrong way around.
>>>> AC_CHECK_HEADERS ignored CFLAGS for some reason, so modding header_name 
>>>> for it was still needed.
>>> No, AC_CHECK_HEADERS does not work that way. It knows nothing about our 
>>> internal variables. How could it?
>>> 
>>> First of all, I still think you should let PKG_CHECK_MODULES do its magic 
>>> first. If that fails, you can try compiling with AC_CHECK_HEADERS([ffi.h]), 
>>> just as the code currently does.
>>> 
>>> Only if this fails, your workaround should kick in, before giving up 
>>> completely. At this point, you should check if 
>>> ${SYSROOT}/usr/include/ffi/ffi/ffi.h exists. If it does, you should set
>>> LIBFFI_CFLAGS := -I${SYSROOT}/usr/include/ffi/ffi
>>> 
>>> and you will not need the AC_CHECK_HEADERS, since you know the ffi.h file 
>>> is there, and there is a AC_LINK_IFELSE at the end to verify that 
>>> everything works. You can even skip the platform checks, since this will 
>>> apply to all configurations where the header file is in this odd place 
>>> relative to the sysroot. (But please save a comment about where you have 
>>> spotted it.)
>>> 
>>> However, you are not done yet.  Your patch do not address the whereabouts 
>>> of the library, only the include file. I assume it might too be stored in 
>>> an odd location?
>>> 
>>> I see that we do not follow the best-practice of separating LDFLAGS and 
>>> LIBS here, so if you need to point to a non-standard location for the 
>>> library, you have to do like this example:
>>> 
>>> LIBFFI_LIBS="-L${with_libffi}/lib -lffi"
>>> 
>>> Ideally, this should be explit out to an LIBFFI_LDFLAGS, but that's a 
>>> change for another day, since it required changes in many places.
>>> 
>>> /Magnus
>>> 
>>> 
>>> 
>>>> This special case only applies to macos/clang when sysroot is set and no 
>>>> libffi configure options is used. (which is default case)
>>>> 
>>>> Thanks, Vladimir
>>>> 
>>>> 
>>>>> 30 июня 2020 г., в 19:46, Magnus Ihse Bursie 
>>>>> <magnus.ihse.bur...@oracle.com> написал(а):
>>>>> 
>>>>> Vladimir,
>>>>> 
>>>>> This looks like it can break in other situation than your specific case.
>>>>> 
>>>>> It sounds like you should set LIBFFI_CFLAGS= to  -I<path to your ffi 
>>>>> installation>, such that "<path to your ffi installation>/ffi.h" exists. 
>>>>> In particular, the change of include path in globalDefinitions_zero.hpp 
>>>>> looks bad.
>>>>> 
>>>>> /Magnus
>>>>> 
>>>>> On 2020-06-30 15:33, Vladimir Kempik wrote:
>>>>>> Hello
>>>>>> 
>>>>>> Please review this fix for zero vm building on macos.
>>>>>> 
>>>>>> The issue comes from the libffi, it’s headers are located inside 
>>>>>> usr/include/ffi/ folder in Macos.sdk, so it can’t be found by configure 
>>>>>> script.
>>>>>> 
>>>>>> If one wants to use system’s libffi and pass path to libffi via 
>>>>>> configure argument as --with-libffi-include=/usr/include/ffi, then it 
>>>>>> won’t be found by configure because clang will look exactly in 
>>>>>> /usr/include/ffi, but not in macos.sdk
>>>>>> The system, at least on 10.15 doesn’t have /usr/includes at all.
>>>>>> 
>>>>>> This patch makes jdk to look for ffi/ffi.h header in case of Macos/clang 
>>>>>> and no --with-libffi-include argument.
>>>>>> 
>>>>>> However there is one issue with this patch, if --with-libffi-include 
>>>>>> passed then c++ code will still try to include <ffi/ffi.h>
>>>>>> 
>>>>>> I’m not sure which way is the best for such rare case. it could be 
>>>>>> possible to define include filename in configure and pass it via -D and 
>>>>>> CFLAGS to c++ code.
>>>>>> 
>>>>>> 
>>>>>> The webrev - http://cr.openjdk.java.net/~vkempik/8248495/webrev.00/
>>>>>> 
>>>>>> The bug - https://bugs.openjdk.java.net/browse/JDK-8248495
>>>>>> 
>>>>>> Thanks, Vladimir

Reply via email to