The existence of this file in external/apache-http implies
that the version of the library here is unbundled. The build system
can test for its existence to decide whether or not to add a
dependency to this library.
