d4dc6a6290
The effect of this change is to hide the FreeType and HarfBuzz builds from the rest of the build except for a new component library named 'freetype_harfbuzz'. All existing users of the 'freetype' and 'harfbuzz' targets will instead depend on the 'freetype_harfbuzz' target. The 'freetype_harfbuzz' component will depend on the appropriate source sets or export the system packages for both FreeType and HarfBuzz. The reason for this change is that the full FreeType and HarfBuzz libraries we desire are circularly dependent. Before this change the build attempted to work around this by building HarfBuzz as a static library which also pulled in a small bootstrap FreeType static library. However, this causes ODR violations in component build, and potentially in the non-component build as well. Recent changes in FreeType cause FreeType to act incorrectly in these circumstances, so these ODR issues are preventing FreeType from rolling. A different approach would be to 1) Compile all the sources. 2) Link the base libraries. 3) Link the complete libraries against the base libraries. 4) Create the final libraries from the complete libraries by re-targeting the dependent library names directly. This last step can in theory be done for ELF using a tool like patchelf --replace-needed <other complete library path> <other final library path> <complete library> that outputs to <final library path> instead of updating in place. However, even if there were such a tool for dlls, this is something which would be needed on any platform. As a result, this only seems promising if all linkers supported this sort of re-writing. BUG=chromium:768938 Change-Id: I488dc8cde8f6a8f88903d25f13ecd61fd2d74a3f Reviewed-on: https://chromium-review.googlesource.com/696241 Reviewed-by: Mike West <mkwst@chromium.org> Reviewed-by: Dirk Pranke <dpranke@chromium.org> Reviewed-by: Dominik Röttsches <drott@chromium.org> Reviewed-by: Elliot Glaysher <erg@chromium.org> Reviewed-by: Alex Clarke <alexclarke@chromium.org> Reviewed-by: Brett Wilson <brettw@chromium.org> Commit-Queue: Ben Wagner <bungeman@chromium.org> Cr-Original-Commit-Position: refs/heads/master@{#507381} Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src Cr-Mirrored-Commit: 7619f01f1fa10674df56b9921df2f94718478201 |
||
---|---|---|
.. | ||
BUILD.gn | ||
OWNERS | ||
freetype.gni |