chromium-src-build/config/freetype
Ben Wagner d4dc6a6290 Build FreeType and HarfBuzz together.
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
2017-10-09 15:35:00 +00:00
..
BUILD.gn Build FreeType and HarfBuzz together. 2017-10-09 15:35:00 +00:00
OWNERS Allow FreeType compilation and linkage from third_party on Windows 2017-03-28 20:42:41 +00:00
freetype.gni Reland: Compile FreeType with HarfBuzz support 2017-05-17 10:49:03 +00:00