Date: prev next · Thread: first prev next last
2016 Archives by date, by thread · List index


On Fri, Nov 25, 2016 at 05:12:03PM +0100, Michael Stahl wrote:
On 24.11.2016 22:04, Khaled Hosny wrote:
I’m getting linking after removing the old Graphite integration:
https://gerrit.libreoffice.org/#/c/31143/

But I’m getting unexpected linking errors, complaining about almost all
Graphite symbol used by HarfBuzz:
libharfbuzz.lib(libharfbuzz_la-hb-graphite2.obj) : error LNK2019: unresolved external symbol 
__imp__gr_make_face referenced in function __hb_graphite2_shaper_face_data_create

Full build:
http://ci.libreoffice.org/job/lo_gerrit/3105/Config=linux_clang_dbgutil_64/console

My experience with of Windows toolchain is rather primitive, so I’m lost
here. I’m guessing that because Graphite is statically linked, after
removing the old code the linker does not see the use of these symbols
and drops them or something like that. But I’m not sure if I’m guessing
right or how to fix this.

i suspect it's because you remove this file:

https://gerrit.libreoffice.org/#/c/31143/4/vcl/inc/graphite_static.hxx

presumably it was included before graphite headers previously, and would
suppress a __declspec(dllimport) from the graphite headers, so now you
get unresolved dllimport symbols like "__imp__gr_make_face referenced"

... actually no, this is implausible since the unresolved symbols aren't
in vcl objects but in the harfbuzz static library.

... figured it out now, should be fixed with commit
086631af59636cd9a6a45b747a1bc59b4b547794, no idea why this doesn't fail
on current master already.

Thanks, this fixed the build indeed. I guess since HarfBuzz is
statically linked and the symbols were available because of the old code
was including graphite_static.hxx things just worked by accident since
the linking happens in vcl not harfbuzz module (not that I know anything
about how linkers work), I guess it would have been broken if one tried
to build with --disable-graphite.

Regards,
Khaled

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.