Hello, I'm the maintainer of graphite2, harfbuzz, and pango in the MacPorts
package management system. I haven't been able to update our pango to 1.32
because it requires harfbuzz which requires graphite2, and I'm having trouble
building graphite2 1.2.0 on OS X 10.5 Leopard on my Power Mac G4. Using the
Apple gcc 4.2.1 compiler I get:
Undefined symbols:
"___floatundisf", referenced from:
graphite2::SegCache::purge(graphite2::SegCacheStore*)in SegCache.cpp.o
graphite2::SegCache::cache(graphite2::SegCacheStore*, unsigned short const*, unsigned long, graphite2::Segment*, unsigned long)in SegCache.cpp.o
"___fixunssfdi", referenced from:
graphite2::SegCache::purge(graphite2::SegCacheStore*)in SegCache.cpp.o
graphite2::SegCache::cache(graphite2::SegCacheStore*, unsigned short const*, unsigned long, graphite2::Segment*, unsigned long)in SegCache.cpp.o
ld: symbol(s) not found
Using the Apple gcc 4.0.1 compiler I get:
Undefined symbols:
"___cmpdi2", referenced from:
graphite2::SegCache::purge(graphite2::SegCacheStore*)in SegCache.cpp.o
graphite2::SegCache::cache(graphite2::SegCacheStore*, unsigned short const*, unsigned long, graphite2::Segment*, unsigned long)in SegCache.cpp.o
"___floatdisf", referenced from:
graphite2::SegCache::purge(graphite2::SegCacheStore*)in SegCache.cpp.o
graphite2::SegCache::purge(graphite2::SegCacheStore*)in SegCache.cpp.o
graphite2::SegCache::cache(graphite2::SegCacheStore*, unsigned short const*, unsigned long, graphite2::Segment*, unsigned long)in SegCache.cpp.o
graphite2::SegCache::cache(graphite2::SegCacheStore*, unsigned short const*, unsigned long, graphite2::Segment*, unsigned long)in SegCache.cpp.o
"___fixunssfdi", referenced from:
graphite2::SegCache::purge(graphite2::SegCacheStore*)in SegCache.cpp.o
graphite2::SegCache::cache(graphite2::SegCacheStore*, unsigned short const*, unsigned long, graphite2::Segment*, unsigned long)in SegCache.cpp.o
ld: symbol(s) not found
Martin Hosken had trouble responding in the issue tracker so we had a
discussion about this problem in email.
I found that the problem only occurred on PowerPC, not on Intel (same
compilers and OS version).
Martin said he doesn't know why it can't find the symbols, "But there
is a convenient workaround, and that is to disable the building of the
segment caching code. You can do this by modifying your cmake command
to add -DGRAPHITE2_NSEGCACHE:BOOL=ON. The only thing I know using the
segcache code is libreoffice and unfortunately we haven't integrated
graphite into libreoffice on the mac yet, so even that usage disappears
for you."
That workaround did indeed work for me, and that's what we're now doing
in MacPorts on PowerPC:
https://trac.macports.org/changeset/101970
With the segment caching code removed as of graphite2 1.3.12, this bug report can be closed.