Pull from FB rev 63ce89e2f2301e6bba44a111cc7d4218022156f6
[folly.git] / folly / README
1 Folly: Facebook Open-source LibrarY
2 -----------------------------------
3
4 Folly is an open-source C++ library developed and used at Facebook.
5
6 Note to Facebook contributors:
7 * Code in folly may ONLY depend on other code from folly,
8   external libraries from /home/engshare/externals and from
9   fbcode/external (preferably only the latter, eventually all deps
10   will be moved to external)
11 * Code in folly goes in namespace folly.
12 * Tests should go in tests directory.
13 * Please keep Makefile.am's up to date.  fbconfig should warn if
14   it thinks something is missing.
15 * NO EXCEPTIONS. This will eventually be enforced.
16 * config.h is a generated file.  It is checked in so fbmake can run
17   without needing to run autotools.  To regenerate it, run
18   autoreconf
19   ./configure
20   You will probably also have to export the correct paths for your
21   enviroment (such as CC or CXX_INCLUDES) since we aren't using
22   the standard linux paths.
23
24 Dependencies
25 ------------
26
27 - double-conversion (http://code.google.com/p/double-conversion/)
28
29     By default, the build tooling for double-conversion does not build
30     any libraries, which folly requires.  To build the necessary libraries
31     copy folly/SConstruct.double-conversion to your double-conversion
32     source directory before building:
33
34       [double-conversion/] scons -f SConstruct.double-conversion
35
36     Then set CPPFLAGS/LDFLAGS so that folly can find your double-conversion
37     build:
38
39       [folly/] LDFLAGS=-L<double-conversion>/ CPPFLAGS=-I<double-conversion>/src/
40         configure ...
41
42 - googletest (Google C++ Testing Framework)
43
44   Grab gtest 1.6.0 from:
45   http://googletest.googlecode.com/files/gtest-1.6.0.zip
46
47   Unzip it inside of the test/ subdirectory.
48
49 - additional platform specific dependencies:
50
51   Ubuntu 12.04 64-bit
52     - g++
53     - automake
54     - autoconf
55     - libtool
56     - libboost1.46-all-dev
57     - libgoogle-glog-dev
58         This package has been removed from 12.04 -- use the one from 11.10
59     - gflags (packages need to be downloaded from below)
60         http://gflags.googlecode.com/files/libgflags-dev_2.0-1_amd64.deb
61         http://gflags.googlecode.com/files/libgflags0_2.0-1_amd64.deb
62     - scons (for double-conversion)
63
64   Fedora 17 64-bit
65     - gcc
66     - gcc-c++
67     - autoconf
68     - automake
69     - boost-devel
70     - libtool
71     - glog-devel
72     - gflags-devel
73     - scons (for double-conversion)