annotate src/capnproto-git-20161025/doc/install.md @ 149:279b18cc7785

Update Win32 capnp builds to v0.6
author Chris Cannam <cannam@all-day-breakfast.com>
date Tue, 23 May 2017 09:16:54 +0100
parents 1ac99bfc383d
children
rev   line source
cannam@133 1 ---
cannam@133 2 layout: page
cannam@133 3 title: Installation
cannam@133 4 ---
cannam@133 5
cannam@133 6 # Installation: Tools and C++ Runtime
cannam@133 7
cannam@133 8 The Cap'n Proto tools, including the compiler (which takes `.capnp` files and generates source code
cannam@133 9 for them), are written in C++. Therefore, you must install the C++ package even if your actual
cannam@133 10 development language is something else.
cannam@133 11
cannam@133 12 This package is licensed under the [MIT License](http://opensource.org/licenses/MIT).
cannam@133 13
cannam@133 14 ## Caveats
cannam@133 15
cannam@133 16 <p style="font-size: 125%; font-weight: bold;">Cap'n Proto is in BETA</p>
cannam@133 17
cannam@133 18 <div style="float: right"><a class="groups_link" style="color: #fff"
cannam@133 19 href="https://groups.google.com/group/capnproto-announce">Sign Up for Updates</a></div>
cannam@133 20
cannam@133 21 As of this writing, Cap'n Proto is in beta. The serialization layer is close to feature-complete
cannam@133 22 and we don't anticipate any further changes to the wire format. That said, if you want to use it,
cannam@133 23 you should keep in mind some caveats:
cannam@133 24
cannam@133 25 * **Security:** Cap'n Proto has not yet had a security review. Although Kenton has a background
cannam@133 26 in security and is not aware of any vulnerabilities in the current code, it's likely that there
cannam@133 27 are a few, and [some have been found](https://github.com/sandstorm-io/capnproto/tree/master/security-advisories)
cannam@133 28 in the past. For now, do not accept Cap'n Proto messages from parties you do not trust.
cannam@133 29 * **API Stability:** The Cap'n Proto programming interface may still change in ways that break
cannam@133 30 existing code. Such changes are likely to be minor and should not affect the wire format.
cannam@133 31 * **Performance:** While Cap'n Proto is inherently fast by design, the implementation has not yet
cannam@133 32 undergone serious profiling and optimization. Currently it only beats Protobufs in realistic-ish
cannam@133 33 end-to-end benchmarks by around 2x-5x. We can do better.
cannam@133 34 * **RPC:** The RPC implementation particularly experimental, though it is used heavily by
cannam@133 35 [Sandstorm.io](https://sandstorm.io).
cannam@133 36
cannam@133 37 If you'd like to hack on Cap'n Proto, you should join the
cannam@133 38 [discussion group](https://groups.google.com/group/capnproto)!
cannam@133 39
cannam@133 40 If you'd just like to receive updates as things progress, add yourself to the
cannam@133 41 [announce list](https://groups.google.com/group/capnproto-announce).
cannam@133 42
cannam@133 43 ## Prerequisites
cannam@133 44
cannam@133 45 ### Supported Compilers
cannam@133 46
cannam@133 47 Cap'n Proto makes extensive use of C++11 language features. As a result, it requires a relatively
cannam@133 48 new version of a well-supported compiler. The minimum versions are:
cannam@133 49
cannam@133 50 * GCC 4.8
cannam@133 51 * Clang 3.3
cannam@133 52 * Visual C++ 2015 (lite mode only)
cannam@133 53
cannam@133 54 If your system's default compiler is older that the above, you will need to install a newer
cannam@133 55 compiler and set the `CXX` environment variable before trying to build Cap'n Proto. For example,
cannam@133 56 after installing GCC 4.8, you could set `CXX=g++-4.8` to use this compiler.
cannam@133 57
cannam@133 58 ### Supported Operating Systems
cannam@133 59
cannam@133 60 In theory, Cap'n Proto should work on any POSIX platform supporting one of the above compilers,
cannam@133 61 as well as on Windows. We test every Cap'n Proto release on the following platforms:
cannam@133 62
cannam@133 63 * Android
cannam@133 64 * Linux
cannam@133 65 * Mac OS X
cannam@133 66 * Windows - Cygwin
cannam@133 67 * Windows - MinGW-w64 (lite mode and compiler binary only)
cannam@133 68 * Windows - Visual C++ (lite mode only)
cannam@133 69
cannam@133 70 **Windows users:** As of Visual Studio 2015, Visual C++ still does not support enough of C++11 to
cannam@133 71 compile Cap'n Proto's reflection or RPC APIs. "Cap'n Proto Lite" omits these features from the
cannam@133 72 library, giving you only the core serialization based on generated code.
cannam@133 73
cannam@133 74 **Mac OS X users:** You must use at least Xcode 5 with the Xcode command-line
cannam@133 75 tools (Xcode menu > Preferences > Downloads). Alternatively, the command-line tools
cannam@133 76 package from [Apple](https://developer.apple.com/downloads/) or compiler builds from
cannam@133 77 [Macports](http://www.macports.org/), [Fink](http://www.finkproject.org/), or
cannam@133 78 [Homebrew](http://brew.sh/) are reported to work.
cannam@133 79
cannam@133 80 ## Installation: Unix
cannam@133 81
cannam@133 82 **From Release Tarball**
cannam@133 83
cannam@133 84 You may download and install the release version of Cap'n Proto like so:
cannam@133 85
cannam@133 86 <pre><code>curl -O <a href="https://capnproto.org/capnproto-c++-0.0.0.tar.gz">https://capnproto.org/capnproto-c++-0.0.0.tar.gz</a>
cannam@133 87 tar zxf capnproto-c++-0.0.0.tar.gz
cannam@133 88 cd capnproto-c++-0.0.0
cannam@133 89 ./configure
cannam@133 90 make -j6 check
cannam@133 91 sudo make install</code></pre>
cannam@133 92
cannam@133 93 This will install `capnp`, the Cap'n Proto command-line tool. It will also install `libcapnp`,
cannam@133 94 `libcapnpc`, and `libkj` in `/usr/local/lib` and headers in `/usr/local/include/capnp` and
cannam@133 95 `/usr/local/include/kj`.
cannam@133 96
cannam@133 97 **From Package Managers**
cannam@133 98
cannam@133 99 Some package managers include Cap'n Proto packages.
cannam@133 100
cannam@133 101 Note: These packages are not maintained by us and are sometimes not up to date with the latest Cap'n Proto release.
cannam@133 102
cannam@133 103 * Debian / Ubuntu: `apt-get install capnproto`
cannam@133 104 * Homebrew (OSX): `brew install capnp`
cannam@133 105
cannam@133 106 **From Git**
cannam@133 107
cannam@133 108 If you download directly from Git, you will need to have the GNU autotools --
cannam@133 109 [autoconf](http://www.gnu.org/software/autoconf/),
cannam@133 110 [automake](http://www.gnu.org/software/automake/), and
cannam@133 111 [libtool](http://www.gnu.org/software/libtool/) -- installed.
cannam@133 112
cannam@133 113 git clone https://github.com/sandstorm-io/capnproto.git
cannam@133 114 cd capnproto/c++
cannam@133 115 autoreconf -i
cannam@133 116 ./configure
cannam@133 117 make -j6 check
cannam@133 118 sudo make install
cannam@133 119
cannam@133 120 ## Installation: Windows
cannam@133 121
cannam@133 122 **From Release Zip**
cannam@133 123
cannam@133 124 1. Download Cap'n Proto Win32 build:
cannam@133 125
cannam@133 126 <pre><a href="https://capnproto.org/capnproto-c++-win32-0.0.0.zip">https://capnproto.org/capnproto-c++-win32-0.0.0.zip</a></pre>
cannam@133 127
cannam@133 128 2. Find `capnp.exe`, `capnpc-c++.exe`, and `capnpc-capnp.exe` under `capnproto-tools-win32-0.0.0` in
cannam@133 129 the zip and copy them somewhere.
cannam@133 130
cannam@133 131 If you don't care about C++ support, you can stop here. The compiler exe can be used with plugins
cannam@133 132 provided by projects implementing Cap'n Proto in other languages.
cannam@133 133
cannam@133 134 If you want to use Cap'n Proto in C++ with Visual Studio, do the following:
cannam@133 135
cannam@133 136 1. Install [CMake](http://www.cmake.org/) version 3.1 or later.
cannam@133 137
cannam@133 138 2. Use CMake to generate Visual Studio project files under `capnproto-c++-0.0.0` in the zip file.
cannam@133 139 You will need to enable the CMake project options `CAPNP_LITE` and `EXTERNAL_CAPNP`.
cannam@133 140 You can use the CMake UI for this or run this shell command:
cannam@133 141
cannam@133 142 cmake -G "Visual Studio 14 2015" -DCAPNP_LITE=1 -DEXTERNAL_CAPNP=1
cannam@133 143
cannam@133 144 If the `capnp.exe` and `capnpc-c++.exe` tools are not on your `PATH`, then `CAPNP_EXECUTABLE`
cannam@133 145 and `CAPNPC_CXX_EXECUTABLE` will need to be set to their respective locations.
cannam@133 146
cannam@133 147 3. Open the "Cap'n Proto" solution in Visual Studio.
cannam@133 148
cannam@133 149 4. Adjust the project build options (e.g., choice of C++ runtime library, enable/disable exceptions
cannam@133 150 and RTTI) to match the options of the project in which you plan to use Cap'n Proto.
cannam@133 151
cannam@133 152 5. Build the solution (`ALL_BUILD`).
cannam@133 153
cannam@133 154 6. Build the `INSTALL` project to copy the compiled libraries and header files into `CMAKE_INSTALL_PREFIX`.
cannam@133 155
cannam@133 156 Alternatively, find the compiled `.lib` files in the build directory under
cannam@133 157 `src/{capnp,kj}/{Debug,Release}` and place them somewhere where your project can link against them.
cannam@133 158 Also add the `src` directory to your search path for `#include`s, or copy all the headers to your
cannam@133 159 project's include directory.
cannam@133 160
cannam@133 161 7. Add `#define CAPNP_LITE 1` to either your project's precompiled/shared header or compiler options.
cannam@133 162
cannam@133 163 **From Git**
cannam@133 164
cannam@133 165 If you download directly from Git, you'll need to compile the Cap'n Proto tools (the `.exe`s) using
cannam@133 166 MinGW-w64. This is easiest to do in Cygwin or on Linux. For example, on Debian or Ubuntu, you can
cannam@133 167 install MinGW like so:
cannam@133 168
cannam@133 169 sudo apt-get install mingw-w64
cannam@133 170
cannam@133 171 You'll first need to install Cap'n Proto on the host system (using the Unix installation
cannam@133 172 instructions, above). Then, do:
cannam@133 173
cannam@133 174 make distclean
cannam@133 175 ./configure --host=i686-w64-mingw32 --with-external-capnp \
cannam@133 176 --disable-shared CXXFLAGS='-static-libgcc -static-libstdc++'
cannam@133 177 make -j6 capnp.exe capnpc-c++.exe capnpc-capnp.exe
cannam@133 178
cannam@133 179 Now that you have the `exe`s, you can proceed with the usual Windows compilation instructions.