Hi Koji, Thanks for the message. Comments below:
On 07/07/2012 11:37 PM, Koji Ishii wrote: > Hi, > > I tried to build harfbuzz-ng on Windows MSVC2010 and got a few errors. > I'm not sure how many people needs this but I'm sharing the patches > here for who is interested in. > > hb-atomic-private.hh fix is for x86 only. The current code builds fine > for x64 but not for x86. I don't understand why this is needed. According to: http://msdn.microsoft.com/en-us/library/1b4s3xf5%28v=vs.80%29.aspx _InterlockedCompareExchangePointer is available on both x86 and x64. > hb-unicode-private.hh fix is probably not related with Windows nor > MSVC, but when neither GLIB nor ICU is available. Applied. > hb-uniscribe.cc fix is required for me, maybe Windows SDK was changed? > I'm using VC2010 SP1, but the fix should be safe for prior compilers I > believe. I see. I just bumped our _WIN32_WINNT version, since we use the OpenType version of the Uniscribe functions. Let me know if that addresses your problem. Cheers, behdad > > Regards, > Koji > > commit c5174b35c59ee80ed8e81989ddeb73baabbfe9ed > Author: Koji Ishii <[email protected]> > Date: Sat Jul 7 23:45:23 2012 +0900 > > msvc10 fixes > > diff --git a/src/hb-atomic-private.hh b/src/hb-atomic-private.hh > index 918852d..967b6c0 100644 > --- a/src/hb-atomic-private.hh > +++ b/src/hb-atomic-private.hh > @@ -45,7 +45,15 @@ > #elif !defined(HB_NO_MT) && defined(_MSC_VER) && _MSC_VER >= 1600 > > #include <intrin.h> > +#if defined(_M_IX86) > +#define _InterlockedCompareExchangePointer(_Target, _Exchange, > _Comparand) reinterpret_cast<void *>(static_cast<__w64 > long>(_InterlockedCompareExchange( \ > + static_cast<long volatile *>(reinterpret_cast<__w64 long volatile > *>(static_cast<void * volatile *>(_Target))), \ > + static_cast<long>(reinterpret_cast<__w64 long>(static_cast<void > *>(_Exchange))), \ > + static_cast<long>(reinterpret_cast<__w64 long>(static_cast<void > *>(_Comparand)))))) > +#pragma intrinsic(_InterlockedExchangeAdd) > +#else > #pragma intrinsic(_InterlockedExchangeAdd, > _InterlockedCompareExchangePointer) > +#endif > > typedef long hb_atomic_int_t; > #define hb_atomic_int_add(AI, V) _InterlockedExchangeAdd (&(AI), (V)) > diff --git a/src/hb-unicode-private.hh b/src/hb-unicode-private.hh > index eaf151a..c781035 100644 > --- a/src/hb-unicode-private.hh > +++ b/src/hb-unicode-private.hh > @@ -99,6 +99,7 @@ extern HB_INTERNAL const hb_unicode_funcs_t > _hb_icu_unicode_funcs; > #define _hb_unicode_funcs_default _hb_icu_unicode_funcs > #else > #define HB_UNICODE_FUNCS_NIL 1 > +extern HB_INTERNAL const hb_unicode_funcs_t _hb_unicode_funcs_nil; > #define _hb_unicode_funcs_default _hb_unicode_funcs_nil > #endif > > diff --git a/src/hb-uniscribe.cc b/src/hb-uniscribe.cc > index b71b00a..3bedc7d 100644 > --- a/src/hb-uniscribe.cc > +++ b/src/hb-uniscribe.cc > @@ -29,6 +29,10 @@ > #include "hb-private.hh" > > #include <windows.h> > +// usp10.h defines UNISCRIBE_OPENTYPE only if _WIN32_WINNT >= 0x0600 > +#if !defined(UNISCRIBE_OPENTYPE) && (_WIN32_WINNT < 0x0600) > +#define UNISCRIBE_OPENTYPE 0x0100 > +#endif > #include <usp10.h> > > typedef ULONG WIN_ULONG; > _______________________________________________ > HarfBuzz mailing list > [email protected] > http://lists.freedesktop.org/mailman/listinfo/harfbuzz > _______________________________________________ HarfBuzz mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/harfbuzz
