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. hb-unicode-private.hh fix is probably not related with Windows nor MSVC, but when neither GLIB nor ICU is available. 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. 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
