Bug 78291 - Build failure under Mac OS 10.7.5 (Lion)
Summary: Build failure under Mac OS 10.7.5 (Lion)
Status: RESOLVED FIXED
Alias: None
Product: HarfBuzz
Classification: Unclassified
Component: src (show other bugs)
Version: unspecified
Hardware: x86 (IA32) Mac OS X (All)
: medium normal
Assignee: Behdad Esfahbod
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-05-05 10:23 UTC by Matthias Scheler
Modified: 2014-05-16 21:55 UTC (History)
2 users (show)

See Also:
i915 platform:
i915 features:


Attachments

Description Matthias Scheler 2014-05-05 10:23:12 UTC
Version 0.9.28 of of HarfBuzz doesn't build under Mac OS X Lion:

  CXX      test-test.o
In file included from hb-coretext.cc:32:
hb-coretext.h:34:33: error: CoreText/CoreText.h: No such file or directory
hb-coretext.h:35:41: error: CoreGraphics/CoreGraphics.h: No such file or directory
  CXX      test_buffer_serialize-test-buffer-serialize.o
In file included from hb-coretext.cc:32:
hb-coretext.h:48: error: 'CGFontRef' was not declared in this scope
hb-coretext.h:51: error: 'CGFontRef' does not name a type
hb-coretext.h:54: error: 'CTFontRef' does not name a type
hb-coretext.cc: In function 'void release_table_data(void*)':
hb-coretext.cc:43: error: 'CFDataRef' was not declared in this scope
hb-coretext.cc:43: error: expected `;' before 'cf_data'
hb-coretext.cc:44: error: 'cf_data' was not declared in this scope
hb-coretext.cc:44: error: 'CFRelease' was not declared in this scope
hb-coretext.cc: In function 'hb_blob_t* reference_table(hb_face_t*, hb_tag_t, void*)':
hb-coretext.cc:50: error: 'CGFontRef' was not declared in this scope
hb-coretext.cc:50: error: expected `;' before 'cg_font'
hb-coretext.cc:51: error: 'CFDataRef' was not declared in this scope
hb-coretext.cc:51: error: expected `;' before 'cf_data'
hb-coretext.cc:52: error: 'cf_data' was not declared in this scope
hb-coretext.cc:55: error: 'cf_data' was not declared in this scope
hb-coretext.cc:55: error: 'CFDataGetBytePtr' was not declared in this scope
hb-coretext.cc:56: error: 'CFDataGetLength' was not declared in this scope
hb-coretext.cc:61: error: expected type-specifier before '__CFData'
hb-coretext.cc:61: error: expected `>' before '__CFData'
hb-coretext.cc:61: error: expected `(' before '__CFData'
hb-coretext.cc:61: error: '__CFData' was not declared in this scope
hb-coretext.cc:61: error: expected primary-expression before '>' token
hb-coretext.cc: At global scope:
hb-coretext.cc:66: error: redefinition of 'hb_face_t* hb_coretext_face_create'
hb-coretext.h:48: error: 'hb_face_t* hb_coretext_face_create' previously defined here
hb-coretext.cc:66: error: 'CGFontRef' was not declared in this scope
hb-coretext.cc:81: error: 'CGFontRef' does not name a type
hb-coretext.cc: In function 'hb_coretext_shaper_face_data_t* _hb_coretext_shaper_face_data_create(hb_face_t*)':
hb-coretext.cc:100: error: 'CGFontRelease' was not declared in this scope
hb-coretext.cc:102: error: 'struct hb_coretext_shaper_face_data_t' has no member named 'cg_font'
[…]

The cause is a bogus check for iOS in "src/hb-coretext.h":

#include <TargetConditionals.h>
#if defined(TARGET_OS_IPHONE)
#  include <CoreText/CoreText.h>
#  include <CoreGraphics/CoreGraphics.h>
#else
#  include <ApplicationServices/ApplicationServices.h>
#endif

"TargetConditionals.h" *always* defines "TARGET_OS_IPHONE". However an Mac OS X the symbol is defined as "0". The correct check therefore looks like this:

#include <TargetConditionals.h>
#if defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE
#  include <CoreText/CoreText.h>
#  include <CoreGraphics/CoreGraphics.h>
#else
#  include <ApplicationServices/ApplicationServices.h>
#endif
Comment 1 Behdad Esfahbod 2014-05-16 21:55:30 UTC
Fixed.  Thanks.


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.