Dependencies
============

grpc has few external dependencies. If needed, they are present in the
third_party directory, if you have cloned the github repository recursively.
If you didn't clone recursively, you can still get them later by running the
following command:

$ git submodule update --init

Note that the Makefile makes it much easier for you to compile from sources
if you were to clone recursively our git repository.


grpc core currently depends on zlib and OpenSSL 1.0.2beta3.

grpc++'s tests depends on protobuf 3.0.0, gtests and gflags.

OpenSSL
-------

Secure HTTP2 requires to have the TLS extension ALPN (see rfc 7301 and
http://http2.github.io/http2-spec/ section 3.3). Our HTTP2 implementation
relies on OpenSSL's implementation. OpenSSL 1.0.2beta3 is the first version
of OpenSSL that has ALPN support, and this explains our dependency on it.

Note that the Makefile supports compiling only the unsecure elements of grpc,
and if you do not have OpenSSL and do not want it, you can still proceed
with installing only the elements you require. However, it is recommended
to encrypt your network traffic, therefore we urge you to not use the unsecure
version of grpc if possible.


Compiling
=========

If you have all the dependencies in the third_party subfolder, you should
simply be able to go ahead and run "make" to compile grpc. The other targets
that you might find interesting are "buildtests" and "test".

If you didn't clone from git, and thus are unable to get the required
dependencies, you can manually download and unpack the necessary packages,
and let the Makefile build them itself.

You may also install the dependencies yourself, from the sources, or from
your distribution's package manager.

The only development package needed for grpc is zlib.
The development packages needed for grpc++'s tests are gtests, and gflags.

To the best of our knowledge, no distribution has an OpenSSL package that
supports ALPN yet, so you would still have to depend on installing from source
for that particular dependency.

The recommended version of OpenSSL that provides ALPN support is available
at this URL:

  https://www.openssl.org/source/openssl-1.0.2-beta3.tar.gz

If you want to let the Makefile build them automatically for you, please
extract them in the third_party folder. You will need to rename the extracted
folder the following way:

  openssl-1.0.2-beta3 --> openssl


Testing
=======

At the moment, C++ tests aren't fully available yet. If you want to run tests
on the C core of grpc, you can do the following:

$ make buildtests_c
$ make test_c


Installing
==========

Once everything is compiled, you should be able to install grpc and grpc++
libraries and headers:

$ sudo make install
