Looks good to me-

Tim

On 12/19/12 01:16, Erik Joelsson wrote:
Oh, I will explain it.

So, on all other platforms, this is the dependency chain (simplified, skipping the actual recipe rules):

BUILD_LIBFDLIBM:=/path/to/libfdlibm.a
BUILD_LIBJAVA:=/path/to/libjava.so
$(BUILD_LIBJAVA): $(BUILD_LIBFDLIBM)

This forces the linking of libjava to happen after libfdlibm is created.

On mac there was a complication:

BUILD_LIBFDLIBM:=/path/to/temp/location/for/libfdlibm.a
/path/to/libfdlibm.a: $(BUILD_LIBFDLIBM)
$(BUILD_LIBJAVA): $(BUILD_LIBFDLIBM)

The recipe for BUILD_LIBJAVA looks for libfdlibm.a in /path/to/libfdlibm.a and not in the temp location. This results in a race condition where the copy of libfdlibm.a might not have happened before linking of libjava.

My fix does this:

BUILD_LIBFDLIBM_MAC:=/path/to/temp/location/for/libfdlibm.a
BUILD_LIBFDLIBM:=/path/to/libfdlibm.a
$(BUILD_LIBFDLIBM): $(BUILD_LIBFDLIBM_MAC)
$(BUILD_LIBJAVA): $(BUILD_LIBFDLIBM)

The difference is that the variable BUILD_LIBFDLIBM now points to the final location of libfdlibm.a on all platforms so the dependency is correct on all platforms.

There are other ways to solve this of course, but I prefer to minimize differences between platforms if possible.

/Erik

On 2012-12-19 02:04, Kelly O'Hair wrote:
I'm assuming that the issue is that a static library is an additive thing, AR will add to it, while
a shared library is created from scratch each time.

It's possible that another fix is actually in the NativeCompilation.gmk file where the static library
is created.

But I'm curious too, hopefully Erik will set us straight in a few hours after he wakes up. ;^)

-kto

On Dec 18, 2012, at 3:38 PM, David Holmes wrote:

I don't understand the fix. Other than a name change this just seems to be "re-arranging the deckchairs". What is the actual function change ??

David

On 19/12/2012 1:55 AM, Erik Joelsson wrote:
Was asked to fix the comment, new webrev:

http://cr.openjdk.java.net/~erikj/8005178/webrev.jdk.02/

On 2012-12-18 16:35, Erik Joelsson wrote:
This fixes a problem with make dependencies from libjava to libfdlibm
which causes intermittent build failures on mac.

http://cr.openjdk.java.net/~erikj/8005178/webrev.jdk.01/


Reply via email to