|  | @@ -1,217 +0,0 @@
 | 
	
		
			
				|  |  | -These instructions only cover building grpc C and C++ libraries under
 | 
	
		
			
				|  |  | -typical unix systems. If you need more information, please try grpc's
 | 
	
		
			
				|  |  | -wiki pages:
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  https://github.com/google/grpc/wiki
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -*************************
 | 
	
		
			
				|  |  | -* If you are in a hurry *
 | 
	
		
			
				|  |  | -*************************
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -On Linux (Debian):
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | - Note: you will need to add the Debian 'jessie-backports' distribution to your sources
 | 
	
		
			
				|  |  | - file first.
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | - Add the following line to your `/etc/apt/sources.list` file:
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -   deb http://http.debian.net/debian jessie-backports main
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | - Install the gRPC library:
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | - $ [sudo] apt-get install libgrpc-dev
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -OR
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | - $ git clone https://github.com/grpc/grpc.git
 | 
	
		
			
				|  |  | - $ cd grpc
 | 
	
		
			
				|  |  | - $ git submodule update --init
 | 
	
		
			
				|  |  | - $ make 
 | 
	
		
			
				|  |  | - $ [sudo] make install
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -You don't need anything else than GNU Make, gcc and autotools. Under a Debian
 | 
	
		
			
				|  |  | -or Ubuntu system, this should boil down to the following packages:
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | - $ [sudo] apt-get install build-essential autoconf libtool
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -Building the python wrapper requires the following:
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | - $ [sudo] apt-get install python-all-dev python-virtualenv
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -If you want to install in a different directory than the default /usr/lib, you can
 | 
	
		
			
				|  |  | -override it on the command line:
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | - $ [sudo] make install prefix=/opt
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -*******************************
 | 
	
		
			
				|  |  | -* More detailled instructions *
 | 
	
		
			
				|  |  | -*******************************
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -Setting up dependencies
 | 
	
		
			
				|  |  | -=======================
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -Dependencies to compile the libraries
 | 
	
		
			
				|  |  | --------------------------------------
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -grpc libraries have few external dependencies. If you need to compile and
 | 
	
		
			
				|  |  | -install them, 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: it will automatically
 | 
	
		
			
				|  |  | -compile zlib and OpenSSL, which are core requirements for grpc. Note this
 | 
	
		
			
				|  |  | -creates grpc libraries that will have zlib and OpenSSL built-in inside of them,
 | 
	
		
			
				|  |  | -which significantly increases the libraries' size.
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -In order to decrease that size, you can manually install zlib and OpenSSL on
 | 
	
		
			
				|  |  | -your system, so that the Makefile can use them instead.
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -Under a Debian or Ubuntu system, one can acquire the development package
 | 
	
		
			
				|  |  | -for zlib this way:
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  # apt-get install zlib1g-dev
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -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 if you want to reduce the libraries' size.
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -The recommended version of OpenSSL that provides ALPN support is available
 | 
	
		
			
				|  |  | -at this URL:
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  https://www.openssl.org/source/openssl-1.0.2.tar.gz
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -Dependencies to compile and run the tests
 | 
	
		
			
				|  |  | ------------------------------------------
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -Compiling and running grpc plain-C tests dont't require any more dependency.
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -Compiling and running grpc C++ tests depend on protobuf 3.0.0, gtest and
 | 
	
		
			
				|  |  | -gflags. Although gflags is provided in third_party, you will need to manually
 | 
	
		
			
				|  |  | -install that dependency on your system to run these tests.
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -Under a Debian or Ubuntu system, you can install the gtests and gflags packages
 | 
	
		
			
				|  |  | -using apt-get:
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  # apt-get install libgflags-dev libgtest-dev
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -However, protobuf 3.0.0 isn't in a debian package yet, but the Makefile will
 | 
	
		
			
				|  |  | -automatically try and compile the one present in third_party if you cloned the
 | 
	
		
			
				|  |  | -repository recursively, and that it detects your system is lacking it.
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -Compiling and installing protobuf 3.0.0 requires a few more dependencies in
 | 
	
		
			
				|  |  | -itself, notably the autoconf suite. If you have apt-get, you can install
 | 
	
		
			
				|  |  | -these dependencies this way:
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  # apt-get install autoconf libtool
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -If you want to run the tests using one of the sanitized configurations, you
 | 
	
		
			
				|  |  | -will need clang and its instrumented libc++:
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  # apt-get install clang libc++-dev
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -Mac-specific notes:
 | 
	
		
			
				|  |  | --------------------
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -For a Mac system, git is not available by default. You will first need to
 | 
	
		
			
				|  |  | -install Xcode from the Mac AppStore and then run the following command from a
 | 
	
		
			
				|  |  | -terminal:
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  $ sudo xcode-select --install
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -You should also install "port" following the instructions at
 | 
	
		
			
				|  |  | -https://www.macports.org . This will reside in /opt/local/bin/port for
 | 
	
		
			
				|  |  | -most Mac installations. Do the "git submodule" command listed above.
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -Then execute the following for all the needed build dependencies
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  $ sudo /opt/local/bin/port install autoconf automake libtool gflags cmake
 | 
	
		
			
				|  |  | -  $ mkdir ~/gtest-svn
 | 
	
		
			
				|  |  | -  $ svn checkout http://googletest.googlecode.com/svn/trunk/ gtest-svn
 | 
	
		
			
				|  |  | -  $ mkdir mybuild
 | 
	
		
			
				|  |  | -  $ cd mybuild
 | 
	
		
			
				|  |  | -  $ cmake ../gtest-svn
 | 
	
		
			
				|  |  | -  $ make
 | 
	
		
			
				|  |  | -  $ make gtest.a gtest_main.a
 | 
	
		
			
				|  |  | -  $ sudo cp libgtest.a libgtest_main.a /opt/local/lib
 | 
	
		
			
				|  |  | -  $ sudo mkdir /opt/local/include/gtest
 | 
	
		
			
				|  |  | -  $ sudo cp -pr ../gtest-svn/include/gtest /opt/local/include/gtest
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -If you are going to make changes and need to regenerate the projects file,
 | 
	
		
			
				|  |  | -you will need to install certain modules for python.
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  $ sudo easy_install simplejson mako
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -Mingw-specific notes:
 | 
	
		
			
				|  |  | ----------------------
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -While gRPC compiles properly under mingw, some more preparation work is needed.
 | 
	
		
			
				|  |  | -The recommendation is to use msys2. The installation instructions are available
 | 
	
		
			
				|  |  | -at that address: http://msys2.github.io/
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -Once this is installed, make sure you are using the following: MinGW-w64 Win64.
 | 
	
		
			
				|  |  | -You'll be required to install a few more packages:
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  $ pacman -S make mingw-w64-x86_64-gcc mingw-w64-x86_64-zlib autoconf automake libtool
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -Please also install OpenSSL from that website:
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  http://slproweb.com/products/Win32OpenSSL.html
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -The package Win64 OpenSSL v1.0.2a should do. At that point you should be able
 | 
	
		
			
				|  |  | -to compile gRPC with the following:
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  $ export LDFLAGS="-L/mingw64/lib -L/c/OpenSSL-Win64"
 | 
	
		
			
				|  |  | -  $ export CPPFLAGS="-I/mingw64/include -I/c/OpenSSL-Win64/include"
 | 
	
		
			
				|  |  | -  $ make
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -A word on OpenSSL
 | 
	
		
			
				|  |  | ------------------
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -Secure HTTP2 requires 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.2 is the first released 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, we strongly recommend
 | 
	
		
			
				|  |  | -the use of encryption for all network traffic, and discourage the use of grpc
 | 
	
		
			
				|  |  | -without TLS.
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -Compiling
 | 
	
		
			
				|  |  | -=========
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -If you have all the dependencies mentioned above, you should simply be able
 | 
	
		
			
				|  |  | -to go ahead and run "make" to compile grpc's C and C++ libraries:
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  $ make
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -Testing
 | 
	
		
			
				|  |  | -=======
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -To build and run the tests, you can run the command:
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  $ make test
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -If you want to be able to run them in parallel, and get better output, you can
 | 
	
		
			
				|  |  | -also use the python tool we have written:
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  $ ./tools/run_tests/run_tests.py
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -Installing
 | 
	
		
			
				|  |  | -==========
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -Once everything is compiled, you should be able to install grpc C and C++
 | 
	
		
			
				|  |  | -libraries and headers:
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  # make install
 |