Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Failed build in Chromium with HB_NO_PAINT and missing symbol from hb-ot-font.cc #4204

Closed
drott opened this issue Apr 24, 2023 · 3 comments
Closed
Labels
Chrome Chrome/Chromium project related issues and requests

Comments

@drott
Copy link
Collaborator

drott commented Apr 24, 2023

If I suppress #4203 by uncommenting hb-ot-name.cc from the list of files to be built in Chromium I get an undefined hidden symbol error, see below.

The build has HB_NO_PAINT defined.

ld.lld: error: undefined hidden symbol: hb_paint_extents_get_funcs()
>>> referenced by hb-ot-font.cc
>>>               obj/third_party/harfbuzz-ng/harfbuzz_source/hb-ot-font.o:(OT::COLR::get_extents(hb_font_t*, unsigned int, hb_glyph_extents_t*) const)
>>> referenced by hb-ot-font.cc
>>>               obj/third_party/harfbuzz-ng/harfbuzz_source/hb-ot-font.o:(OT::COLR::paint_glyph(hb_font_t*, unsigned int, hb_paint_funcs_t*, void*, unsigned int, unsigned int, bool) const)

The files
"src/src/hb-paint-extents.cc",
"src/src/hb-paint-extents.hh",
are included in the build.

The files
"src/src/hb-paint.cc",
"src/src/hb-paint.hh",
are not but it seems like they shouldn't be needed with HB_NO_PAINT defined.

@drott drott added the Chrome Chrome/Chromium project related issues and requests label Apr 24, 2023
@behdad
Copy link
Member

behdad commented Apr 24, 2023

I think there's a dependency between PAINT and COLOR that is not captured by the hb-config.h

Dominik, can you try to reproduce this with just c++ harfbuzz.cc -DHB_NO_PAINT? I can't.

@behdad
Copy link
Member

behdad commented Apr 24, 2023

I think there's a dependency between PAINT and COLOR that is not captured by the hb-config.h

Dominik, can you try to reproduce this with just c++ harfbuzz.cc -DHB_NO_PAINT? I can't.

I can see that the hb_paint_extents_get_funcs() symbol is indeed undefined in the output. Working on it.

@behdad behdad closed this as completed in d1c00c0 Apr 24, 2023
@behdad
Copy link
Member

behdad commented Apr 24, 2023

FWIW, this reproduces the issue: clang++ src/harfbuzz.cc -shared -fPIC -DHB_NO_PAINT

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Chrome Chrome/Chromium project related issues and requests
Projects
None yet
Development

No branches or pull requests

2 participants