Revert "Revert "Improve build-from-source user experience""
This reverts commit a7e2fe21a7
.
This commit is contained in:
parent
a3d4f3f4de
commit
6289342908
88
README.md
88
README.md
|
@ -20,7 +20,7 @@ Contributing to FoundationDB can be in contributions to the code base, sharing y
|
|||
|
||||
### Binary downloads
|
||||
|
||||
Developers interested in using the FoundationDB store for an application can get started easily by downloading and installing a binary package. Please see the [downloads page](https://www.foundationdb.org/download/) for a list of available packages.
|
||||
Developers interested in using FoundationDB can get started by downloading and installing a binary package. Please see the [downloads page](https://www.foundationdb.org/download/) for a list of available packages.
|
||||
|
||||
|
||||
### Compiling from source
|
||||
|
@ -28,44 +28,24 @@ Developers interested in using the FoundationDB store for an application can get
|
|||
Developers on an OS for which there is no binary package, or who would like
|
||||
to start hacking on the code, can get started by compiling from source.
|
||||
|
||||
Currently there are two build systems: a collection of Makefiles and a
|
||||
CMake-based build system. Both of them should currently work for most users,
|
||||
and CMake should be the preferred choice as it will eventually become the only
|
||||
build system available.
|
||||
The official docker image for building is `foundationdb/foundationdb-build`. It has all dependencies installed. To build outside the official docker image you'll need at least these dependencies:
|
||||
|
||||
1. Install cmake Version 3.13 or higher [CMake](https://cmake.org/)
|
||||
1. Install [Mono](http://www.mono-project.com/download/stable/)
|
||||
1. Install [Ninja](https://ninja-build.org/) (optional, but recommended)
|
||||
|
||||
If compiling for local development, please set `-DUSE_WERROR=ON` in
|
||||
cmake. Our CI compiles with `-Werror` on, so this way you'll find out about
|
||||
compiler warnings that break the build earlier.
|
||||
|
||||
## CMake
|
||||
|
||||
To build with CMake, generally the following is required (works on Linux and
|
||||
Mac OS - for Windows see below):
|
||||
Once you have your dependencies, you can run cmake and then build:
|
||||
|
||||
1. Check out this repository.
|
||||
1. Install cmake Version 3.13 or higher [CMake](https://cmake.org/)
|
||||
1. Download version 1.67 of [Boost](https://sourceforge.net/projects/boost/files/boost/1.67.0/).
|
||||
1. Unpack boost (you don't need to compile it)
|
||||
1. Install [Mono](http://www.mono-project.com/download/stable/).
|
||||
1. Install a [JDK](http://www.oracle.com/technetwork/java/javase/downloads/index.html). FoundationDB currently builds with Java 8.
|
||||
1. Create a build directory (you can have the build directory anywhere you
|
||||
like): `mkdir build`
|
||||
1. `cd build`
|
||||
1. `cmake -GNinja -DBOOST_ROOT=<PATH_TO_BOOST> <PATH_TO_FOUNDATIONDB_DIRECTORY>`
|
||||
1. `ninja`
|
||||
|
||||
CMake will try to find its dependencies. However, for LibreSSL this can be often
|
||||
problematic (especially if OpenSSL is installed as well). For that we recommend
|
||||
passing the argument `-DLibreSSL_ROOT` to cmake. So, for example, if you
|
||||
LibreSSL is installed under `/usr/local/libressl-2.8.3`, you should call cmake like
|
||||
this:
|
||||
|
||||
```
|
||||
cmake -GNinja -DLibreSSL_ROOT=/usr/local/libressl-2.8.3/ ../foundationdb
|
||||
```
|
||||
|
||||
FoundationDB will build just fine without LibreSSL, however, the resulting
|
||||
binaries won't support TLS connections.
|
||||
like). There is currently a directory in the source tree called build, but you should not use it. See [#3098](https://github.com/apple/foundationdb/issues/3098)
|
||||
1. `cd <PATH_TO_BUILD_DIRECTORY>`
|
||||
1. `cmake -G Ninja <PATH_TO_FOUNDATIONDB_DIRECTORY>`
|
||||
1. `ninja # If this crashes it probably ran out of memory. Try ninja -j1`
|
||||
|
||||
### Language Bindings
|
||||
|
||||
|
@ -120,8 +100,7 @@ create a XCode-project with the following command:
|
|||
cmake -G Xcode -DOPEN_FOR_IDE=ON <FDB_SOURCE_DIRECTORY>
|
||||
```
|
||||
|
||||
You should create a second build-directory which you will use for building
|
||||
(probably with make or ninja) and debugging.
|
||||
You should create a second build-directory which you will use for building and debugging.
|
||||
|
||||
#### FreeBSD
|
||||
|
||||
|
@ -160,11 +139,8 @@ There are no special requirements for Linux. A docker image can be pulled from
|
|||
`foundationdb/foundationdb-build` that has all of FoundationDB's dependencies
|
||||
pre-installed, and is what the CI uses to build and test PRs.
|
||||
|
||||
If you want to create a package you have to tell cmake what platform it is for.
|
||||
And then you can build by simply calling `cpack`. So for debian, call:
|
||||
|
||||
```
|
||||
cmake -GNinja <FDB_SOURCE_DIR>
|
||||
cmake -G Ninja <FDB_SOURCE_DIR>
|
||||
ninja
|
||||
cpack -G DEB
|
||||
```
|
||||
|
@ -173,20 +149,15 @@ For RPM simply replace `DEB` with `RPM`.
|
|||
|
||||
### MacOS
|
||||
|
||||
The build under MacOS will work the same way as on Linux. To get LibreSSL,
|
||||
boost, and ninja you can use [Homebrew](https://brew.sh/). LibreSSL will not be
|
||||
installed in `/usr/local` instead it will stay in `/usr/local/Cellar`. So the
|
||||
cmake command will look something like this:
|
||||
The build under MacOS will work the same way as on Linux. To get boost and ninja you can use [Homebrew](https://brew.sh/).
|
||||
|
||||
```sh
|
||||
cmake -GNinja -DLibreSSL_ROOT=/usr/local/Cellar/libressl/2.8.3 <PATH_TO_FOUNDATIONDB_SOURCE>
|
||||
cmake -G Ninja <PATH_TO_FOUNDATIONDB_SOURCE>
|
||||
```
|
||||
|
||||
To generate a installable package, you have to call CMake with the corresponding
|
||||
arguments and then use cpack to generate the package:
|
||||
To generate a installable package, you can use cpack:
|
||||
|
||||
```sh
|
||||
cmake -GNinja <FDB_SOURCE_DIR>
|
||||
ninja
|
||||
cpack -G productbuild
|
||||
```
|
||||
|
@ -198,15 +169,15 @@ that Visual Studio is used to compile.
|
|||
|
||||
1. Install Visual Studio 2017 (Community Edition is tested)
|
||||
1. Install cmake Version 3.12 or higher [CMake](https://cmake.org/)
|
||||
1. Download version 1.67 of [Boost](https://sourceforge.net/projects/boost/files/boost/1.67.0/).
|
||||
1. Download version 1.72 of [Boost](https://dl.bintray.com/boostorg/release/1.72.0/source/boost_1_72_0.tar.bz2)
|
||||
1. Unpack boost (you don't need to compile it)
|
||||
1. Install [Mono](http://www.mono-project.com/download/stable/).
|
||||
1. Install a [JDK](http://www.oracle.com/technetwork/java/javase/downloads/index.html). FoundationDB currently builds with Java 8.
|
||||
1. Install [Mono](http://www.mono-project.com/download/stable/)
|
||||
1. (Optional) Install a [JDK](http://www.oracle.com/technetwork/java/javase/downloads/index.html). FoundationDB currently builds with Java 8
|
||||
1. Set `JAVA_HOME` to the unpacked location and JAVA_COMPILE to
|
||||
`$JAVA_HOME/bin/javac`.
|
||||
1. Install [Python](https://www.python.org/downloads/) if it is not already installed by Visual Studio.
|
||||
1. Install [Python](https://www.python.org/downloads/) if it is not already installed by Visual Studio
|
||||
1. (Optional) Install [WIX](http://wixtoolset.org/). Without it Visual Studio
|
||||
won't build the Windows installer.
|
||||
won't build the Windows installer
|
||||
1. Create a build directory (you can have the build directory anywhere you
|
||||
like): `mkdir build`
|
||||
1. `cd build`
|
||||
|
@ -218,22 +189,7 @@ that Visual Studio is used to compile.
|
|||
Studio will only know about the generated files. `msbuild` is located at
|
||||
`c:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe` for Visual Studio 15.
|
||||
|
||||
If you want TLS support to be enabled under Windows you currently have to build
|
||||
and install LibreSSL yourself as the newer LibreSSL versions are not provided
|
||||
for download from the LibreSSL homepage. To build LibreSSL:
|
||||
|
||||
1. Download and unpack libressl (>= 2.8.2)
|
||||
2. `cd libressl-2.8.2`
|
||||
3. `mkdir build`
|
||||
4. `cd build`
|
||||
5. `cmake -G "Visual Studio 15 2017 Win64" ..`
|
||||
6. Open the generated `LibreSSL.sln` in Visual Studio as administrator (this is
|
||||
necessary for the install)
|
||||
7. Build the `INSTALL` project in `Release` mode
|
||||
|
||||
This will install LibreSSL under `C:\Program Files\LibreSSL`. After that `cmake`
|
||||
will automatically find it and build with TLS support.
|
||||
|
||||
If you installed WIX before running `cmake` you should find the
|
||||
`FDBInstaller.msi` in your build directory under `packaging/msi`.
|
||||
|
||||
TODO: Re-add instructions for TLS support [#3022](https://github.com/apple/foundationdb/issues/3022)
|
||||
|
|
|
@ -85,7 +85,15 @@ include(CheckFunctionExists)
|
|||
set(CMAKE_REQUIRED_INCLUDES stdlib.h malloc.h)
|
||||
set(CMAKE_REQUIRED_LIBRARIES c)
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
set(CMAKE_C_STANDARD 11)
|
||||
set(CMAKE_C_STANDARD_REQUIRED ON)
|
||||
|
||||
include(CheckIncludeFile)
|
||||
CHECK_INCLUDE_FILE("stdatomic.h" HAS_C11_ATOMICS)
|
||||
if (NOT HAS_C11_ATOMICS)
|
||||
message(FATAL_ERROR "C compiler does not support c11 atomics")
|
||||
endif()
|
||||
|
||||
if(WIN32)
|
||||
# see: https://docs.microsoft.com/en-us/windows/desktop/WinProg/using-the-windows-headers
|
||||
|
|
Loading…
Reference in New Issue