Yes I had the same trouble compiling harfbuzz. I'm close though. 

Enviado desde nuestro iPhone.

> El dic 10, 2015, a las 8:12 AM, Volker Simonis <volker.simo...@gmail.com> 
> escribió:
> 
> Behdad,
> 
> you're really great!!!
> 
> I've forked HarfBuzz today because I wanted to submit a pull request with the 
> change. Unfortunately I was not able to build on AIX until now (plenty of 
> nasty problems will all kind of missing or too old tools :(
> 
> And now I see that you've already pushed the change! Thanks a lot. I'd only 
> like to suggest the following minor enhancement to my initial change. It 
> restricts the change to the case where HarfBuzz will be compiled with IBM's 
> xlC compiler because it uses xlC compiler intrinsics. I know there are people 
> out there who package open source software for AIX but they usually compile 
> the whole toolchain with GCC. This minor addition will protect them from 
> running into compile errors if they should ever try to compile HarfBuzz with 
> GCC on AIX.
> 
> It would be great if you could add that as well to the upstream version.
> 
> I will then update my OpenJDK patch to contain exactly your "shuffeled" 
> upstream version so we don't get any problems when merging from upstream in 
> the future.
> 
> Thanks a lot once again,
> Volker
> 
> 
> diff -r fd95f33023e9 
> src/java.desktop/share/native/libfontmanager/harfbuzz/hb-atomic-private.hh
> --- 
> a/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-atomic-private.hh  
>       Thu Dec 10 12:13:22 2015 +0100
> +++ 
> b/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-atomic-private.hh  
>       Thu Dec 10 16:55:58 2015 +0100
> @@ -119,7 +119,7 @@
>  #define hb_atomic_ptr_impl_cmpexch(P,O,N)       ( ({__machine_rw_barrier 
> ();}), atomic_cas_ptr ((void **) (P), (void *) (O), (void *) (N)) == (void *) 
> (O) ? true : false)
>  
>  
> -#elif !defined(HB_NO_MT) && defined(_AIX)
> +#elif !defined(HB_NO_MT) && defined(_AIX) && defined(__IBMCPP__)
>  
>  #include <builtins.h>
>  
> 
> 
>> On Thu, Dec 10, 2015 at 3:55 PM, Behdad Esfahbod <beh...@google.com> wrote:
>> Slightly shuffled patch was committed upstream:
>> https://github.com/behdad/harfbuzz/commit/70b33edae7c8b9c031b83c95f00cb383789f1041
>> 
>> Thanks,
>> behdad
>> 
>> 
>>> On Thu, Dec 10, 2015 at 2:36 PM, Behdad Esfahbod <beh...@google.com> wrote:
>>> Hi Volker, Steven,
>>> 
>>> I'd happily take AIX atomic primitive patch for HarfBuzz.  Yes, github 
>>> Pull-Requests are fine.  As you correctly identified, HarfBuzz uses atomic 
>>> ops and mutexes to synchronize access to global data as well as 
>>> reference-counting from multiple threads, even though it doesn't uses 
>>> threads itself.
>>> 
>>> Does AIX use pthread for threading?  I can definitely add a threading 
>>> stress-test to HarfBuzz.  I definitely should.  Filed here:
>>> 
>>>   https://github.com/behdad/harfbuzz/issues/195
>>> 
>>> Thanks,
>>> behdad
>>> 
>>>> On Thu, Dec 10, 2015 at 2:27 PM, Volker Simonis <volker.simo...@gmail.com> 
>>>> wrote:
>>>> Hi Steven,
>>>> 
>>>> thanks for your response.
>>>> 
>>>>> On Thu, Dec 10, 2015 at 1:44 AM, Steven R. Loomis <s...@icu-project.org> 
>>>>> wrote:
>>>>> Volker,
>>>>>  0. I’d like to see what the crashing stack frame is when NOT on 
>>>>> harfbuzz, because there should be no change.
>>>> 
>>>> This was another problem. Please see my previous mail in this thread where 
>>>> I've described the cause in more detail.
>>>>  
>>>>>  1. Phil addressed this one
>>>>> 
>>>>>  2. I will take a look on AIX. I’ll see if I can build Harfbuzz itself on 
>>>>> AIX at first.
>>>> 
>>>> I've fixed it now and just send around a request for review: 
>>>> http://mail.openjdk.java.net/pipermail/2d-dev/2015-December/006065.html
>>>> 
>>>> The mail contains a link to the bug and the patch which fixes it.
>>>> 
>>>> I also want to contribute this to harfbuzz. Is it OK to send a pull 
>>>> request to https://github.com/behdad/harfbuzz ?
>>>> 
>>>>>  3. Yes, I’ll work on putting some docs together for that test.  
>>>>> Actually, other tests such as the Font2DTest  would be a good test. Or, 
>>>>> any text in a complex script such as Hindi.
>>>> 
>>>> That would be great. For now, the Font2DTest runs without a problem with 
>>>> harfbuzz on AIX (and linux/ppc64).
>>>>  
>>>>>  4. I’m not sure. A threaded stress test would be good.  Perhaps 
>>>>> Harfbuzz-in-JDK could leverage the 
>>>>> hotspot/src/os_cpu/../vm/atomic_os_cp.inline.hpp you mentioned. 
>>>>>  
>>>>>  Behdad - file is here 
>>>>> http://hg.openjdk.java.net/jdk9/client/hotspot/file/c8e212fb27d0/src/os_cpu/linux_x86/vm/atomic_linux_x86.inline.hpp
>>>>>   - any comments on this or other items? 
>>>> 
>>>> That sounds like a good idea but unfortunately the hotspot primitives are 
>>>> in a different repository (source-code wise) and in a different library 
>>>> (i.e. libjvm.so) which doesn't export them. So the best we can do for now 
>>>> would be to copy the missing parts over to the jdk repository (and that's 
>>>> actually what I've done now for the AIX version of the primitives).
>>>> 
>>>> Regards,
>>>> Volker
>>>>  
>>>>> -s
>>>>> 
>>>>>> 
>>>>>> -------- Original Message --------
>>>>>> Subject: Re: [OpenJDK 2D-Dev] Question regarding the integration of 
>>>>>> harfbuzz (JEP 258)
>>>>>> Date:    Wed, 09 Dec 2015 09:02:33 -0800
>>>>>> From:    Philip Race <philip.r...@oracle.com>
>>>>>> Organization:    Oracle Corporation
>>>>>> To:      2d-dev@openjdk.java.net
>>>>>> 
>>>>>> 
>>>>>> Hi Volker,
>>>>>> 
>>>>>> Running with ICU should stop harfbuzz use completely so if
>>>>>> you are still seeing a crash, perhaps it is due to something else 
>>>>>> entirely.
>>>>>> Especially since a "simple AWT program" should not load layout anyway.
>>>>>> There was a fair amount of new and changed code pushed recently ...
>>>>>> 
>>>>>> Yes, we need to run harfbuzz in multiple concurrent threads in the JDK.
>>>>>> A single threaded lock on harfbuzz would throttle text operations.
>>>>>> I suppose it is possible that we do not strictly need it as we currently 
>>>>>> create a
>>>>>> new harfbuzz "instance" each time we go to invoke layout but that
>>>>>> is something that at least theoretically could change.
>>>>>> 
>>>>>> The approach to synchronization is all from up-stream harfbuzz.
>>>>>> The harfbuzz mailing list might be the place to discuss that.
>>>>>> I'd expect it does work on AIX as a principal driver here is that
>>>>>> the IBM sponsored ICU project has deprecated its layout engine
>>>>>> and IBM/ICU are moving to harfbuzz so I'd be somewhat astonished
>>>>>> if they haven't yet tried it on AIX. Did you try just getting a copy
>>>>>> of the full hotspot library and running its configure on AIX to see if
>>>>>> harfbuzz can work out which options it wants there ? Obviously
>>>>>> I did not try that since I don't have AIX. Steven Loomis of IBM
>>>>>> who submitted the JEP should be able to help with a lot of this.
>>>>>> 
>>>>>> -phil.
>>>>>> 
>>>>>> On 12/8/15, 10:50 AM, Volker Simonis wrote:
>>>>>> > Hi,
>>>>>> >
>>>>>> > the integration of harfbuzz broke our AIX build because there's no
>>>>>> > implementation available for the hb_atomic macros in
>>>>>> > hb-atomic-private.hh. I've fixed that locally but still get a crash
>>>>>> > when running a simple AWT program (even with
>>>>>> > -Dsun.font.layoutengine=icu).
>>>>>> >
>>>>>> > I'm curretnly debugging the problem, but I have some general questions:
>>>>>> >
>>>>>> > 1. Do we really need the multi-threaded features of harfbuzz in 
>>>>>> > OpenJDK?
>>>>>> >
>>>>>> > 2. Why does hurbuzz require these synchronization macros? From a first
>>>>>> > glance it doesn't seem to use multiple threads by itself. Does it have
>>>>>> > some global data structures which it needs to protect if harfbuzz is
>>>>>> > called from various threads?
>>>>>> >
>>>>>> > 3. Is there a way to test the hurfbuzz engine on a new platform? I saw
>>>>>> > the new test TestLayoutVsICU.java but it is marked as "manual" and it
>>>>>> > seems to require external fonts (at least some of which seem to be
>>>>>> > freely available). Could you please provide at least a minimal
>>>>>> > description on how this test can be run?
>>>>>> >
>>>>>> > 4. Is there a way to test that the implementation of the hb_atomic
>>>>>> > macros in hb-atomic-private.hh is correct (i.e. a way to stress
>>>>>> > harfbuzz from multiple threads)? I think this is important as I
>>>>>> > couldn't find a good description of the requirements for the atomic
>>>>>> > macros and on weak memory model architectures we should really get
>>>>>> > this right. For example there's no description of which fences are
>>>>>> > required around the various atomic operations. Getting this right
>>>>>> > across all platforms in the HotSpot (see
>>>>>> > hotspot/src/os_cpu/../vm/atomic_os_cp.inline.hpp) is already hard
>>>>>> > enough so I'm a little concerned that we are now introducing similar
>>>>>> > primitives in the class library.
>>>>>> >
>>>>>> > Thank you and best regards,
>>>>>> > Volker
> 

Reply via email to