diff --git a/doc/build/build_from_source.md b/doc/build/build_from_source.md
index a191d31318aa67e6f4de75d81c031aeb729311c9..c71ff260f8d0acae99f9e4752642ca8ee984f993 100644
--- a/doc/build/build_from_source.md
+++ b/doc/build/build_from_source.md
@@ -1,7 +1,11 @@
Build and Install
=================
-## Requirement
+* [1. Requirement](#Requirement)
+* [2. Build on Ubuntu](#ubuntu)
+* [3. Build on Mac OS X](#mac)
+
+## Requirement
### Dependents
@@ -28,7 +32,7 @@ PaddlePaddle also support some build options, you have to install related librar
- **WITH_STYLE_CHECK**: Style check for source code
-## Building on Ubuntu14.04
+## Building on Ubuntu14.04
### Install Dependencies
@@ -44,7 +48,7 @@ sudo apt-get install libgflags-dev
sudo apt-get install libgtest-dev
sudo pip install wheel
pushd /usr/src/gtest
-cmake .
+cmake ..
make
sudo cp *.a /usr/lib
popd
@@ -102,19 +106,19 @@ Here are some examples of cmake command with different options:
**only cpu**
```bash
-cmake -DWITH_GPU=OFF -DWITH_DOC=OFF
+cmake -DWITH_GPU=OFF -DWITH_DOC=OFF ..
```
**gpu**
```bash
-cmake -DWITH_GPU=ON -DWITH_DOC=OFF
+cmake -DWITH_GPU=ON -DWITH_DOC=OFF ..
```
**gpu with doc and swig**
```bash
-cmake -DWITH_GPU=ON -DWITH_DOC=ON -DWITH_SWIG_PY=ON
+cmake -DWITH_GPU=ON -DWITH_DOC=ON -DWITH_SWIG_PY=ON ..
```
Finally, you can download source code and build:
@@ -139,3 +143,129 @@ And if you set WITH_SWIG_PY=ON, you have to install related python predict api a
```bash
pip install /opt/paddle/share/wheels/*.whl
```
+## Building on Mac OS X
+
+### Prerequisites
+This guide is based on Mac OS X 10.11 (El Capitan). Note that if you are running an up to date version of OS X,
+you will already have Python 2.7.10 and Numpy 1.8 installed.
+
+The best option is to use the package manager homebrew to handle installations and upgrades for you.
+To install homebrew, first open a terminal window (you can find Terminal in the Utilities folder in Applications), and issue the command:
+
+```bash
+# install brew
+/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
+# install pip
+easy_install pip
+```
+
+### Install Dependencies
+
+- **CPU Dependencies**
+
+```bash
+# Install fundamental dependents
+brew install glog gflags cmake protobuf openblas
+
+# Install google test on Mac OS X
+# Download gtest 1.7.0
+wget https://github.com/google/googletest/archive/release-1.7.0.tar.gz
+tar -xvf googletest-release-1.7.0.tar.gz && cd googletest-release-1.7.0
+# Build gtest
+mkdir build && cmake ..
+make
+# Install gtest library
+sudo cp -r ../include/gtest /usr/local/include/
+sudo cp lib*.a /usr/local/lib
+```
+
+
+- **GPU Dependencies(optional)**
+
+If you need to build GPU version, the first thing you need is a machine that has NVIDIA GPU and CUDA installed.
+And you also need to install cuDNN.
+
+You can download CUDA toolkit and cuDNN from nvidia website:
+
+```bash
+https://developer.nvidia.com/cuda-downloads
+https://developer.nvidia.com/cudnn
+```
+You can copy cuDNN files into the CUDA toolkit directory, for instance:
+
+```bash
+sudo tar -xzf cudnn-7.5-osx-x64-v5.0-ga.tgz -C /usr/local
+sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
+```
+Then you need to set DYLD\_LIBRARY\_PATH, CUDA\_HOME and PATH environment variables in ~/.bashrc.
+
+```bash
+export DYLD_LIBRARY_PATH=/usr/local/cuda/lib:$DYLD_LIBRARY_PATH
+export PATH=/usr/local/cuda/bin:$PATH
+```
+- **Python Dependencies(optional)**
+
+If you want to compile PaddlePaddle with python predict API, you need to add -DWITH_SWIG_PY=ON in cmake command and install these first:
+
+```bash
+brew install swig
+```
+
+- **Doc Dependencies(optional)**
+
+If you want to compile PaddlePaddle with doc, you need to add -DWITH_DOC=ON in cmake command and install these first:
+
+```bash
+pip install 'sphinx>=1.4.0'
+pip install sphinx_rtd_theme breathe recommonmark
+brew install doxygen
+```
+
+### Build and Install
+
+CMake can find dependent libraries in system default paths firstly.
+After installing some optional libraries, corresponding build option will be on automatically (for instance, glog, gtest and gflags).
+If not found, you have to set following variables manually via CMake command (CUDNN_ROOT, ATLAS_ROOT, MKL_ROOT, OPENBLAS_ROOT).
+
+Here are some examples of CMake command with different options:
+
+**only cpu**
+
+```bash
+cmake -DWITH_GPU=OFF -DWITH_DOC=OFF ..
+```
+
+**gpu**
+
+```bash
+cmake -DWITH_GPU=ON -DWITH_DOC=OFF ..
+```
+
+**gpu with doc and swig**
+
+```bash
+cmake -DWITH_GPU=ON -DWITH_DOC=ON -DWITH_SWIG_PY=ON ..
+```
+
+Finally, you can download source code and build:
+
+```bash
+git clone https://github.com/baidu/Paddle paddle
+cd paddle
+mkdir build
+cd build
+# you can add build option here, such as:
+cmake -DWITH_GPU=ON -DWITH_DOC=OFF -DCMAKE_INSTALL_PREFIX= ..
+# please use sudo make install, if you want
+# to install PaddlePaddle into the system
+make -j `nproc` && make install
+# PaddlePaddle installation path
+export PATH=/bin:$PATH
+```
+**Note**
+
+And if you set WITH_SWIG_PY=ON, you have to install related python predict api at the same time:
+
+```bash
+sudo pip install /opt/paddle/share/wheels/*.whl
+```
\ No newline at end of file