Hi Peter,

> the Solaris 64-bit library location isn't one that's in the default search list

It might be worth it to enhance the make/autoconf/lib-ffi.m4 script to look in the alternative library location as well. I recently added support for mac and windows as well [1], but prior to that, it really only seemed to be made for linux. So, there's probably still room for improvement.

> I wonder if the correct approach might be to resolve what libffi.so points to rather than using the libffi.so.? pattern

This might work, but libffi.so doesn't always seem to be a link. I suggest trying to work out some improvements to the lib-ffi.m4 script, and then we can update the script. Perhaps we need a --with-libffi-libfile option that points to the exact library file.

Jorn

[1]: https://github.com/openjdk/jdk/pull/14446

On 23/06/2023 13:00, Peter Tribble wrote:
Thanks Jorn,

On Fri, Jun 9, 2023 at 11:28 PM Jorn Vernee <jorn.ver...@oracle.com> wrote:

    To incorporate the library (.dll/.so/.dylib) into the JDK, it is
    essentially just copied into the right folder of the built JDK
    image. Automatic copying can be turned on using the
    --enable-libffi-bundling configuration flag. In practice, I'm
    using `--with-libffi=<path to extracted bundle>
    --enable-libffi-bundling --enable-fallback-linker` to create a
    working JDK image.


I've been trying this on illumos/Solaris, and simply adding

--enable-fallback-linker

gets me a clean build against the system libffi.

Bundling is a little trickier. I need to be explicit, because the Solaris 64-bit library location isn't
one that's in the default search list, so

--with-libffi-lib=/usr/lib/amd64

would be the correct way to specify where to look. However, in practice that fails because my system has multiple versions of libffi.so installed for binary compatibility (I'm not sure how common this may
be on other platforms), and configure fails like so

checking for libffi lib file location... /var/tmp/ud/jdk21-jdk-21-28/build/.configure-support/generated-configure.sh: line 144232: test: too many arguments configure: error: Could not locate libffi.so.? for bundling in /usr/lib/amd64

I think the way round this, for me, is to create a sacrificial bundle area and point the build at that, but I wonder if the correct approach might be to resolve what libffi.so points to rather than using the libffi.so.? pattern, which might match multiple things, and will break if the FFI shared library
version ever grows to double digits.

Thanks,

--
-Peter Tribble
http://www.petertribble.co.uk/ <https://urldefense.com/v3/__http://www.petertribble.co.uk/__;!!ACWV5N9M2RV99hQ!NiRy5Ij4KegR0sDzlN3kKFvBkuFBpB-9VnZ9hOLJFGdls5Woud_b_UF8RwCyGl0NDJL74dk7Ep0GUZPkPdl52F9T$> - http://ptribble.blogspot.com/ <https://urldefense.com/v3/__http://ptribble.blogspot.com/__;!!ACWV5N9M2RV99hQ!NiRy5Ij4KegR0sDzlN3kKFvBkuFBpB-9VnZ9hOLJFGdls5Woud_b_UF8RwCyGl0NDJL74dk7Ep0GUZPkPS1CLfGs$>

Reply via email to