This directory contains files that make it possible for Linux
distributions to build Chromium using system libraries and exclude the
source code for Chromium's bundled copies of system libraries in a
consistent manner. Nothing here is used in normal developer builds.


For more info on the Linux distros' philosophy on bundling system
libraries and why this exists, please read the following:

 - https://fedoraproject.org/wiki/Packaging:No_Bundled_Libraries
 - https://wiki.gentoo.org/wiki/Why_not_bundle_dependencies
 - http://www.debian.org/doc/debian-policy/ch-source.html#s-embeddedfiles

For more Chromium-specific context please read
http://spot.livejournal.com/312320.html .

Additional resources which might provide even more context:

  - http://events.linuxfoundation.org/sites/events/files/slides/LinuxCon%202014%20Slides_0.pdf
  - https://lwn.net/Articles/619158/


This directory is provided in the source tree so one can follow the
above guidelines without having to download additional tools and worry
about having the right version of the tool. It is a compromise solution
which takes into account Chromium developers who want to avoid the
perceived burden of more conditional code in build files, and
expectations of Open Source community, where using system-provided
libraries is the norm.

Usage:

1. remove_bundled_libraries.py <preserved-directories>

   For example: remove_bundled_libraries.py third_party/zlib

   The script scans sources looking for third_party directories.
   Everything that is not explicitly preserved is removed (except for
   GYP/GN build files), and the script fails if any directory passed on
   command line does not exist (to ensure list is kept up to date).

   This is intended to be used on source code extracted from a tarball,
   not on a git repository.

   NOTE: by default this will not remove anything (for safety). Pass
   the --do-remove flag to actually remove files.

2. replace_gn_files.py --system-libraries lib...

   This swaps out a normal library GN build file that is intended for
   use with a bundled library for a build file that is set up to use
   the system library. While some build files have use_system_libfoo
   build flags, using unbundled build files has the advantage that Linux
   distros can build Chromium without having to specify many additional
   build flags.

   For example: replace_gn_files.py --system-libraries libxml
