DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH v4 1/2] doc: add generic compilation doc for all sample apps
@ 2017-10-05 11:12 Marko Kovacevic
  2017-10-05 11:12 ` [dpdk-dev] [PATCH v4 2/2] doc: add new introduction to sample app guides Marko Kovacevic
                   ` (2 more replies)
  0 siblings, 3 replies; 18+ messages in thread
From: Marko Kovacevic @ 2017-10-05 11:12 UTC (permalink / raw)
  To: john.mcnamara; +Cc: dev, marko.kovacevic, Herakliusz Lipiec

From: Herakliusz Lipiec <herakliusz.lipiec@intel.com>

Moved duplicated, and occasionally outdated, doc sections from each
of the sample app guides chapters to a common chapter at the start.

This reduces the duplication in the docs and provides a single
point of reference for compiling the sample apps.

Fixes: d0dff9ba445e ("doc: sample application user guide")
Fixes: 60643134c1c1 ("doc: add distributor application")
Fixes: bda68ab9d1e7 ("examples/ethtool: add user-space ethtool sample application")
Fixes: d299106e8e31 ("examples/ipsec-secgw: add IPsec sample application")
Fixes: e64833f2273a ("examples/l2fwd-keepalive: add sample application")
Fixes: d0dff9ba445e ("doc: sample application user guide")
Fixes: f6baccbc2b3b ("examples/l2fwd-cat: add sample application for PQoS CAT and CDP")
Fixes: ba7b86b1419b ("doc: add l2fwd-crypto sample app guide")
Fixes: ccefe752cab0 ("doc: add jobstats sample guide")
Fixes: 1b2038b06fae ("doc: new packet ordering app description")
Fixes: 4d1a771bd88d ("doc: add guide for performance-thread example")
Fixes: 2d1232571112 ("doc: add PTP client sample guide")
Fixes: 0d8d3df6b81b ("doc: add Rx and Tx callbacks sample app user guide")
Fixes: eb21185d6f21 ("doc: add flow distributor example guide")
Fixes: 1443da3bbd71 ("doc: add basic forwarding skeleton user guide")
Fixes: 181654b7162e ("doc: add a VXLAN sample guide")
Fixes: c75f4e6a7a2b ("doc: add vm power mgmt app")

Signed-off-by: Herakliusz Lipiec <herakliusz.lipiec@intel.com>
Signed-off-by: Marko Kovacevic <marko.kovacevic@intel.com>

---
v3:
   -removed unnecessary addition of export RTE_TARGET (Thomas)
   -changed make install to make config               (Thomas)
   -Inserted new method to export and make examples   (Thomas)
---
 doc/guides/sample_app_ug/cmd_line.rst              |  21 +---
 doc/guides/sample_app_ug/compiling.rst             | 135 +++++++++++++++++++++
 doc/guides/sample_app_ug/dist_app.rst              |  22 +---
 doc/guides/sample_app_ug/ethtool.rst               |  23 +---
 doc/guides/sample_app_ug/exception_path.rst        |  23 +---
 doc/guides/sample_app_ug/hello_world.rst           |  21 +---
 doc/guides/sample_app_ug/index.rst                 |   1 +
 doc/guides/sample_app_ug/ip_frag.rst               |  27 +----
 doc/guides/sample_app_ug/ip_reassembly.rst         |  22 +---
 doc/guides/sample_app_ug/ipsec_secgw.rst           |  19 +--
 doc/guides/sample_app_ug/ipv4_multicast.rst        |  33 +----
 doc/guides/sample_app_ug/keep_alive.rst            |  22 +---
 doc/guides/sample_app_ug/kernel_nic_interface.rst  |  24 +---
 doc/guides/sample_app_ug/l2_forward_cat.rst        |  34 ++----
 doc/guides/sample_app_ug/l2_forward_crypto.rst     |  21 +---
 doc/guides/sample_app_ug/l2_forward_job_stats.rst  |  21 +---
 .../sample_app_ug/l2_forward_real_virtual.rst      |  21 +---
 doc/guides/sample_app_ug/l3_forward.rst            |  23 +---
 .../sample_app_ug/l3_forward_access_ctrl.rst       |  23 +---
 doc/guides/sample_app_ug/l3_forward_power_man.rst  |  23 +---
 doc/guides/sample_app_ug/l3_forward_virtual.rst    |  29 +----
 doc/guides/sample_app_ug/link_status_intr.rst      |  27 +----
 doc/guides/sample_app_ug/load_balancer.rst         |  19 +--
 doc/guides/sample_app_ug/multi_process.rst         |  22 +---
 doc/guides/sample_app_ug/netmap_compatibility.rst  |  25 +---
 doc/guides/sample_app_ug/packet_ordering.rst       |  23 +---
 doc/guides/sample_app_ug/performance_thread.rst    |  22 +---
 doc/guides/sample_app_ug/ptpclient.rst             |  33 ++---
 doc/guides/sample_app_ug/qos_metering.rst          |  24 +---
 doc/guides/sample_app_ug/qos_scheduler.rst         |  21 +---
 doc/guides/sample_app_ug/quota_watermark.rst       |  22 +---
 doc/guides/sample_app_ug/rxtx_callbacks.rst        |  25 +---
 doc/guides/sample_app_ug/server_node_efd.rst       |  21 +---
 doc/guides/sample_app_ug/skeleton.rst              |  25 +---
 doc/guides/sample_app_ug/test_pipeline.rst         |  20 +--
 doc/guides/sample_app_ug/timer.rst                 |  21 +---
 doc/guides/sample_app_ug/vhost.rst                 |  16 +--
 doc/guides/sample_app_ug/vm_power_management.rst   |   9 +-
 doc/guides/sample_app_ug/vmdq_dcb_forwarding.rst   |  19 +--
 39 files changed, 241 insertions(+), 741 deletions(-)
 create mode 100644 doc/guides/sample_app_ug/compiling.rst

diff --git a/doc/guides/sample_app_ug/cmd_line.rst b/doc/guides/sample_app_ug/cmd_line.rst
index 36c7971..7ea0dea 100644
--- a/doc/guides/sample_app_ug/cmd_line.rst
+++ b/doc/guides/sample_app_ug/cmd_line.rst
@@ -68,26 +68,9 @@ There are three simple commands:
 Compiling the Application
 -------------------------
 
-#.  Go to example directory:
+To compile the sample application see :ref:`sample_app_compilation`
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/cmdline
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    Refer to the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``cmd_line`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/compiling.rst b/doc/guides/sample_app_ug/compiling.rst
new file mode 100644
index 0000000..c40a87a
--- /dev/null
+++ b/doc/guides/sample_app_ug/compiling.rst
@@ -0,0 +1,135 @@
+ ..  BSD LICENSE
+     Copyright(c) 2015 Intel Corporation. All rights reserved.
+     All rights reserved.
+
+     Redistribution and use in source and binary forms, with or without
+     modification, are permitted provided that the following conditions
+     are met:
+
+     * Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+     * Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in
+     the documentation and/or other materials provided with the
+     distribution.
+     * Neither the name of Intel Corporation nor the names of its
+     contributors may be used to endorse or promote products derived
+     from this software without specific prior written permission.
+
+     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+     "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+     LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+     A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+     OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+     LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+     DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+     THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+.. _sample_app_compilation:
+
+Compiling the Sample Applications
+=================================
+
+This section explains how to compile the DPDK sample applications.
+
+To compile all the sample applications
+--------------------------------------
+
+
+Set the path to DPDK source code if its not set:
+
+    .. code-block:: console
+
+        export RTE_SDK=/path/to/rte_sdk
+
+Go to DPDK source:
+
+    .. code-block:: console
+
+        cd $RTE_SDK
+
+Make and install DPDK:
+
+   .. code-block:: console
+
+        make config T=$RTE_TARGET
+        make
+
+Build the sample applications:
+
+   .. code-block:: console
+
+       export RTE_TARGET=build
+       make -C examples
+
+For other possible ``RTE_TARGET`` values and additional information on
+compiling see
+:ref:`Compiling DPDK on Linux <linux_gsg_compiling_dpdk>` or
+:ref:`Compiling DPDK on FreeBSD <building_from_source>`.
+Applications are output to: ``$RTE_SDK/examples/app-dir/build`` or
+``$RTE_SDK/examples/app-dir/$RTE_TARGET``.
+
+
+
+To compile a single application
+-------------------------------
+
+Set the path to DPDK source code:
+
+    .. code-block:: console
+
+        export RTE_SDK=/path/to/rte_sdk
+
+Set the target (a default target is used if not specified). For example:
+
+    .. code-block:: console
+
+        export RTE_TARGET=x86_64-native-linuxapp-gcc
+
+See the *DPDK Getting Started Guide* for possible ``RTE_TARGET`` values.
+
+
+Go to DPDK source:
+
+    .. code-block:: console
+
+       cd $RTE_SDK
+
+
+Make and install DPDK:
+
+    .. code-block:: console
+
+        make install T=$RTE_TARGET
+
+
+Go to the sample application directory. Unless otherwise specified the sample
+applications are located in ``$RTE_SDK/examples/``.
+
+
+Build the application:
+
+    .. code-block:: console
+
+        make
+
+
+The compiled application is written to the build subdirectory.
+To have the application written to a different location,
+the ``O=/path/to/build/directory`` option may be specified in the make command.
+
+    .. code-block:: console
+
+       make O=/tmp/
+
+
+To build the application for debugging use the ``DEBUG`` option.
+This option adds some extra flags, disables compiler optimizations and
+sets verbose output.
+
+    .. code-block:: console
+
+       make DEBUG=1
diff --git a/doc/guides/sample_app_ug/dist_app.rst b/doc/guides/sample_app_ug/dist_app.rst
index 1cae473..466115d 100644
--- a/doc/guides/sample_app_ug/dist_app.rst
+++ b/doc/guides/sample_app_ug/dist_app.rst
@@ -53,30 +53,12 @@ generator as shown in the figure below.
 
    Performance Benchmarking Setup (Basic Environment)
 
-
 Compiling the Application
 -------------------------
 
-#.  Go to the sample application directory:
-
-    ..  code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/distributor
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    ..  code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the DPDK Getting Started Guide for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    ..  code-block:: console
+To compile the sample application see :ref:`sample_app_compilation`.
 
-        make
+The application is located in the ``distributor`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/ethtool.rst b/doc/guides/sample_app_ug/ethtool.rst
index 6779795..814d78b 100644
--- a/doc/guides/sample_app_ug/ethtool.rst
+++ b/doc/guides/sample_app_ug/ethtool.rst
@@ -40,28 +40,9 @@ is based upon a simple L2 frame reflector.
 Compiling the Application
 -------------------------
 
-To compile the application:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Go to the sample application directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/ethtool
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``ethtool`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/exception_path.rst b/doc/guides/sample_app_ug/exception_path.rst
index e505fb3..2dee8bf 100644
--- a/doc/guides/sample_app_ug/exception_path.rst
+++ b/doc/guides/sample_app_ug/exception_path.rst
@@ -58,28 +58,9 @@ To make throughput measurements, kernel bridges must be setup to forward data be
 Compiling the Application
 -------------------------
 
-#.  Go to example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/exception_path
-
-#.  Set the target (a default target will be used if not specified).
-    For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-This application is intended as a linuxapp only.
-See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``exception_path`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/hello_world.rst b/doc/guides/sample_app_ug/hello_world.rst
index f4753af..8196702 100644
--- a/doc/guides/sample_app_ug/hello_world.rst
+++ b/doc/guides/sample_app_ug/hello_world.rst
@@ -37,26 +37,9 @@ The application simply prints an "helloworld" message on every enabled lcore.
 Compiling the Application
 -------------------------
 
-#.  Go to the example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/helloworld
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started* Guide for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``helloworld`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/index.rst b/doc/guides/sample_app_ug/index.rst
index 069d4f1..4f8340a 100644
--- a/doc/guides/sample_app_ug/index.rst
+++ b/doc/guides/sample_app_ug/index.rst
@@ -36,6 +36,7 @@ Sample Applications User Guides
     :numbered:
 
     intro
+    compiling
     cmd_line
     ethtool
     exception_path
diff --git a/doc/guides/sample_app_ug/ip_frag.rst b/doc/guides/sample_app_ug/ip_frag.rst
index bd1fe2d..5686b35 100644
--- a/doc/guides/sample_app_ug/ip_frag.rst
+++ b/doc/guides/sample_app_ug/ip_frag.rst
@@ -59,31 +59,12 @@ Any unmatched packets are forwarded to the originating port.
 By default, input frame sizes up to 9.5 KB are supported.
 Before forwarding, the input IP packet is fragmented to fit into the "standard" Ethernet* v2 MTU (1500 bytes).
 
-Building the Application
-------------------------
+Compiling the Application
+-------------------------
 
-To build the application:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Go to the sample application directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/ip_fragmentation
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``ip_fragmentation`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/ip_reassembly.rst b/doc/guides/sample_app_ug/ip_reassembly.rst
index cc9e591..21d00fc 100644
--- a/doc/guides/sample_app_ug/ip_reassembly.rst
+++ b/doc/guides/sample_app_ug/ip_reassembly.rst
@@ -53,28 +53,14 @@ There are two key differences from the L2 Forwarding sample application:
 The Longest Prefix Match (LPM for IPv4, LPM6 for IPv6) table is used to store/lookup an outgoing port number, associated with that IPv4 address. Any unmatched packets are forwarded to the originating port.Compiling the Application
 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
-To compile the application:
 
-#.  Go to the sample application directory:
+Compiling the Application
+-------------------------
 
-   .. code-block:: console
+To compile the sample application see :ref:`sample_app_compilation`.
 
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/ip_reassembly
+The application is located in the ``ip_reassembly`` sub-directory.
 
-#.  Set the target (a default target is used if not specified). For example:
-
-   .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-   .. code-block:: console
-
-        make
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/ipsec_secgw.rst b/doc/guides/sample_app_ug/ipsec_secgw.rst
index b675cba..c6af171 100644
--- a/doc/guides/sample_app_ug/ipsec_secgw.rst
+++ b/doc/guides/sample_app_ug/ipsec_secgw.rst
@@ -83,27 +83,12 @@ Constraints
 *  Each SA must be handle by a unique lcore (*1 RX queue per port*).
 *  No chained mbufs.
 
-
 Compiling the Application
 -------------------------
 
-To compile the application:
-
-#. Go to the sample application directory::
-
-      export RTE_SDK=/path/to/rte_sdk
-      cd ${RTE_SDK}/examples/ipsec-secgw
-
-#. Set the target (a default target is used if not specified). For example::
-
-
-      export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-   See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#. Build the application::
+To compile the sample application see :ref:`sample_app_compilation`.
 
-       make
+The application is located in the ``rpsec-secgw`` sub-directory.
 
 #. [Optional] Build the application for debugging:
    This option adds some extra flags, disables compiler optimizations and
diff --git a/doc/guides/sample_app_ug/ipv4_multicast.rst b/doc/guides/sample_app_ug/ipv4_multicast.rst
index 49712a0..4896be3 100644
--- a/doc/guides/sample_app_ug/ipv4_multicast.rst
+++ b/doc/guides/sample_app_ug/ipv4_multicast.rst
@@ -63,37 +63,12 @@ with the mask of ports to multicast packets to.
 Also, the application does not consider the Ethernet addresses;
 it looks only at the IPv4 destination address for any given packet.
 
-Building the Application
-------------------------
+Compiling the Application
+-------------------------
 
-To compile the application:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Go to the sample application directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/ipv4_multicast
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
-
-.. note::
-
-    The compiled application is written to the build subdirectory.
-    To have the application written to a different location,
-    the O=/path/to/build/directory option may be specified in the make command.
+The application is located in the ``ipv4_multicast`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/keep_alive.rst b/doc/guides/sample_app_ug/keep_alive.rst
index fe90820..e58e40c 100644
--- a/doc/guides/sample_app_ug/keep_alive.rst
+++ b/doc/guides/sample_app_ug/keep_alive.rst
@@ -66,27 +66,9 @@ of the L2 forwarding application.
 Compiling the Application
 -------------------------
 
-To compile the application:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Go to the sample application directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk cd ${RTE_SDK}/examples/keep_alive
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``l2fwd_keep_alive`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/kernel_nic_interface.rst b/doc/guides/sample_app_ug/kernel_nic_interface.rst
index 619a7b5..c27af67 100644
--- a/doc/guides/sample_app_ug/kernel_nic_interface.rst
+++ b/doc/guides/sample_app_ug/kernel_nic_interface.rst
@@ -77,35 +77,17 @@ The packet flow through the Kernel NIC Interface application is as shown in the
 
    Kernel NIC Application Packet Flow
 
-
 Compiling the Application
 -------------------------
 
-Compile the application as follows:
-
-#.  Go to the example directory:
-
-    .. code-block:: console
+To compile the sample application see :ref:`sample_app_compilation`.
 
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/kni
+The application is located in the ``kni`` sub-directory.
 
-#.  Set the target (a default target is used if not specified)
-
-    .. note::
+.. note::
 
         This application is intended as a linuxapp only.
 
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
-
 Loading the Kernel Module
 -------------------------
 
diff --git a/doc/guides/sample_app_ug/l2_forward_cat.rst b/doc/guides/sample_app_ug/l2_forward_cat.rst
index b0c2e10..cf09b38 100644
--- a/doc/guides/sample_app_ug/l2_forward_cat.rst
+++ b/doc/guides/sample_app_ug/l2_forward_cat.rst
@@ -67,38 +67,28 @@ White paper demonstrating example use case:
 
 Compiling the Application
 -------------------------
+.. note::
 
-Requires ``libpqos`` from Intel's
-`intel-cmt-cat software package <https://github.com/01org/intel-cmt-cat>`_
-hosted on GitHub repository. For installation notes, please see ``README`` file.
+    Requires ``libpqos`` from Intel's
+    `intel-cmt-cat software package <https://github.com/01org/intel-cmt-cat>`_
+    hosted on GitHub repository. For installation notes, please see ``README`` file.
 
-GIT:
+    GIT:
 
-* https://github.com/01org/intel-cmt-cat
-
-To compile the application export the path to PQoS lib
-and the DPDK source tree and go to the example directory:
-
-.. code-block:: console
+    * https://github.com/01org/intel-cmt-cat
 
-    export PQOS_INSTALL_PATH=/path/to/libpqos
-    export RTE_SDK=/path/to/rte_sdk
 
-    cd ${RTE_SDK}/examples/l2fwd-cat
+#. To compile the application export the path to PQoS lib
+   and the DPDK source tree and go to the example directory:
 
-Set the target, for example:
+   .. code-block:: console
 
-.. code-block:: console
-
-    export RTE_TARGET=x86_64-native-linuxapp-gcc
+       export PQOS_INSTALL_PATH=/path/to/libpqos
 
-See the *DPDK Getting Started* Guide for possible ``RTE_TARGET`` values.
 
-Build the application as follows:
-
-.. code-block:: console
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    make
+The application is located in the ``l2fwd-cat`` sub-directory.
 
 
 Running the Application
diff --git a/doc/guides/sample_app_ug/l2_forward_crypto.rst b/doc/guides/sample_app_ug/l2_forward_crypto.rst
index 158f4b4..9dace20 100644
--- a/doc/guides/sample_app_ug/l2_forward_crypto.rst
+++ b/doc/guides/sample_app_ug/l2_forward_crypto.rst
@@ -55,26 +55,9 @@ Also, if MAC addresses updating is enabled, the MAC addresses are affected as fo
 Compiling the Application
 -------------------------
 
-#.  Go to the example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/l2fwd-crypto
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    *See the DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``l2fwd-crypt`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/l2_forward_job_stats.rst b/doc/guides/sample_app_ug/l2_forward_job_stats.rst
index 1029cc8..9aaf80a 100644
--- a/doc/guides/sample_app_ug/l2_forward_job_stats.rst
+++ b/doc/guides/sample_app_ug/l2_forward_job_stats.rst
@@ -97,26 +97,9 @@ in this case enabling a total of four Virtual Functions.
 Compiling the Application
 -------------------------
 
-#.  Go to the example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/l2fwd-jobstats
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    *See the DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``l2fwd-jobstats`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/l2_forward_real_virtual.rst b/doc/guides/sample_app_ug/l2_forward_real_virtual.rst
index f579c8f..ba64ea2 100644
--- a/doc/guides/sample_app_ug/l2_forward_real_virtual.rst
+++ b/doc/guides/sample_app_ug/l2_forward_real_virtual.rst
@@ -107,26 +107,9 @@ in this case enabling a total of four Virtual Functions.
 Compiling the Application
 -------------------------
 
-#.  Go to the example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/l2fwd
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    *See the DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``l2fwd`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/l3_forward.rst b/doc/guides/sample_app_ug/l3_forward.rst
index 6a6b8fb..1eb12c4 100644
--- a/doc/guides/sample_app_ug/l3_forward.rst
+++ b/doc/guides/sample_app_ug/l3_forward.rst
@@ -62,28 +62,9 @@ In the sample application, hash-based forwarding supports IPv4 and IPv6. LPM-bas
 Compiling the Application
 -------------------------
 
-To compile the application:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Go to the sample application directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/l3fwd
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``l3fwd`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/l3_forward_access_ctrl.rst b/doc/guides/sample_app_ug/l3_forward_access_ctrl.rst
index a6aa4fb..cf71a6c 100644
--- a/doc/guides/sample_app_ug/l3_forward_access_ctrl.rst
+++ b/doc/guides/sample_app_ug/l3_forward_access_ctrl.rst
@@ -252,28 +252,9 @@ Once the application starts, it transitions through three phases:
 Compiling the Application
 -------------------------
 
-To compile the application:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Go to the sample application directory:
-
-    ..  code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/l3fwd-acl
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    ..  code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK IPL Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    ..  code-block:: console
-
-        make
+The application is located in the ``l3fwd-acl`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/l3_forward_power_man.rst b/doc/guides/sample_app_ug/l3_forward_power_man.rst
index ea9c404..271ee04 100644
--- a/doc/guides/sample_app_ug/l3_forward_power_man.rst
+++ b/doc/guides/sample_app_ug/l3_forward_power_man.rst
@@ -104,28 +104,9 @@ instead of always running to the C0 state waiting for packets.
 Compiling the Application
 -------------------------
 
-To compile the application:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Go to the sample application directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/l3fwd-power
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``l3fwd-power`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/l3_forward_virtual.rst b/doc/guides/sample_app_ug/l3_forward_virtual.rst
index 5f9d894..e96f79e 100644
--- a/doc/guides/sample_app_ug/l3_forward_virtual.rst
+++ b/doc/guides/sample_app_ug/l3_forward_virtual.rst
@@ -64,34 +64,9 @@ The set of LPM rules used by the application is statically configured and loaded
 Compiling the Application
 -------------------------
 
-To compile the application:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Go to the sample application directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/l3fwd-vf
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
-
-.. note::
-
-    The compiled application is written to the build subdirectory.
-    To have the application written to a different location,
-    the O=/path/to/build/directory option may be specified in the make command.
+The application is located in the ``l3fwd-vf`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/link_status_intr.rst b/doc/guides/sample_app_ug/link_status_intr.rst
index f9af474..d073e71 100644
--- a/doc/guides/sample_app_ug/link_status_intr.rst
+++ b/doc/guides/sample_app_ug/link_status_intr.rst
@@ -55,32 +55,9 @@ and the behavior of L2 forwarding each time the link status changes.
 Compiling the Application
 -------------------------
 
-#.  Go to the example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/link_status_interrupt
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
-
-.. note::
-
-    The compiled application is written to the build subdirectory.
-    To have the application written to a different location,
-    the O=/path/to/build/directory option may be specified on the make command line.
+The application is located in the ``link_status_interrupt`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/load_balancer.rst b/doc/guides/sample_app_ug/load_balancer.rst
index e101a5f..925ba5d 100644
--- a/doc/guides/sample_app_ug/load_balancer.rst
+++ b/doc/guides/sample_app_ug/load_balancer.rst
@@ -86,24 +86,9 @@ The routing logic is LPM based, with all the worker threads sharing the same LPM
 Compiling the Application
 -------------------------
 
-The sequence of steps used to build the application is:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Export the required environment variables:
-
-    .. code-block:: console
-
-        export RTE_SDK=<Path to the DPDK installation folder>
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-#.  Build the application executable file:
-
-    .. code-block:: console
-
-        cd ${RTE_SDK}/examples/load_balancer
-        make
-
-    For more details on how to build the DPDK libraries and sample applications,
-    please refer to the *DPDK Getting Started Guide.*
+The application is located in the ``load_balancer`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/multi_process.rst b/doc/guides/sample_app_ug/multi_process.rst
index d4df2fa..4b6df70 100644
--- a/doc/guides/sample_app_ug/multi_process.rst
+++ b/doc/guides/sample_app_ug/multi_process.rst
@@ -40,31 +40,13 @@ Example Applications
 
 Building the Sample Applications
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
 The multi-process example applications are built in the same way as other sample applications,
 and as documented in the *DPDK Getting Started Guide*.
-To build all the example applications:
-
-#.  Set RTE_SDK and go to the example directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/multi_process
-
-#.  Set the target (a default target will be used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
 
-#.  Build the applications:
 
-    .. code-block:: console
+To compile the sample application see :ref:`sample_app_compilation`.
 
-        make
+The applications are located in the ``multi_process`` sub-directory.
 
 .. note::
 
diff --git a/doc/guides/sample_app_ug/netmap_compatibility.rst b/doc/guides/sample_app_ug/netmap_compatibility.rst
index 030fd98..0ff5059 100644
--- a/doc/guides/sample_app_ug/netmap_compatibility.rst
+++ b/doc/guides/sample_app_ug/netmap_compatibility.rst
@@ -121,29 +121,12 @@ The bridge application is an example largely based on the bridge example shipped
 It shows how a minimal Netmap application with minimal and straightforward source code changes can be run on top of the DPDK.
 Please refer to ``$RTE_SDK/examples/netmap_compat/bridge/bridge.c`` for an example of a ported application.
 
-Compiling the "bridge" Sample Application
------------------------------------------
+Compiling the Application
+-------------------------
 
-#.  Go to the example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/netmap_compat
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide for Linux* for possible ``RTE_TARGET`` values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``netmap_compat`` sub-directory.
 
 Running the "bridge" Sample Application
 ---------------------------------------
diff --git a/doc/guides/sample_app_ug/packet_ordering.rst b/doc/guides/sample_app_ug/packet_ordering.rst
index ef85150..3c6eb35 100644
--- a/doc/guides/sample_app_ug/packet_ordering.rst
+++ b/doc/guides/sample_app_ug/packet_ordering.rst
@@ -51,28 +51,11 @@ The application uses at least three CPU cores:
   from the reorder buffer and sends them to the NIC ports for transmission.
 
 Compiling the Application
---------------------------
+-------------------------
 
-#.  Go to the example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/helloworld
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started* Guide for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``packet_ordering`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/performance_thread.rst b/doc/guides/sample_app_ug/performance_thread.rst
index a55a624..c718ce6 100644
--- a/doc/guides/sample_app_ug/performance_thread.rst
+++ b/doc/guides/sample_app_ug/performance_thread.rst
@@ -73,28 +73,10 @@ invalid.
 
 Compiling the Application
 -------------------------
-The application is located in the sample application folder in the
-``performance-thread`` folder.
 
-#.  Go to the example applications folder
-
-    .. code-block:: console
-
-       export RTE_SDK=/path/to/rte_sdk
-       cd ${RTE_SDK}/examples/performance-thread/l3fwd-thread
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-       export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Linux Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-        make
+To compile the sample application see :ref:`sample_app_compilation`.
 
+The application is located in the `performance-thread/l3fwd-thread` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/ptpclient.rst b/doc/guides/sample_app_ug/ptpclient.rst
index d3ef1d1..b456e33 100644
--- a/doc/guides/sample_app_ug/ptpclient.rst
+++ b/doc/guides/sample_app_ug/ptpclient.rst
@@ -78,39 +78,20 @@ The adjustment for slave can be represented as:
 If the command line parameter ``-T 1`` is used the application also
 synchronizes the PTP PHC clock with the Linux kernel clock.
 
-
 Compiling the Application
 -------------------------
 
-To compile the application, export the path to the DPDK source tree and edit
-the ``config/common_linuxapp`` configuration file to enable IEEE1588:
-
-.. code-block:: console
-
-    export RTE_SDK=/path/to/rte_sdk
-
-    # Edit  common_linuxapp and set the following options:
-    CONFIG_RTE_LIBRTE_IEEE1588=y
-
-Set the target, for example:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-.. code-block:: console
-
-    export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-See the *DPDK Getting Started* Guide for possible ``RTE_TARGET`` values.
-
-Build the application as follows:
-
-.. code-block:: console
+The application is located in the ``ptpclient`` sub-directory.
 
-    # Recompile DPDK.
-    make install T=$RTE_TARGET
+.. note::
+   To compile the application edit the ``config/common_linuxapp`` configuration file to enable IEEE1588
+   and then recompile DPDK:
 
-    # Compile the application.
-    cd ${RTE_SDK}/examples/ptpclient
-    make
+   .. code-block:: console
 
+      CONFIG_RTE_LIBRTE_IEEE1588=y
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/qos_metering.rst b/doc/guides/sample_app_ug/qos_metering.rst
index e1a6ac7..c6a9d72 100644
--- a/doc/guides/sample_app_ug/qos_metering.rst
+++ b/doc/guides/sample_app_ug/qos_metering.rst
@@ -64,29 +64,9 @@ all the incoming packets are colored as green.
 Compiling the Application
 -------------------------
 
-#.  Go to the example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/qos_meter
-
-#.  Set the target
-    (a default target is used if not specified):
-
-    .. note::
-
-        This application is intended as a linuxapp only.
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``qos_meter`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/qos_scheduler.rst b/doc/guides/sample_app_ug/qos_scheduler.rst
index a6654cb..e618e2a 100644
--- a/doc/guides/sample_app_ug/qos_scheduler.rst
+++ b/doc/guides/sample_app_ug/qos_scheduler.rst
@@ -58,31 +58,14 @@ The TX thread, if present, reads from the TX ring and write the packets to the T
 Compiling the Application
 -------------------------
 
-To compile the application:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Go to the sample application directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/qos_sched
-
-#.  Set the target (a default target is used if not specified). For example:
+The application is located in the ``qos_sched`` sub-directory.
 
     .. note::
 
         This application is intended as a linuxapp only.
 
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
-
 .. note::
 
     To get statistics on the sample app using the command line interface as described in the next section,
diff --git a/doc/guides/sample_app_ug/quota_watermark.rst b/doc/guides/sample_app_ug/quota_watermark.rst
index 2c3a432..c185147 100644
--- a/doc/guides/sample_app_ug/quota_watermark.rst
+++ b/doc/guides/sample_app_ug/quota_watermark.rst
@@ -88,30 +88,12 @@ as shown in :numref:`figure_ring_pipeline_perf_setup`.
 
    Ring-based Processing Pipeline Performance Setup
 
-
 Compiling the Application
 -------------------------
 
-#.  Go to the example directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/quota_watermark
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
+To compile the sample application see :ref:`sample_app_compilation`.
 
-        make
+The application is located in the ``quota_watermark`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/rxtx_callbacks.rst b/doc/guides/sample_app_ug/rxtx_callbacks.rst
index 8d1bb86..4feb19b 100644
--- a/doc/guides/sample_app_ug/rxtx_callbacks.rst
+++ b/doc/guides/sample_app_ug/rxtx_callbacks.rst
@@ -45,23 +45,9 @@ prior to transmission to calculate the elapsed time, in CPU cycles.
 Compiling the Application
 -------------------------
 
-To compile the application export the path to the DPDK source tree and go to
-the example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-.. code-block:: console
-
-    export RTE_SDK=/path/to/rte_sdk
-
-    cd ${RTE_SDK}/examples/rxtx_callbacks
-
-
-Set the target, for example:
-
-.. code-block:: console
-
-    export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-See the *DPDK Getting Started* Guide for possible ``RTE_TARGET`` values.
+The application is located in the ``rxtx_callbacks`` sub-directory.
 
 The callbacks feature requires that the ``CONFIG_RTE_ETHDEV_RXTX_CALLBACKS``
 setting is on in the ``config/common_`` config file that applies to the
@@ -71,13 +57,6 @@ target. This is generally on by default:
 
     CONFIG_RTE_ETHDEV_RXTX_CALLBACKS=y
 
-Build the application as follows:
-
-.. code-block:: console
-
-    make
-
-
 Running the Application
 -----------------------
 
diff --git a/doc/guides/sample_app_ug/server_node_efd.rst b/doc/guides/sample_app_ug/server_node_efd.rst
index c2a5f20..ee7d460 100644
--- a/doc/guides/sample_app_ug/server_node_efd.rst
+++ b/doc/guides/sample_app_ug/server_node_efd.rst
@@ -108,26 +108,9 @@ that this is a new flow, which is dropped.
 Compiling the Application
 -------------------------
 
-The sequence of steps used to build the application is:
-
-#.  Export the required environment variables:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-#.  Build the application executable file:
-
-    .. code-block:: console
-
-        cd ${RTE_SDK}/examples/server_node_efd/
-        make
-
-    For more details on how to build the DPDK libraries and sample
-    applications,
-    please refer to the *DPDK Getting Started Guide.*
+To compile the sample application see :ref:`sample_app_compilation`.
 
+The application is located in the ``server_node_efd`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/skeleton.rst b/doc/guides/sample_app_ug/skeleton.rst
index c39b033..4eb65af 100644
--- a/doc/guides/sample_app_ug/skeleton.rst
+++ b/doc/guides/sample_app_ug/skeleton.rst
@@ -39,33 +39,12 @@ It is intended as a demonstration of the basic components of a DPDK forwarding
 application. For more detailed implementations see the L2 and L3 forwarding
 sample applications.
 
-
 Compiling the Application
 -------------------------
 
-To compile the application export the path to the DPDK source tree and go to
-the example directory:
-
-.. code-block:: console
-
-    export RTE_SDK=/path/to/rte_sdk
-
-    cd ${RTE_SDK}/examples/skeleton
-
-Set the target, for example:
-
-.. code-block:: console
-
-    export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-See the *DPDK Getting Started* Guide for possible ``RTE_TARGET`` values.
-
-Build the application as follows:
-
-.. code-block:: console
-
-    make
+To compile the sample application see :ref:`sample_app_compilation`.
 
+The application is located in the ``skeleton`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/test_pipeline.rst b/doc/guides/sample_app_ug/test_pipeline.rst
index 95c7e0f..4aca2be 100644
--- a/doc/guides/sample_app_ug/test_pipeline.rst
+++ b/doc/guides/sample_app_ug/test_pipeline.rst
@@ -55,28 +55,12 @@ The application uses three CPU cores:
 
    Test Pipeline Application
 
-
 Compiling the Application
 -------------------------
+To compile the sample application see :ref:`sample_app_compilation`
 
-#.  Go to the app/test directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/app/test/test-pipeline
-
-#.  Set the target (a default target is used if not specified):
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-#.  Build the application:
-
-    .. code-block:: console
+The application is located in the ``$RTE_SDK/test/test-pipline`` directory.
 
-        make
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/timer.rst b/doc/guides/sample_app_ug/timer.rst
index 00b6953..e9df6f0 100644
--- a/doc/guides/sample_app_ug/timer.rst
+++ b/doc/guides/sample_app_ug/timer.rst
@@ -37,26 +37,9 @@ This application prints some messages from different lcores regularly, demonstra
 Compiling the Application
 -------------------------
 
-#.  Go to the example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/timer
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide* for possible *RTE_TARGET* values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``timer`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/vhost.rst b/doc/guides/sample_app_ug/vhost.rst
index a2a3909..0b57261 100644
--- a/doc/guides/sample_app_ug/vhost.rst
+++ b/doc/guides/sample_app_ug/vhost.rst
@@ -55,20 +55,12 @@ puts back to the same physical NIC port.
 Build
 ~~~~~
 
-Follow the *Getting Started Guide for Linux* on generic info about
-environment setup and building DPDK from source.
+To compile the sample application see :ref:`sample_app_compilation`.
 
-In this example, you need build DPDK both on the host and inside guest.
-Also, you need build this example.
-
-.. code-block:: console
-
-    export RTE_SDK=/path/to/dpdk_source
-    export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    cd ${RTE_SDK}/examples/vhost
-    make
+The application is located in the ``vhost`` sub-directory.
 
+.. note::
+   In this example, you need build DPDK both on the host and inside guest.
 
 Start the vswitch example
 ~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/doc/guides/sample_app_ug/vm_power_management.rst b/doc/guides/sample_app_ug/vm_power_management.rst
index 05c26b0..dc51476 100644
--- a/doc/guides/sample_app_ug/vm_power_management.rst
+++ b/doc/guides/sample_app_ug/vm_power_management.rst
@@ -201,9 +201,12 @@ Compiling and Running the Host Application
 Compiling
 ~~~~~~~~~
 
-#. export RTE_SDK=/path/to/rte_sdk
-#. cd ${RTE_SDK}/examples/vm_power_manager
-#. make
+Compiling the Application
+-------------------------
+
+To compile the sample application see :ref:`sample_app_compilation`.
+
+The application is located in the ``vm_power_manager`` sub-directory.
 
 Running
 ~~~~~~~
diff --git a/doc/guides/sample_app_ug/vmdq_dcb_forwarding.rst b/doc/guides/sample_app_ug/vmdq_dcb_forwarding.rst
index 70e1d19..3d2abb8 100644
--- a/doc/guides/sample_app_ug/vmdq_dcb_forwarding.rst
+++ b/doc/guides/sample_app_ug/vmdq_dcb_forwarding.rst
@@ -86,26 +86,11 @@ No command-line options are taken by this application apart from the standard EA
 Compiling the Application
 -------------------------
 
-#.  Go to the examples directory:
 
-    .. code-block:: console
 
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/vmdq_dcb
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``vmdq_dcb`` sub-directory.
 
 Running the Application
 -----------------------
-- 
2.5.5

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [dpdk-dev] [PATCH v4 2/2] doc: add new introduction to sample app guides
  2017-10-05 11:12 [dpdk-dev] [PATCH v4 1/2] doc: add generic compilation doc for all sample apps Marko Kovacevic
@ 2017-10-05 11:12 ` Marko Kovacevic
  2017-10-05 17:48   ` Mcnamara, John
  2017-10-05 17:26 ` [dpdk-dev] [PATCH v4 1/2] doc: add generic compilation doc for all sample apps Mcnamara, John
  2017-10-09 16:19 ` [dpdk-dev] [PATCH v5 " Marko Kovacevic
  2 siblings, 1 reply; 18+ messages in thread
From: Marko Kovacevic @ 2017-10-05 11:12 UTC (permalink / raw)
  To: john.mcnamara; +Cc: dev, marko.kovacevic

Add new Introduction Section into the sample app guides.

Signed-off-by: Marko Kovacevic <marko.kovacevic@intel.com>
---
 doc/guides/faq/faq.rst                             |   2 +-
 doc/guides/sample_app_ug/dist_app.rst              |   2 +
 doc/guides/sample_app_ug/exception_path.rst        |   2 +-
 doc/guides/sample_app_ug/hello_world.rst           |   2 +
 doc/guides/sample_app_ug/index.rst                 |   2 +
 doc/guides/sample_app_ug/intro.rst                 | 152 +++++++++++++++------
 doc/guides/sample_app_ug/ipsec_secgw.rst           |   2 +
 .../sample_app_ug/l2_forward_real_virtual.rst      |   2 +-
 doc/guides/sample_app_ug/l3_forward.rst            |   2 +
 doc/guides/sample_app_ug/multi_process.rst         |   2 +-
 doc/guides/sample_app_ug/ptpclient.rst             |   1 +
 doc/guides/sample_app_ug/qos_scheduler.rst         |   2 +
 doc/guides/sample_app_ug/rxtx_callbacks.rst        |   1 +
 doc/guides/sample_app_ug/server_node_efd.rst       |   2 +-
 doc/guides/sample_app_ug/skeleton.rst              |   1 +
 15 files changed, 132 insertions(+), 45 deletions(-)

diff --git a/doc/guides/faq/faq.rst b/doc/guides/faq/faq.rst
index dac8050..da9b484 100644
--- a/doc/guides/faq/faq.rst
+++ b/doc/guides/faq/faq.rst
@@ -221,7 +221,7 @@ I350 has RSS support and 8 queue pairs can be used in RSS mode. It should work w
 How can hugepage-backed memory be shared among multiple processes?
 ------------------------------------------------------------------
 
-See the Primary and Secondary examples in the :ref:`multi-process sample application <multi_process_app>`.
+See the Primary and Secondary examples in the :ref:`multi-process sample application <sample_app_multi_process_app>`.
 
 
 Why can't my application receive packets on my system with UEFI Secure Boot enabled?
diff --git a/doc/guides/sample_app_ug/dist_app.rst b/doc/guides/sample_app_ug/dist_app.rst
index 466115d..0431b97 100644
--- a/doc/guides/sample_app_ug/dist_app.rst
+++ b/doc/guides/sample_app_ug/dist_app.rst
@@ -28,6 +28,8 @@
     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+.. _sample_app_dist_app:
+
 Distributor Sample Application
 ==============================
 
diff --git a/doc/guides/sample_app_ug/exception_path.rst b/doc/guides/sample_app_ug/exception_path.rst
index 2dee8bf..40e5b5c 100644
--- a/doc/guides/sample_app_ug/exception_path.rst
+++ b/doc/guides/sample_app_ug/exception_path.rst
@@ -115,7 +115,7 @@ The following sections provide some explanation of the code.
 Initialization
 ~~~~~~~~~~~~~~
 
-Setup of the mbuf pool, driver and queues is similar to the setup done in the :ref:`l2_fwd_app_real_and_virtual`.
+Setup of the mbuf pool, driver and queues is similar to the setup done in the :ref:`sample_app_l2_fwd`.
 In addition, the TAP interfaces must also be created.
 A TAP interface is created for each lcore that is being used.
 The code for creating the TAP interface is as follows:
diff --git a/doc/guides/sample_app_ug/hello_world.rst b/doc/guides/sample_app_ug/hello_world.rst
index 8196702..8cf23a3 100644
--- a/doc/guides/sample_app_ug/hello_world.rst
+++ b/doc/guides/sample_app_ug/hello_world.rst
@@ -28,6 +28,8 @@
     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+.. _sample_app_hello_world:
+
 Hello World Sample Application
 ==============================
 
diff --git a/doc/guides/sample_app_ug/index.rst b/doc/guides/sample_app_ug/index.rst
index 4f8340a..163b468 100644
--- a/doc/guides/sample_app_ug/index.rst
+++ b/doc/guides/sample_app_ug/index.rst
@@ -1,4 +1,5 @@
 ..  BSD LICENSE
+
     Copyright(c) 2010-2015 Intel Corporation. All rights reserved.
     All rights reserved.
 
@@ -28,6 +29,7 @@
     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+
 Sample Applications User Guides
 ===============================
 
diff --git a/doc/guides/sample_app_ug/intro.rst b/doc/guides/sample_app_ug/intro.rst
index d3f261b..b276714 100644
--- a/doc/guides/sample_app_ug/intro.rst
+++ b/doc/guides/sample_app_ug/intro.rst
@@ -1,5 +1,5 @@
 ..  BSD LICENSE
-    Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
+    Copyright(c) 2010-2017 Intel Corporation. All rights reserved.
     All rights reserved.
 
     Redistribution and use in source and binary forms, with or without
@@ -28,42 +28,114 @@
     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-Introduction
-============
-
-This document describes the sample applications that are included in the Data Plane Development Kit (DPDK).
-Each chapter describes a sample application that showcases specific functionality and
-provides instructions on how to compile, run and use the sample application.
-
-Documentation Roadmap
----------------------
-
-The following is a list of DPDK documents in suggested reading order:
-
-*   **Release Notes** : Provides release-specific information, including supported features,
-    limitations, fixed issues, known issues and so on.
-    Also, provides the answers to frequently asked questions in FAQ format.
-
-*   **Getting Started Guides** : Describes how to install and
-    configure the DPDK software for your operating system;
-    designed to get users up and running quickly with the software.
-
-*   **Programmer's Guide:**  Describes:
-
-    *   The software architecture and how to use it (through examples),
-        specifically in a Linux* application (linuxapp) environment.
-
-    *   The content of the DPDK, the build system
-        (including the commands that can be used in the root DPDK Makefile to build the development kit and an application)
- 	and guidelines for porting an application.
-
-    *   Optimizations used in the software and those that should be considered for new development
-
-A glossary of terms is also provided.
-
-*   **API Reference**  : Provides detailed information about DPDK functions,
-    data structures and other programming constructs.
-
-*   **Sample Applications User Guide**  : Describes a set of sample applications.
-    Each chapter describes a sample application that showcases specific functionality and
-    provides instructions on how to compile, run and use the sample application.
+Introduction to the DPDK Sample Applications
+============================================
+
+This article describes the Data Plane Development Kit Sample Applications.
+
+The DPDK Sample Applications are small standalone applications which demonstrate
+various features of DPDK. They can be considered a cookbook of DPDK features.
+User interested in getting started with DPDK can take the applications, try out
+the features, and then extend them to fit their needs.
+
+
+The DPDK Sample Applications
+----------------------------
+
+ .. _table_:
+ .. table:: **Some of the DPDK Sample applications**
+
+    +--------------------------------------+--------------------------------------+
+    |Bonding                               | Netmap Compatibility                 |
+    +--------------------------------------+--------------------------------------+
+    |Command Line                          | Packet Ordering                      |
+    +--------------------------------------+--------------------------------------+
+    |Distributor                           | Performance Thread                   |
+    +--------------------------------------+--------------------------------------+
+    |Ethtool                               | Precision Time Protocol (PTP) Client |
+    +--------------------------------------+--------------------------------------+
+    |Exception Path                        | Quality of Service (QoS) Metering    |
+    +--------------------------------------+--------------------------------------+
+    |Hello World                           | QoS Scheduler                        |
+    +--------------------------------------+--------------------------------------+
+    |Internet Protocol (IP) Fragmentation  | Quota and Watermark                  |
+    +--------------------------------------+--------------------------------------+
+    |IP Pipeline                           | RX/TX Callbacks                      |
+    +--------------------------------------+--------------------------------------+
+    |IP Reassembly                         | Server node EFD                      |
+    +--------------------------------------+--------------------------------------+
+    |IPsec Security Gateway                | Basic Forwarding/Skeleton App        |
+    +--------------------------------------+--------------------------------------+
+    |IPv4 multicast                        | Tunnel End Point (TEP) termination   |
+    +--------------------------------------+--------------------------------------+
+    |Kernel NIC Interface                  | Timer                                |
+    +--------------------------------------+--------------------------------------+
+    |Network Layer 2 Forwarding + variants | Vhost                                |
+    +--------------------------------------+--------------------------------------+
+    |Network Layer 3 Forwarding + variants | Vhost Xen                            |
+    +--------------------------------------+--------------------------------------+
+    |Link Status Interrupt                 | VMDQ Forwarding                      |
+    +--------------------------------------+--------------------------------------+
+    |Load Balancer                         | VMDQ and DCB Forwarding              |
+    +--------------------------------------+--------------------------------------+
+    |Multi-process                         | VM Power Management                  |
+    +--------------------------------------+--------------------------------------+
+
+
+
+
+
+
+These examples range from simple to reasonable complex but most are designed to
+demonstrate one particular feature of DPDK. Some of the more interesting
+examples are highlighted below.
+
+
+* :ref:`sample_app_hello_world`: As with most introductions to a programming
+  framework a good place to start is with the Hello World application. The Hello
+  World example sets up the DPDK Environment Abstraction Layer (EAL), and prints a
+  simple "Hello World" message to each of the DPDK enabled cores. This
+  applicatioin doesn’t do any packet formatting but it is a good way to test if
+  the DPDK environment is compiled and set up properly.
+
+* :ref:`sample_app_basic_fwd`: The Basic Forwarding/Skeleton contains the
+  minimum amount of code required to enable basic packet forwarding with DPDK.
+  This will allow the user to test if their network interfaces are working with
+  DPDK.
+
+* :ref:`sample_app_l2_fwd`: The Network Layer 2 forwarding, or l2fwd
+  application does forwarding based on Ethernet MAC addresses like a simple
+  switch.
+
+* :ref:`sample_app_l3_fwd`: The Network Layer3 forwarding, or l3fwd application
+  does forwarding based on Internet Protocol, IPv4 or IPv6 like a simple router.
+
+* :ref:`sample_app_dist_app`: The Packet Distributor demonstrates how to
+  distribute packets arriving on an Rx port to different cores for processing and
+  transmission.
+
+* :ref:`sample_app_multi_process_app`: The multi-process application shows how two
+  DPDK processes can work together using queues and memory pools to share
+  information.
+
+* :ref:`sample_app_rxtx_callbck`: The RX/TX callbacks sample application is
+  apacket forwarding application that demonstrates the use of user defined
+  callbacks on received and transmitted packets. The application calculates the
+  latency of the packet between RX (packet arrival) and TX (packet transmission)
+  by adding callbacks to the RX and TX packet processing functions.
+
+* :ref:`sample_app_ipsec_secgw`: The IPSec Security Gateway application is
+  minimal example of something closer to a real world usage example. This is also
+  a good example of an application using the DPDK Cryptodev framework.
+
+* :ref:`sample_app_ptp_client`: The PTP client is another minimal implementation
+  of a real world application. In this case the application is a PTP client that
+  communicates with a PTP master clock to synchronize time on a Network Interface
+  Card (NIC) using the IEEE1588 protocol.
+
+* :ref:`sample_app_qos_scheduler`: The QoS Scheduler application demonstrates
+  the use of DPDK to provide QoS scheduling.
+
+There are many more examples shown in the following chapters. Each of the
+documented sample application show how to compile, configure and run the
+application as well as explaining the main code behind the functionality.
diff --git a/doc/guides/sample_app_ug/ipsec_secgw.rst b/doc/guides/sample_app_ug/ipsec_secgw.rst
index c6af171..8efa614 100644
--- a/doc/guides/sample_app_ug/ipsec_secgw.rst
+++ b/doc/guides/sample_app_ug/ipsec_secgw.rst
@@ -28,6 +28,8 @@
     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+.. _sample_app_ipsec_secgw:
+
 IPsec Security Gateway Sample Application
 =========================================
 
diff --git a/doc/guides/sample_app_ug/l2_forward_real_virtual.rst b/doc/guides/sample_app_ug/l2_forward_real_virtual.rst
index ba64ea2..901603e 100644
--- a/doc/guides/sample_app_ug/l2_forward_real_virtual.rst
+++ b/doc/guides/sample_app_ug/l2_forward_real_virtual.rst
@@ -28,7 +28,7 @@
     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-.. _l2_fwd_app_real_and_virtual:
+.. _sample_app_l2_fwd:
 
 L2 Forwarding Sample Application (in Real and Virtualized Environments)
 =======================================================================
diff --git a/doc/guides/sample_app_ug/l3_forward.rst b/doc/guides/sample_app_ug/l3_forward.rst
index 1eb12c4..c80bc31 100644
--- a/doc/guides/sample_app_ug/l3_forward.rst
+++ b/doc/guides/sample_app_ug/l3_forward.rst
@@ -28,6 +28,8 @@
     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+.. _sample_app_l3_fwd:
+
 L3 Forwarding Sample Application
 ================================
 
diff --git a/doc/guides/sample_app_ug/multi_process.rst b/doc/guides/sample_app_ug/multi_process.rst
index 4b6df70..51c7ef4 100644
--- a/doc/guides/sample_app_ug/multi_process.rst
+++ b/doc/guides/sample_app_ug/multi_process.rst
@@ -28,7 +28,7 @@
     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-.. _multi_process_app:
+.. _sample_app_multi_process_app:
 
 Multi-process Sample Application
 ================================
diff --git a/doc/guides/sample_app_ug/ptpclient.rst b/doc/guides/sample_app_ug/ptpclient.rst
index b456e33..9710a87 100644
--- a/doc/guides/sample_app_ug/ptpclient.rst
+++ b/doc/guides/sample_app_ug/ptpclient.rst
@@ -28,6 +28,7 @@
     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+.. _sample_app_ptp_client:
 
 PTP Client Sample Application
 =============================
diff --git a/doc/guides/sample_app_ug/qos_scheduler.rst b/doc/guides/sample_app_ug/qos_scheduler.rst
index e618e2a..79e3ff7 100644
--- a/doc/guides/sample_app_ug/qos_scheduler.rst
+++ b/doc/guides/sample_app_ug/qos_scheduler.rst
@@ -28,6 +28,8 @@
     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+.. _sample_app_qos_scheduler:
+
 QoS Scheduler Sample Application
 ================================
 
diff --git a/doc/guides/sample_app_ug/rxtx_callbacks.rst b/doc/guides/sample_app_ug/rxtx_callbacks.rst
index 4feb19b..4dc4a9f 100644
--- a/doc/guides/sample_app_ug/rxtx_callbacks.rst
+++ b/doc/guides/sample_app_ug/rxtx_callbacks.rst
@@ -28,6 +28,7 @@
     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+.. _sample_app_rxtx_callbck:
 
 RX/TX Callbacks Sample Application
 ==================================
diff --git a/doc/guides/sample_app_ug/server_node_efd.rst b/doc/guides/sample_app_ug/server_node_efd.rst
index ee7d460..facdd28 100644
--- a/doc/guides/sample_app_ug/server_node_efd.rst
+++ b/doc/guides/sample_app_ug/server_node_efd.rst
@@ -36,7 +36,7 @@ load balancer, for more information about the EFD Library please refer to the
 DPDK programmer's guide.
 
 This sample application is a variant of the
-:ref:`client-server sample application <multi_process_app>`
+:ref:`client-server sample application <sample_app_multi_process_app>`
 where a specific target node is specified for every and each flow
 (not in a round-robin fashion as the original load balancing sample application).
 
diff --git a/doc/guides/sample_app_ug/skeleton.rst b/doc/guides/sample_app_ug/skeleton.rst
index 4eb65af..66d0004 100644
--- a/doc/guides/sample_app_ug/skeleton.rst
+++ b/doc/guides/sample_app_ug/skeleton.rst
@@ -28,6 +28,7 @@
     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+.. _sample_app_basic_fwd:
 
 Basic Forwarding Sample Application
 ===================================
-- 
2.5.5

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [dpdk-dev] [PATCH v4 1/2] doc: add generic compilation doc for all sample apps
  2017-10-05 11:12 [dpdk-dev] [PATCH v4 1/2] doc: add generic compilation doc for all sample apps Marko Kovacevic
  2017-10-05 11:12 ` [dpdk-dev] [PATCH v4 2/2] doc: add new introduction to sample app guides Marko Kovacevic
@ 2017-10-05 17:26 ` Mcnamara, John
  2017-10-09 16:19 ` [dpdk-dev] [PATCH v5 " Marko Kovacevic
  2 siblings, 0 replies; 18+ messages in thread
From: Mcnamara, John @ 2017-10-05 17:26 UTC (permalink / raw)
  To: Kovacevic, Marko; +Cc: dev, Herakliusz Lipiec

> +
> +This section explains how to compile the DPDK sample applications.
> +
> +To compile all the sample applications
> +--------------------------------------
> +
> +
> +Set the path to DPDK source code if its not set:
> +
> +    .. code-block:: console
> +
> +        export RTE_SDK=/path/to/rte_sdk
> +
> +Go to DPDK source:
> +
> +    .. code-block:: console
> +
> +        cd $RTE_SDK
> +
> +Make and install DPDK:
> +
> +   .. code-block:: console
> +
> +        make config T=$RTE_TARGET
> +        make


The environmental variable $RTE_TARGET isn't defined here. I think that dropped
out of the changes from the previous version.


Reviewed-by: John McNamara <john.mcnamara@intel.com>

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [dpdk-dev] [PATCH v4 2/2] doc: add new introduction to sample app guides
  2017-10-05 11:12 ` [dpdk-dev] [PATCH v4 2/2] doc: add new introduction to sample app guides Marko Kovacevic
@ 2017-10-05 17:48   ` Mcnamara, John
  0 siblings, 0 replies; 18+ messages in thread
From: Mcnamara, John @ 2017-10-05 17:48 UTC (permalink / raw)
  To: Kovacevic, Marko; +Cc: dev



> -----Original Message-----
> From: Kovacevic, Marko
> Sent: Thursday, October 5, 2017 12:13 PM
> To: Mcnamara, John <john.mcnamara@intel.com>
> Cc: dev@dpdk.org; Kovacevic, Marko <marko.kovacevic@intel.com>
> Subject: [PATCH v4 2/2] doc: add new introduction to sample app guides
> 
> Add new Introduction Section into the sample app guides.
> 
> Signed-off-by: Marko Kovacevic <marko.kovacevic@intel.com>

Hi,

Some minor comments below.


>...

> +Introduction to the DPDK Sample Applications
> +============================================
> +
> +This article describes the Data Plane Development Kit Sample
> Applications.

This first line can be omitted.


> +
> +The DPDK Sample Applications are small standalone applications which
> +demonstrate various features of DPDK. They can be considered a cookbook
> of DPDK features.
> +User interested in getting started with DPDK can take the applications,
> +try out the features, and then extend them to fit their needs.

s/User/Users/


> +
> +
> +The DPDK Sample Applications
> +----------------------------
> +
> + .. _table_:
> + .. table:: **Some of the DPDK Sample applications**


The _table_ target should be more unique such as: _table_sample_apps


> +
> +These examples range from simple to reasonable complex but most are


s/reasonable/reasonably/

> +The Hello
> +  World example sets up the DPDK Environment Abstraction Layer (EAL),
> +and prints a
> +  simple "Hello World" message to each of the DPDK enabled cores. This
> +  applicatioin doesn’t do any packet formatting but it is a good way to


s/applicatioin/application/


Reviewed-by: John McNamara <john.mcnamara@intel.com>



^ permalink raw reply	[flat|nested] 18+ messages in thread

* [dpdk-dev] [PATCH v5 1/2] doc: add generic compilation doc for all sample apps
  2017-10-05 11:12 [dpdk-dev] [PATCH v4 1/2] doc: add generic compilation doc for all sample apps Marko Kovacevic
  2017-10-05 11:12 ` [dpdk-dev] [PATCH v4 2/2] doc: add new introduction to sample app guides Marko Kovacevic
  2017-10-05 17:26 ` [dpdk-dev] [PATCH v4 1/2] doc: add generic compilation doc for all sample apps Mcnamara, John
@ 2017-10-09 16:19 ` Marko Kovacevic
  2017-10-09 16:19   ` [dpdk-dev] [PATCH v5 2/2] doc: add new introduction to sample app guides Marko Kovacevic
                     ` (2 more replies)
  2 siblings, 3 replies; 18+ messages in thread
From: Marko Kovacevic @ 2017-10-09 16:19 UTC (permalink / raw)
  To: john.mcnamara; +Cc: dev, marko.kovacevic, Herakliusz Lipiec

From: Herakliusz Lipiec <herakliusz.lipiec@intel.com>

Moved duplicated, and occasionally outdated, doc sections from each
of the sample app guides chapters to a common chapter at the start.

This reduces the duplication in the docs and provides a single
point of reference for compiling the sample apps.

Signed-off-by: Herakliusz Lipiec <herakliusz.lipiec@intel.com>
Signed-off-by: Marko Kovacevic <marko.kovacevic@intel.com>
Reviewed-by: John McNamara <john.mcnamara@intel.com>

---

v5:
   All relevant code and comment changes made (John)


 doc/guides/sample_app_ug/cmd_line.rst              |  21 +---
 doc/guides/sample_app_ug/compiling.rst             | 123 +++++++++++++++++++++
 doc/guides/sample_app_ug/dist_app.rst              |  22 +---
 doc/guides/sample_app_ug/ethtool.rst               |  23 +---
 doc/guides/sample_app_ug/exception_path.rst        |  23 +---
 doc/guides/sample_app_ug/hello_world.rst           |  21 +---
 doc/guides/sample_app_ug/index.rst                 |   1 +
 doc/guides/sample_app_ug/ip_frag.rst               |  27 +----
 doc/guides/sample_app_ug/ip_reassembly.rst         |  22 +---
 doc/guides/sample_app_ug/ipsec_secgw.rst           |  19 +---
 doc/guides/sample_app_ug/ipv4_multicast.rst        |  33 +-----
 doc/guides/sample_app_ug/keep_alive.rst            |  22 +---
 doc/guides/sample_app_ug/kernel_nic_interface.rst  |  24 +---
 doc/guides/sample_app_ug/l2_forward_cat.rst        |  34 ++----
 doc/guides/sample_app_ug/l2_forward_crypto.rst     |  21 +---
 doc/guides/sample_app_ug/l2_forward_job_stats.rst  |  21 +---
 .../sample_app_ug/l2_forward_real_virtual.rst      |  21 +---
 doc/guides/sample_app_ug/l3_forward.rst            |  23 +---
 .../sample_app_ug/l3_forward_access_ctrl.rst       |  23 +---
 doc/guides/sample_app_ug/l3_forward_power_man.rst  |  23 +---
 doc/guides/sample_app_ug/l3_forward_virtual.rst    |  29 +----
 doc/guides/sample_app_ug/link_status_intr.rst      |  27 +----
 doc/guides/sample_app_ug/load_balancer.rst         |  19 +---
 doc/guides/sample_app_ug/multi_process.rst         |  22 +---
 doc/guides/sample_app_ug/netmap_compatibility.rst  |  25 +----
 doc/guides/sample_app_ug/packet_ordering.rst       |  23 +---
 doc/guides/sample_app_ug/performance_thread.rst    |  22 +---
 doc/guides/sample_app_ug/ptpclient.rst             |  33 ++----
 doc/guides/sample_app_ug/qos_metering.rst          |  24 +---
 doc/guides/sample_app_ug/qos_scheduler.rst         |  21 +---
 doc/guides/sample_app_ug/quota_watermark.rst       |  22 +---
 doc/guides/sample_app_ug/rxtx_callbacks.rst        |  25 +----
 doc/guides/sample_app_ug/server_node_efd.rst       |  21 +---
 doc/guides/sample_app_ug/skeleton.rst              |  25 +----
 doc/guides/sample_app_ug/test_pipeline.rst         |  20 +---
 doc/guides/sample_app_ug/timer.rst                 |  21 +---
 doc/guides/sample_app_ug/vhost.rst                 |  16 +--
 doc/guides/sample_app_ug/vm_power_management.rst   |   9 +-
 doc/guides/sample_app_ug/vmdq_dcb_forwarding.rst   |  19 +---
 39 files changed, 229 insertions(+), 741 deletions(-)
 create mode 100644 doc/guides/sample_app_ug/compiling.rst

diff --git a/doc/guides/sample_app_ug/cmd_line.rst b/doc/guides/sample_app_ug/cmd_line.rst
index 36c7971..7ea0dea 100644
--- a/doc/guides/sample_app_ug/cmd_line.rst
+++ b/doc/guides/sample_app_ug/cmd_line.rst
@@ -68,26 +68,9 @@ There are three simple commands:
 Compiling the Application
 -------------------------
 
-#.  Go to example directory:
+To compile the sample application see :ref:`sample_app_compilation`
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/cmdline
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    Refer to the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``cmd_line`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/compiling.rst b/doc/guides/sample_app_ug/compiling.rst
new file mode 100644
index 0000000..23e5f13
--- /dev/null
+++ b/doc/guides/sample_app_ug/compiling.rst
@@ -0,0 +1,123 @@
+ ..  BSD LICENSE
+     Copyright(c) 2015 Intel Corporation. All rights reserved.
+     All rights reserved.
+
+     Redistribution and use in source and binary forms, with or without
+     modification, are permitted provided that the following conditions
+     are met:
+
+     * Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+     * Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in
+     the documentation and/or other materials provided with the
+     distribution.
+     * Neither the name of Intel Corporation nor the names of its
+     contributors may be used to endorse or promote products derived
+     from this software without specific prior written permission.
+
+     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+     "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+     LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+     A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+     OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+     LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+     DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+     THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+.. _sample_app_compilation:
+
+Compiling the Sample Applications
+=================================
+
+This section explains how to compile the DPDK sample applications.
+
+To compile all the sample applications
+--------------------------------------
+
+
+Set the path to DPDK source code if its not set:
+
+    .. code-block:: console
+
+        export RTE_SDK=/path/to/rte_sdk
+
+Go to DPDK source:
+
+    .. code-block:: console
+
+        cd $RTE_SDK
+
+Build DPDK:
+
+   .. code-block:: console
+
+        make defconfig
+        make
+
+Build the sample applications:
+
+   .. code-block:: console
+
+       export RTE_TARGET=build
+       make -C examples
+
+For other possible ``RTE_TARGET`` values and additional information on
+compiling see
+:ref:`Compiling DPDK on Linux <linux_gsg_compiling_dpdk>` or
+:ref:`Compiling DPDK on FreeBSD <building_from_source>`.
+Applications are output to: ``$RTE_SDK/examples/app-dir/build`` or
+``$RTE_SDK/examples/app-dir/$RTE_TARGET``.
+
+
+In the example above the compiled application is written to the ``build`` subdirectory.
+To have the applications written to a different location,
+the ``O=/path/to/build/directory`` option may be specified in the make command.
+
+    .. code-block:: console
+
+       make O=/tmp
+
+To build the applications for debugging use the ``DEBUG`` option.
+This option adds some extra flags, disables compiler optimizations and
+sets verbose output.
+
+    .. code-block:: console
+
+       make DEBUG=1
+
+
+To compile a single application
+-------------------------------
+
+Set the path to DPDK source code:
+
+    .. code-block:: console
+
+        export RTE_SDK=/path/to/rte_sdk
+
+Go to DPDK source:
+
+    .. code-block:: console
+
+       cd $RTE_SDK
+
+Build DPDK:
+
+    .. code-block:: console
+
+        make defconfig
+        make
+
+Go to the sample application directory. Unless otherwise specified the sample
+applications are located in ``$RTE_SDK/examples/``.
+
+
+Build the application:
+
+    .. code-block:: console
+
+        make
diff --git a/doc/guides/sample_app_ug/dist_app.rst b/doc/guides/sample_app_ug/dist_app.rst
index 1cae473..466115d 100644
--- a/doc/guides/sample_app_ug/dist_app.rst
+++ b/doc/guides/sample_app_ug/dist_app.rst
@@ -53,30 +53,12 @@ generator as shown in the figure below.
 
    Performance Benchmarking Setup (Basic Environment)
 
-
 Compiling the Application
 -------------------------
 
-#.  Go to the sample application directory:
-
-    ..  code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/distributor
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    ..  code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the DPDK Getting Started Guide for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    ..  code-block:: console
+To compile the sample application see :ref:`sample_app_compilation`.
 
-        make
+The application is located in the ``distributor`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/ethtool.rst b/doc/guides/sample_app_ug/ethtool.rst
index 6779795..814d78b 100644
--- a/doc/guides/sample_app_ug/ethtool.rst
+++ b/doc/guides/sample_app_ug/ethtool.rst
@@ -40,28 +40,9 @@ is based upon a simple L2 frame reflector.
 Compiling the Application
 -------------------------
 
-To compile the application:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Go to the sample application directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/ethtool
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``ethtool`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/exception_path.rst b/doc/guides/sample_app_ug/exception_path.rst
index e505fb3..2dee8bf 100644
--- a/doc/guides/sample_app_ug/exception_path.rst
+++ b/doc/guides/sample_app_ug/exception_path.rst
@@ -58,28 +58,9 @@ To make throughput measurements, kernel bridges must be setup to forward data be
 Compiling the Application
 -------------------------
 
-#.  Go to example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/exception_path
-
-#.  Set the target (a default target will be used if not specified).
-    For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-This application is intended as a linuxapp only.
-See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``exception_path`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/hello_world.rst b/doc/guides/sample_app_ug/hello_world.rst
index f4753af..8196702 100644
--- a/doc/guides/sample_app_ug/hello_world.rst
+++ b/doc/guides/sample_app_ug/hello_world.rst
@@ -37,26 +37,9 @@ The application simply prints an "helloworld" message on every enabled lcore.
 Compiling the Application
 -------------------------
 
-#.  Go to the example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/helloworld
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started* Guide for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``helloworld`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/index.rst b/doc/guides/sample_app_ug/index.rst
index 069d4f1..4f8340a 100644
--- a/doc/guides/sample_app_ug/index.rst
+++ b/doc/guides/sample_app_ug/index.rst
@@ -36,6 +36,7 @@ Sample Applications User Guides
     :numbered:
 
     intro
+    compiling
     cmd_line
     ethtool
     exception_path
diff --git a/doc/guides/sample_app_ug/ip_frag.rst b/doc/guides/sample_app_ug/ip_frag.rst
index bd1fe2d..5686b35 100644
--- a/doc/guides/sample_app_ug/ip_frag.rst
+++ b/doc/guides/sample_app_ug/ip_frag.rst
@@ -59,31 +59,12 @@ Any unmatched packets are forwarded to the originating port.
 By default, input frame sizes up to 9.5 KB are supported.
 Before forwarding, the input IP packet is fragmented to fit into the "standard" Ethernet* v2 MTU (1500 bytes).
 
-Building the Application
-------------------------
+Compiling the Application
+-------------------------
 
-To build the application:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Go to the sample application directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/ip_fragmentation
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``ip_fragmentation`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/ip_reassembly.rst b/doc/guides/sample_app_ug/ip_reassembly.rst
index cc9e591..21d00fc 100644
--- a/doc/guides/sample_app_ug/ip_reassembly.rst
+++ b/doc/guides/sample_app_ug/ip_reassembly.rst
@@ -53,28 +53,14 @@ There are two key differences from the L2 Forwarding sample application:
 The Longest Prefix Match (LPM for IPv4, LPM6 for IPv6) table is used to store/lookup an outgoing port number, associated with that IPv4 address. Any unmatched packets are forwarded to the originating port.Compiling the Application
 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
-To compile the application:
 
-#.  Go to the sample application directory:
+Compiling the Application
+-------------------------
 
-   .. code-block:: console
+To compile the sample application see :ref:`sample_app_compilation`.
 
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/ip_reassembly
+The application is located in the ``ip_reassembly`` sub-directory.
 
-#.  Set the target (a default target is used if not specified). For example:
-
-   .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-   .. code-block:: console
-
-        make
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/ipsec_secgw.rst b/doc/guides/sample_app_ug/ipsec_secgw.rst
index b675cba..c6af171 100644
--- a/doc/guides/sample_app_ug/ipsec_secgw.rst
+++ b/doc/guides/sample_app_ug/ipsec_secgw.rst
@@ -83,27 +83,12 @@ Constraints
 *  Each SA must be handle by a unique lcore (*1 RX queue per port*).
 *  No chained mbufs.
 
-
 Compiling the Application
 -------------------------
 
-To compile the application:
-
-#. Go to the sample application directory::
-
-      export RTE_SDK=/path/to/rte_sdk
-      cd ${RTE_SDK}/examples/ipsec-secgw
-
-#. Set the target (a default target is used if not specified). For example::
-
-
-      export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-   See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#. Build the application::
+To compile the sample application see :ref:`sample_app_compilation`.
 
-       make
+The application is located in the ``rpsec-secgw`` sub-directory.
 
 #. [Optional] Build the application for debugging:
    This option adds some extra flags, disables compiler optimizations and
diff --git a/doc/guides/sample_app_ug/ipv4_multicast.rst b/doc/guides/sample_app_ug/ipv4_multicast.rst
index 49712a0..4896be3 100644
--- a/doc/guides/sample_app_ug/ipv4_multicast.rst
+++ b/doc/guides/sample_app_ug/ipv4_multicast.rst
@@ -63,37 +63,12 @@ with the mask of ports to multicast packets to.
 Also, the application does not consider the Ethernet addresses;
 it looks only at the IPv4 destination address for any given packet.
 
-Building the Application
-------------------------
+Compiling the Application
+-------------------------
 
-To compile the application:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Go to the sample application directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/ipv4_multicast
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
-
-.. note::
-
-    The compiled application is written to the build subdirectory.
-    To have the application written to a different location,
-    the O=/path/to/build/directory option may be specified in the make command.
+The application is located in the ``ipv4_multicast`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/keep_alive.rst b/doc/guides/sample_app_ug/keep_alive.rst
index fe90820..e58e40c 100644
--- a/doc/guides/sample_app_ug/keep_alive.rst
+++ b/doc/guides/sample_app_ug/keep_alive.rst
@@ -66,27 +66,9 @@ of the L2 forwarding application.
 Compiling the Application
 -------------------------
 
-To compile the application:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Go to the sample application directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk cd ${RTE_SDK}/examples/keep_alive
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``l2fwd_keep_alive`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/kernel_nic_interface.rst b/doc/guides/sample_app_ug/kernel_nic_interface.rst
index 619a7b5..c27af67 100644
--- a/doc/guides/sample_app_ug/kernel_nic_interface.rst
+++ b/doc/guides/sample_app_ug/kernel_nic_interface.rst
@@ -77,35 +77,17 @@ The packet flow through the Kernel NIC Interface application is as shown in the
 
    Kernel NIC Application Packet Flow
 
-
 Compiling the Application
 -------------------------
 
-Compile the application as follows:
-
-#.  Go to the example directory:
-
-    .. code-block:: console
+To compile the sample application see :ref:`sample_app_compilation`.
 
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/kni
+The application is located in the ``kni`` sub-directory.
 
-#.  Set the target (a default target is used if not specified)
-
-    .. note::
+.. note::
 
         This application is intended as a linuxapp only.
 
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
-
 Loading the Kernel Module
 -------------------------
 
diff --git a/doc/guides/sample_app_ug/l2_forward_cat.rst b/doc/guides/sample_app_ug/l2_forward_cat.rst
index b0c2e10..cf09b38 100644
--- a/doc/guides/sample_app_ug/l2_forward_cat.rst
+++ b/doc/guides/sample_app_ug/l2_forward_cat.rst
@@ -67,38 +67,28 @@ White paper demonstrating example use case:
 
 Compiling the Application
 -------------------------
+.. note::
 
-Requires ``libpqos`` from Intel's
-`intel-cmt-cat software package <https://github.com/01org/intel-cmt-cat>`_
-hosted on GitHub repository. For installation notes, please see ``README`` file.
+    Requires ``libpqos`` from Intel's
+    `intel-cmt-cat software package <https://github.com/01org/intel-cmt-cat>`_
+    hosted on GitHub repository. For installation notes, please see ``README`` file.
 
-GIT:
+    GIT:
 
-* https://github.com/01org/intel-cmt-cat
-
-To compile the application export the path to PQoS lib
-and the DPDK source tree and go to the example directory:
-
-.. code-block:: console
+    * https://github.com/01org/intel-cmt-cat
 
-    export PQOS_INSTALL_PATH=/path/to/libpqos
-    export RTE_SDK=/path/to/rte_sdk
 
-    cd ${RTE_SDK}/examples/l2fwd-cat
+#. To compile the application export the path to PQoS lib
+   and the DPDK source tree and go to the example directory:
 
-Set the target, for example:
+   .. code-block:: console
 
-.. code-block:: console
-
-    export RTE_TARGET=x86_64-native-linuxapp-gcc
+       export PQOS_INSTALL_PATH=/path/to/libpqos
 
-See the *DPDK Getting Started* Guide for possible ``RTE_TARGET`` values.
 
-Build the application as follows:
-
-.. code-block:: console
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    make
+The application is located in the ``l2fwd-cat`` sub-directory.
 
 
 Running the Application
diff --git a/doc/guides/sample_app_ug/l2_forward_crypto.rst b/doc/guides/sample_app_ug/l2_forward_crypto.rst
index 158f4b4..9dace20 100644
--- a/doc/guides/sample_app_ug/l2_forward_crypto.rst
+++ b/doc/guides/sample_app_ug/l2_forward_crypto.rst
@@ -55,26 +55,9 @@ Also, if MAC addresses updating is enabled, the MAC addresses are affected as fo
 Compiling the Application
 -------------------------
 
-#.  Go to the example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/l2fwd-crypto
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    *See the DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``l2fwd-crypt`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/l2_forward_job_stats.rst b/doc/guides/sample_app_ug/l2_forward_job_stats.rst
index 1029cc8..9aaf80a 100644
--- a/doc/guides/sample_app_ug/l2_forward_job_stats.rst
+++ b/doc/guides/sample_app_ug/l2_forward_job_stats.rst
@@ -97,26 +97,9 @@ in this case enabling a total of four Virtual Functions.
 Compiling the Application
 -------------------------
 
-#.  Go to the example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/l2fwd-jobstats
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    *See the DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``l2fwd-jobstats`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/l2_forward_real_virtual.rst b/doc/guides/sample_app_ug/l2_forward_real_virtual.rst
index f579c8f..ba64ea2 100644
--- a/doc/guides/sample_app_ug/l2_forward_real_virtual.rst
+++ b/doc/guides/sample_app_ug/l2_forward_real_virtual.rst
@@ -107,26 +107,9 @@ in this case enabling a total of four Virtual Functions.
 Compiling the Application
 -------------------------
 
-#.  Go to the example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/l2fwd
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    *See the DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``l2fwd`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/l3_forward.rst b/doc/guides/sample_app_ug/l3_forward.rst
index 6a6b8fb..1eb12c4 100644
--- a/doc/guides/sample_app_ug/l3_forward.rst
+++ b/doc/guides/sample_app_ug/l3_forward.rst
@@ -62,28 +62,9 @@ In the sample application, hash-based forwarding supports IPv4 and IPv6. LPM-bas
 Compiling the Application
 -------------------------
 
-To compile the application:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Go to the sample application directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/l3fwd
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``l3fwd`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/l3_forward_access_ctrl.rst b/doc/guides/sample_app_ug/l3_forward_access_ctrl.rst
index a6aa4fb..cf71a6c 100644
--- a/doc/guides/sample_app_ug/l3_forward_access_ctrl.rst
+++ b/doc/guides/sample_app_ug/l3_forward_access_ctrl.rst
@@ -252,28 +252,9 @@ Once the application starts, it transitions through three phases:
 Compiling the Application
 -------------------------
 
-To compile the application:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Go to the sample application directory:
-
-    ..  code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/l3fwd-acl
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    ..  code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK IPL Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    ..  code-block:: console
-
-        make
+The application is located in the ``l3fwd-acl`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/l3_forward_power_man.rst b/doc/guides/sample_app_ug/l3_forward_power_man.rst
index ea9c404..271ee04 100644
--- a/doc/guides/sample_app_ug/l3_forward_power_man.rst
+++ b/doc/guides/sample_app_ug/l3_forward_power_man.rst
@@ -104,28 +104,9 @@ instead of always running to the C0 state waiting for packets.
 Compiling the Application
 -------------------------
 
-To compile the application:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Go to the sample application directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/l3fwd-power
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``l3fwd-power`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/l3_forward_virtual.rst b/doc/guides/sample_app_ug/l3_forward_virtual.rst
index 5f9d894..e96f79e 100644
--- a/doc/guides/sample_app_ug/l3_forward_virtual.rst
+++ b/doc/guides/sample_app_ug/l3_forward_virtual.rst
@@ -64,34 +64,9 @@ The set of LPM rules used by the application is statically configured and loaded
 Compiling the Application
 -------------------------
 
-To compile the application:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Go to the sample application directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/l3fwd-vf
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
-
-.. note::
-
-    The compiled application is written to the build subdirectory.
-    To have the application written to a different location,
-    the O=/path/to/build/directory option may be specified in the make command.
+The application is located in the ``l3fwd-vf`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/link_status_intr.rst b/doc/guides/sample_app_ug/link_status_intr.rst
index f9af474..d073e71 100644
--- a/doc/guides/sample_app_ug/link_status_intr.rst
+++ b/doc/guides/sample_app_ug/link_status_intr.rst
@@ -55,32 +55,9 @@ and the behavior of L2 forwarding each time the link status changes.
 Compiling the Application
 -------------------------
 
-#.  Go to the example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/link_status_interrupt
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
-
-.. note::
-
-    The compiled application is written to the build subdirectory.
-    To have the application written to a different location,
-    the O=/path/to/build/directory option may be specified on the make command line.
+The application is located in the ``link_status_interrupt`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/load_balancer.rst b/doc/guides/sample_app_ug/load_balancer.rst
index e101a5f..925ba5d 100644
--- a/doc/guides/sample_app_ug/load_balancer.rst
+++ b/doc/guides/sample_app_ug/load_balancer.rst
@@ -86,24 +86,9 @@ The routing logic is LPM based, with all the worker threads sharing the same LPM
 Compiling the Application
 -------------------------
 
-The sequence of steps used to build the application is:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Export the required environment variables:
-
-    .. code-block:: console
-
-        export RTE_SDK=<Path to the DPDK installation folder>
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-#.  Build the application executable file:
-
-    .. code-block:: console
-
-        cd ${RTE_SDK}/examples/load_balancer
-        make
-
-    For more details on how to build the DPDK libraries and sample applications,
-    please refer to the *DPDK Getting Started Guide.*
+The application is located in the ``load_balancer`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/multi_process.rst b/doc/guides/sample_app_ug/multi_process.rst
index d4df2fa..4b6df70 100644
--- a/doc/guides/sample_app_ug/multi_process.rst
+++ b/doc/guides/sample_app_ug/multi_process.rst
@@ -40,31 +40,13 @@ Example Applications
 
 Building the Sample Applications
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
 The multi-process example applications are built in the same way as other sample applications,
 and as documented in the *DPDK Getting Started Guide*.
-To build all the example applications:
-
-#.  Set RTE_SDK and go to the example directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/multi_process
-
-#.  Set the target (a default target will be used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
 
-#.  Build the applications:
 
-    .. code-block:: console
+To compile the sample application see :ref:`sample_app_compilation`.
 
-        make
+The applications are located in the ``multi_process`` sub-directory.
 
 .. note::
 
diff --git a/doc/guides/sample_app_ug/netmap_compatibility.rst b/doc/guides/sample_app_ug/netmap_compatibility.rst
index 030fd98..0ff5059 100644
--- a/doc/guides/sample_app_ug/netmap_compatibility.rst
+++ b/doc/guides/sample_app_ug/netmap_compatibility.rst
@@ -121,29 +121,12 @@ The bridge application is an example largely based on the bridge example shipped
 It shows how a minimal Netmap application with minimal and straightforward source code changes can be run on top of the DPDK.
 Please refer to ``$RTE_SDK/examples/netmap_compat/bridge/bridge.c`` for an example of a ported application.
 
-Compiling the "bridge" Sample Application
------------------------------------------
+Compiling the Application
+-------------------------
 
-#.  Go to the example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/netmap_compat
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide for Linux* for possible ``RTE_TARGET`` values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``netmap_compat`` sub-directory.
 
 Running the "bridge" Sample Application
 ---------------------------------------
diff --git a/doc/guides/sample_app_ug/packet_ordering.rst b/doc/guides/sample_app_ug/packet_ordering.rst
index ef85150..3c6eb35 100644
--- a/doc/guides/sample_app_ug/packet_ordering.rst
+++ b/doc/guides/sample_app_ug/packet_ordering.rst
@@ -51,28 +51,11 @@ The application uses at least three CPU cores:
   from the reorder buffer and sends them to the NIC ports for transmission.
 
 Compiling the Application
---------------------------
+-------------------------
 
-#.  Go to the example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/helloworld
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started* Guide for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``packet_ordering`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/performance_thread.rst b/doc/guides/sample_app_ug/performance_thread.rst
index a55a624..c718ce6 100644
--- a/doc/guides/sample_app_ug/performance_thread.rst
+++ b/doc/guides/sample_app_ug/performance_thread.rst
@@ -73,28 +73,10 @@ invalid.
 
 Compiling the Application
 -------------------------
-The application is located in the sample application folder in the
-``performance-thread`` folder.
 
-#.  Go to the example applications folder
-
-    .. code-block:: console
-
-       export RTE_SDK=/path/to/rte_sdk
-       cd ${RTE_SDK}/examples/performance-thread/l3fwd-thread
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-       export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Linux Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-        make
+To compile the sample application see :ref:`sample_app_compilation`.
 
+The application is located in the `performance-thread/l3fwd-thread` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/ptpclient.rst b/doc/guides/sample_app_ug/ptpclient.rst
index d3ef1d1..b456e33 100644
--- a/doc/guides/sample_app_ug/ptpclient.rst
+++ b/doc/guides/sample_app_ug/ptpclient.rst
@@ -78,39 +78,20 @@ The adjustment for slave can be represented as:
 If the command line parameter ``-T 1`` is used the application also
 synchronizes the PTP PHC clock with the Linux kernel clock.
 
-
 Compiling the Application
 -------------------------
 
-To compile the application, export the path to the DPDK source tree and edit
-the ``config/common_linuxapp`` configuration file to enable IEEE1588:
-
-.. code-block:: console
-
-    export RTE_SDK=/path/to/rte_sdk
-
-    # Edit  common_linuxapp and set the following options:
-    CONFIG_RTE_LIBRTE_IEEE1588=y
-
-Set the target, for example:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-.. code-block:: console
-
-    export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-See the *DPDK Getting Started* Guide for possible ``RTE_TARGET`` values.
-
-Build the application as follows:
-
-.. code-block:: console
+The application is located in the ``ptpclient`` sub-directory.
 
-    # Recompile DPDK.
-    make install T=$RTE_TARGET
+.. note::
+   To compile the application edit the ``config/common_linuxapp`` configuration file to enable IEEE1588
+   and then recompile DPDK:
 
-    # Compile the application.
-    cd ${RTE_SDK}/examples/ptpclient
-    make
+   .. code-block:: console
 
+      CONFIG_RTE_LIBRTE_IEEE1588=y
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/qos_metering.rst b/doc/guides/sample_app_ug/qos_metering.rst
index e1a6ac7..c6a9d72 100644
--- a/doc/guides/sample_app_ug/qos_metering.rst
+++ b/doc/guides/sample_app_ug/qos_metering.rst
@@ -64,29 +64,9 @@ all the incoming packets are colored as green.
 Compiling the Application
 -------------------------
 
-#.  Go to the example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/qos_meter
-
-#.  Set the target
-    (a default target is used if not specified):
-
-    .. note::
-
-        This application is intended as a linuxapp only.
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``qos_meter`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/qos_scheduler.rst b/doc/guides/sample_app_ug/qos_scheduler.rst
index a6654cb..e618e2a 100644
--- a/doc/guides/sample_app_ug/qos_scheduler.rst
+++ b/doc/guides/sample_app_ug/qos_scheduler.rst
@@ -58,31 +58,14 @@ The TX thread, if present, reads from the TX ring and write the packets to the T
 Compiling the Application
 -------------------------
 
-To compile the application:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Go to the sample application directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/qos_sched
-
-#.  Set the target (a default target is used if not specified). For example:
+The application is located in the ``qos_sched`` sub-directory.
 
     .. note::
 
         This application is intended as a linuxapp only.
 
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
-
 .. note::
 
     To get statistics on the sample app using the command line interface as described in the next section,
diff --git a/doc/guides/sample_app_ug/quota_watermark.rst b/doc/guides/sample_app_ug/quota_watermark.rst
index 2c3a432..c185147 100644
--- a/doc/guides/sample_app_ug/quota_watermark.rst
+++ b/doc/guides/sample_app_ug/quota_watermark.rst
@@ -88,30 +88,12 @@ as shown in :numref:`figure_ring_pipeline_perf_setup`.
 
    Ring-based Processing Pipeline Performance Setup
 
-
 Compiling the Application
 -------------------------
 
-#.  Go to the example directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/quota_watermark
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
+To compile the sample application see :ref:`sample_app_compilation`.
 
-        make
+The application is located in the ``quota_watermark`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/rxtx_callbacks.rst b/doc/guides/sample_app_ug/rxtx_callbacks.rst
index 8d1bb86..4feb19b 100644
--- a/doc/guides/sample_app_ug/rxtx_callbacks.rst
+++ b/doc/guides/sample_app_ug/rxtx_callbacks.rst
@@ -45,23 +45,9 @@ prior to transmission to calculate the elapsed time, in CPU cycles.
 Compiling the Application
 -------------------------
 
-To compile the application export the path to the DPDK source tree and go to
-the example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-.. code-block:: console
-
-    export RTE_SDK=/path/to/rte_sdk
-
-    cd ${RTE_SDK}/examples/rxtx_callbacks
-
-
-Set the target, for example:
-
-.. code-block:: console
-
-    export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-See the *DPDK Getting Started* Guide for possible ``RTE_TARGET`` values.
+The application is located in the ``rxtx_callbacks`` sub-directory.
 
 The callbacks feature requires that the ``CONFIG_RTE_ETHDEV_RXTX_CALLBACKS``
 setting is on in the ``config/common_`` config file that applies to the
@@ -71,13 +57,6 @@ target. This is generally on by default:
 
     CONFIG_RTE_ETHDEV_RXTX_CALLBACKS=y
 
-Build the application as follows:
-
-.. code-block:: console
-
-    make
-
-
 Running the Application
 -----------------------
 
diff --git a/doc/guides/sample_app_ug/server_node_efd.rst b/doc/guides/sample_app_ug/server_node_efd.rst
index c2a5f20..ee7d460 100644
--- a/doc/guides/sample_app_ug/server_node_efd.rst
+++ b/doc/guides/sample_app_ug/server_node_efd.rst
@@ -108,26 +108,9 @@ that this is a new flow, which is dropped.
 Compiling the Application
 -------------------------
 
-The sequence of steps used to build the application is:
-
-#.  Export the required environment variables:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-#.  Build the application executable file:
-
-    .. code-block:: console
-
-        cd ${RTE_SDK}/examples/server_node_efd/
-        make
-
-    For more details on how to build the DPDK libraries and sample
-    applications,
-    please refer to the *DPDK Getting Started Guide.*
+To compile the sample application see :ref:`sample_app_compilation`.
 
+The application is located in the ``server_node_efd`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/skeleton.rst b/doc/guides/sample_app_ug/skeleton.rst
index c39b033..4eb65af 100644
--- a/doc/guides/sample_app_ug/skeleton.rst
+++ b/doc/guides/sample_app_ug/skeleton.rst
@@ -39,33 +39,12 @@ It is intended as a demonstration of the basic components of a DPDK forwarding
 application. For more detailed implementations see the L2 and L3 forwarding
 sample applications.
 
-
 Compiling the Application
 -------------------------
 
-To compile the application export the path to the DPDK source tree and go to
-the example directory:
-
-.. code-block:: console
-
-    export RTE_SDK=/path/to/rte_sdk
-
-    cd ${RTE_SDK}/examples/skeleton
-
-Set the target, for example:
-
-.. code-block:: console
-
-    export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-See the *DPDK Getting Started* Guide for possible ``RTE_TARGET`` values.
-
-Build the application as follows:
-
-.. code-block:: console
-
-    make
+To compile the sample application see :ref:`sample_app_compilation`.
 
+The application is located in the ``skeleton`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/test_pipeline.rst b/doc/guides/sample_app_ug/test_pipeline.rst
index 95c7e0f..4aca2be 100644
--- a/doc/guides/sample_app_ug/test_pipeline.rst
+++ b/doc/guides/sample_app_ug/test_pipeline.rst
@@ -55,28 +55,12 @@ The application uses three CPU cores:
 
    Test Pipeline Application
 
-
 Compiling the Application
 -------------------------
+To compile the sample application see :ref:`sample_app_compilation`
 
-#.  Go to the app/test directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/app/test/test-pipeline
-
-#.  Set the target (a default target is used if not specified):
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-#.  Build the application:
-
-    .. code-block:: console
+The application is located in the ``$RTE_SDK/test/test-pipline`` directory.
 
-        make
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/timer.rst b/doc/guides/sample_app_ug/timer.rst
index 00b6953..e9df6f0 100644
--- a/doc/guides/sample_app_ug/timer.rst
+++ b/doc/guides/sample_app_ug/timer.rst
@@ -37,26 +37,9 @@ This application prints some messages from different lcores regularly, demonstra
 Compiling the Application
 -------------------------
 
-#.  Go to the example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/timer
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide* for possible *RTE_TARGET* values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``timer`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/vhost.rst b/doc/guides/sample_app_ug/vhost.rst
index a2a3909..0b57261 100644
--- a/doc/guides/sample_app_ug/vhost.rst
+++ b/doc/guides/sample_app_ug/vhost.rst
@@ -55,20 +55,12 @@ puts back to the same physical NIC port.
 Build
 ~~~~~
 
-Follow the *Getting Started Guide for Linux* on generic info about
-environment setup and building DPDK from source.
+To compile the sample application see :ref:`sample_app_compilation`.
 
-In this example, you need build DPDK both on the host and inside guest.
-Also, you need build this example.
-
-.. code-block:: console
-
-    export RTE_SDK=/path/to/dpdk_source
-    export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    cd ${RTE_SDK}/examples/vhost
-    make
+The application is located in the ``vhost`` sub-directory.
 
+.. note::
+   In this example, you need build DPDK both on the host and inside guest.
 
 Start the vswitch example
 ~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/doc/guides/sample_app_ug/vm_power_management.rst b/doc/guides/sample_app_ug/vm_power_management.rst
index 05c26b0..dc51476 100644
--- a/doc/guides/sample_app_ug/vm_power_management.rst
+++ b/doc/guides/sample_app_ug/vm_power_management.rst
@@ -201,9 +201,12 @@ Compiling and Running the Host Application
 Compiling
 ~~~~~~~~~
 
-#. export RTE_SDK=/path/to/rte_sdk
-#. cd ${RTE_SDK}/examples/vm_power_manager
-#. make
+Compiling the Application
+-------------------------
+
+To compile the sample application see :ref:`sample_app_compilation`.
+
+The application is located in the ``vm_power_manager`` sub-directory.
 
 Running
 ~~~~~~~
diff --git a/doc/guides/sample_app_ug/vmdq_dcb_forwarding.rst b/doc/guides/sample_app_ug/vmdq_dcb_forwarding.rst
index 70e1d19..3d2abb8 100644
--- a/doc/guides/sample_app_ug/vmdq_dcb_forwarding.rst
+++ b/doc/guides/sample_app_ug/vmdq_dcb_forwarding.rst
@@ -86,26 +86,11 @@ No command-line options are taken by this application apart from the standard EA
 Compiling the Application
 -------------------------
 
-#.  Go to the examples directory:
 
-    .. code-block:: console
 
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/vmdq_dcb
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``vmdq_dcb`` sub-directory.
 
 Running the Application
 -----------------------
-- 
2.5.5

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [dpdk-dev] [PATCH v5 2/2] doc: add new introduction to sample app guides
  2017-10-09 16:19 ` [dpdk-dev] [PATCH v5 " Marko Kovacevic
@ 2017-10-09 16:19   ` Marko Kovacevic
  2017-10-09 16:50     ` Mcnamara, John
  2017-10-09 16:48   ` [dpdk-dev] [PATCH v5 1/2] doc: add generic compilation doc for all sample apps Mcnamara, John
  2017-10-11 15:51   ` [dpdk-dev] [PATCH v6 " Marko Kovacevic
  2 siblings, 1 reply; 18+ messages in thread
From: Marko Kovacevic @ 2017-10-09 16:19 UTC (permalink / raw)
  To: john.mcnamara; +Cc: dev, marko.kovacevic

Add new Introduction Section into the sample app guides.

Signed-off-by: Marko Kovacevic <marko.kovacevic@intel.com>
Reviewed-by: John McNamara <john.mcnamara@intel.com>
---

v5:
   All changes to your comments have been dealt with (John)


 doc/guides/faq/faq.rst                             |   2 +-
 doc/guides/sample_app_ug/dist_app.rst              |   2 +
 doc/guides/sample_app_ug/exception_path.rst        |   2 +-
 doc/guides/sample_app_ug/hello_world.rst           |   2 +
 doc/guides/sample_app_ug/index.rst                 |   2 +
 doc/guides/sample_app_ug/intro.rst                 | 153 +++++++++++++++------
 doc/guides/sample_app_ug/ipsec_secgw.rst           |   2 +
 .../sample_app_ug/l2_forward_real_virtual.rst      |   2 +-
 doc/guides/sample_app_ug/l3_forward.rst            |   2 +
 doc/guides/sample_app_ug/multi_process.rst         |   2 +-
 doc/guides/sample_app_ug/ptpclient.rst             |   1 +
 doc/guides/sample_app_ug/qos_scheduler.rst         |   2 +
 doc/guides/sample_app_ug/rxtx_callbacks.rst        |   1 +
 doc/guides/sample_app_ug/server_node_efd.rst       |   2 +-
 doc/guides/sample_app_ug/skeleton.rst              |   1 +
 15 files changed, 133 insertions(+), 45 deletions(-)

diff --git a/doc/guides/faq/faq.rst b/doc/guides/faq/faq.rst
index dac8050..da9b484 100644
--- a/doc/guides/faq/faq.rst
+++ b/doc/guides/faq/faq.rst
@@ -221,7 +221,7 @@ I350 has RSS support and 8 queue pairs can be used in RSS mode. It should work w
 How can hugepage-backed memory be shared among multiple processes?
 ------------------------------------------------------------------
 
-See the Primary and Secondary examples in the :ref:`multi-process sample application <multi_process_app>`.
+See the Primary and Secondary examples in the :ref:`multi-process sample application <sample_app_multi_process_app>`.
 
 
 Why can't my application receive packets on my system with UEFI Secure Boot enabled?
diff --git a/doc/guides/sample_app_ug/dist_app.rst b/doc/guides/sample_app_ug/dist_app.rst
index 466115d..0431b97 100644
--- a/doc/guides/sample_app_ug/dist_app.rst
+++ b/doc/guides/sample_app_ug/dist_app.rst
@@ -28,6 +28,8 @@
     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+.. _sample_app_dist_app:
+
 Distributor Sample Application
 ==============================
 
diff --git a/doc/guides/sample_app_ug/exception_path.rst b/doc/guides/sample_app_ug/exception_path.rst
index 2dee8bf..40e5b5c 100644
--- a/doc/guides/sample_app_ug/exception_path.rst
+++ b/doc/guides/sample_app_ug/exception_path.rst
@@ -115,7 +115,7 @@ The following sections provide some explanation of the code.
 Initialization
 ~~~~~~~~~~~~~~
 
-Setup of the mbuf pool, driver and queues is similar to the setup done in the :ref:`l2_fwd_app_real_and_virtual`.
+Setup of the mbuf pool, driver and queues is similar to the setup done in the :ref:`sample_app_l2_fwd`.
 In addition, the TAP interfaces must also be created.
 A TAP interface is created for each lcore that is being used.
 The code for creating the TAP interface is as follows:
diff --git a/doc/guides/sample_app_ug/hello_world.rst b/doc/guides/sample_app_ug/hello_world.rst
index 8196702..8cf23a3 100644
--- a/doc/guides/sample_app_ug/hello_world.rst
+++ b/doc/guides/sample_app_ug/hello_world.rst
@@ -28,6 +28,8 @@
     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+.. _sample_app_hello_world:
+
 Hello World Sample Application
 ==============================
 
diff --git a/doc/guides/sample_app_ug/index.rst b/doc/guides/sample_app_ug/index.rst
index 4f8340a..163b468 100644
--- a/doc/guides/sample_app_ug/index.rst
+++ b/doc/guides/sample_app_ug/index.rst
@@ -1,4 +1,5 @@
 ..  BSD LICENSE
+
     Copyright(c) 2010-2015 Intel Corporation. All rights reserved.
     All rights reserved.
 
@@ -28,6 +29,7 @@
     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+
 Sample Applications User Guides
 ===============================
 
diff --git a/doc/guides/sample_app_ug/intro.rst b/doc/guides/sample_app_ug/intro.rst
index d3f261b..9498d3d 100644
--- a/doc/guides/sample_app_ug/intro.rst
+++ b/doc/guides/sample_app_ug/intro.rst
@@ -1,5 +1,5 @@
 ..  BSD LICENSE
-    Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
+    Copyright(c) 2010-2017 Intel Corporation. All rights reserved.
     All rights reserved.
 
     Redistribution and use in source and binary forms, with or without
@@ -28,42 +28,115 @@
     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-Introduction
-============
-
-This document describes the sample applications that are included in the Data Plane Development Kit (DPDK).
-Each chapter describes a sample application that showcases specific functionality and
-provides instructions on how to compile, run and use the sample application.
-
-Documentation Roadmap
----------------------
-
-The following is a list of DPDK documents in suggested reading order:
-
-*   **Release Notes** : Provides release-specific information, including supported features,
-    limitations, fixed issues, known issues and so on.
-    Also, provides the answers to frequently asked questions in FAQ format.
-
-*   **Getting Started Guides** : Describes how to install and
-    configure the DPDK software for your operating system;
-    designed to get users up and running quickly with the software.
-
-*   **Programmer's Guide:**  Describes:
-
-    *   The software architecture and how to use it (through examples),
-        specifically in a Linux* application (linuxapp) environment.
-
-    *   The content of the DPDK, the build system
-        (including the commands that can be used in the root DPDK Makefile to build the development kit and an application)
- 	and guidelines for porting an application.
-
-    *   Optimizations used in the software and those that should be considered for new development
-
-A glossary of terms is also provided.
-
-*   **API Reference**  : Provides detailed information about DPDK functions,
-    data structures and other programming constructs.
-
-*   **Sample Applications User Guide**  : Describes a set of sample applications.
-    Each chapter describes a sample application that showcases specific functionality and
-    provides instructions on how to compile, run and use the sample application.
+Introduction to the DPDK Sample Applications
+============================================
+
+The DPDK Sample Applications are small standalone applications which
+demonstrate various features of DPDK. They can be considered as a cookbook of
+DPDK features.  Users interested in getting started with DPDK can take the
+applications, try out the features, and then extend them to fit their needs.
+
+
+The DPDK Sample Applications
+----------------------------
+
+Table :numref:`table_sample_apps` shows a list of some of the main sample
+applications that are available in the examples directory of DPDK:
+
+ .. _table_sample_apps:
+
+ .. table:: **Some of the DPDK Sample applications**
+
+    +---------------------------------------+--------------------------------------+
+    | Bonding                               | Netmap Compatibility                 |
+    +---------------------------------------+--------------------------------------+
+    | Command Line                          | Packet Ordering                      |
+    +---------------------------------------+--------------------------------------+
+    | Distributor                           | Performance Thread                   |
+    +---------------------------------------+--------------------------------------+
+    | Ethtool                               | Precision Time Protocol (PTP) Client |
+    +---------------------------------------+--------------------------------------+
+    | Exception Path                        | Quality of Service (QoS) Metering    |
+    +---------------------------------------+--------------------------------------+
+    | Hello World                           | QoS Scheduler                        |
+    +---------------------------------------+--------------------------------------+
+    | Internet Protocol (IP) Fragmentation  | Quota and Watermark                  |
+    +---------------------------------------+--------------------------------------+
+    | IP Pipeline                           | RX/TX Callbacks                      |
+    +---------------------------------------+--------------------------------------+
+    | IP Reassembly                         | Server node EFD                      |
+    +---------------------------------------+--------------------------------------+
+    | IPsec Security Gateway                | Basic Forwarding/Skeleton App        |
+    +---------------------------------------+--------------------------------------+
+    | IPv4 multicast                        | Tunnel End Point (TEP) termination   |
+    +---------------------------------------+--------------------------------------+
+    | Kernel NIC Interface                  | Timer                                |
+    +---------------------------------------+--------------------------------------+
+    | Network Layer 2 Forwarding + variants | Vhost                                |
+    +---------------------------------------+--------------------------------------+
+    | Network Layer 3 Forwarding + variants | Vhost Xen                            |
+    +---------------------------------------+--------------------------------------+
+    | Link Status Interrupt                 | VMDQ Forwarding                      |
+    +---------------------------------------+--------------------------------------+
+    | Load Balancer                         | VMDQ and DCB Forwarding              |
+    +---------------------------------------+--------------------------------------+
+    | Multi-process                         | VM Power Management                  |
+    +---------------------------------------+--------------------------------------+
+
+These examples range from simple to reasonably complex but most are designed
+to demonstrate one particular feature of DPDK. Some of the more interesting
+examples are highlighted below.
+
+
+* :ref:`Hello World<sample_app_hello_world>`: As with most introductions to a
+  programming framework a good place to start is with the Hello World
+  application. The Hello World example sets up the DPDK Environment Abstraction
+  Layer (EAL), and prints a simple "Hello World" message to each of the DPDK
+  enabled cores. This application doesn't do any packet forwarding but it is a
+  good way to test if the DPDK environment is compiled and set up properly.
+
+* :ref:`Basic Forwarding/Skeleton Application<sample_app_basic_fwd>`: The Basic
+  Forwarding/Skeleton contains the minimum amount of code required to enable
+  basic packet forwarding with DPDK. This allows you to test if your network
+  interfaces are working with DPDK.
+
+* :ref:`Network Layer 2 forwarding<sample_app_l2_fwd>`: The Network Layer 2
+  forwarding, or ``l2fwd`` application does forwarding based on Ethernet MAC
+  addresses like a simple switch.
+
+* :ref:`Network Layer 3 forwarding<sample_app_l3_fwd>`: The Network Layer3
+  forwarding, or ``l3fwd`` application does forwarding based on Internet
+  Protocol, IPv4 or IPv6 like a simple router.
+
+* :ref:`Packet Distributor<sample_app_dist_app>`: The Packet Distributor
+  demonstrates how to distribute packets arriving on an Rx port to different
+  cores for processing and transmission.
+
+* :ref:`Multi-Process Application<sample_app_multi_process_app>`: The
+  multi-process application shows how two DPDK processes can work together using
+  queues and memory pools to share information.
+
+* :ref:`RX/TX callbacks Application<sample_app_rxtx_callbck>`: The RX/TX
+  callbacks sample application is a packet forwarding application that
+  demonstrates the use of user defined callbacks on received and transmitted
+  packets. The application calculates the latency of a packet between RX
+  (packet arrival) and TX (packet transmission) by adding callbacks to the RX
+  and TX packet processing functions.
+
+* :ref:`IPSec Security Gateway<sample_app_ipsec_secgw>`: The IPSec Security
+  Gateway application is minimal example of something closer to a real world
+  example. This is also a good example of an application using the DPDK
+  Cryptodev framework.
+
+* :ref:`Precision Time Protocol (PTP) client<sample_app_ptp_client>`: The PTP
+  client is another minimal implementation of a real world application.
+  In this case the application is a PTP client that communicates with a PTP
+  master clock to synchronize time on a Network Interface Card (NIC) using the
+  IEEE1588 protocol.
+
+* :ref:`Quality of Service (QoS) Scheduler<sample_app_qos_scheduler>`: The QoS
+  Scheduler application demonstrates the use of DPDK to provide QoS scheduling.
+
+There are many more examples shown in the following chapters. Each of the
+documented sample applications show how to compile, configure and run the
+application as well as explaining the main functionality of the code.
diff --git a/doc/guides/sample_app_ug/ipsec_secgw.rst b/doc/guides/sample_app_ug/ipsec_secgw.rst
index c6af171..8efa614 100644
--- a/doc/guides/sample_app_ug/ipsec_secgw.rst
+++ b/doc/guides/sample_app_ug/ipsec_secgw.rst
@@ -28,6 +28,8 @@
     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+.. _sample_app_ipsec_secgw:
+
 IPsec Security Gateway Sample Application
 =========================================
 
diff --git a/doc/guides/sample_app_ug/l2_forward_real_virtual.rst b/doc/guides/sample_app_ug/l2_forward_real_virtual.rst
index ba64ea2..901603e 100644
--- a/doc/guides/sample_app_ug/l2_forward_real_virtual.rst
+++ b/doc/guides/sample_app_ug/l2_forward_real_virtual.rst
@@ -28,7 +28,7 @@
     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-.. _l2_fwd_app_real_and_virtual:
+.. _sample_app_l2_fwd:
 
 L2 Forwarding Sample Application (in Real and Virtualized Environments)
 =======================================================================
diff --git a/doc/guides/sample_app_ug/l3_forward.rst b/doc/guides/sample_app_ug/l3_forward.rst
index 1eb12c4..c80bc31 100644
--- a/doc/guides/sample_app_ug/l3_forward.rst
+++ b/doc/guides/sample_app_ug/l3_forward.rst
@@ -28,6 +28,8 @@
     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+.. _sample_app_l3_fwd:
+
 L3 Forwarding Sample Application
 ================================
 
diff --git a/doc/guides/sample_app_ug/multi_process.rst b/doc/guides/sample_app_ug/multi_process.rst
index 4b6df70..51c7ef4 100644
--- a/doc/guides/sample_app_ug/multi_process.rst
+++ b/doc/guides/sample_app_ug/multi_process.rst
@@ -28,7 +28,7 @@
     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-.. _multi_process_app:
+.. _sample_app_multi_process_app:
 
 Multi-process Sample Application
 ================================
diff --git a/doc/guides/sample_app_ug/ptpclient.rst b/doc/guides/sample_app_ug/ptpclient.rst
index b456e33..9710a87 100644
--- a/doc/guides/sample_app_ug/ptpclient.rst
+++ b/doc/guides/sample_app_ug/ptpclient.rst
@@ -28,6 +28,7 @@
     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+.. _sample_app_ptp_client:
 
 PTP Client Sample Application
 =============================
diff --git a/doc/guides/sample_app_ug/qos_scheduler.rst b/doc/guides/sample_app_ug/qos_scheduler.rst
index e618e2a..79e3ff7 100644
--- a/doc/guides/sample_app_ug/qos_scheduler.rst
+++ b/doc/guides/sample_app_ug/qos_scheduler.rst
@@ -28,6 +28,8 @@
     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+.. _sample_app_qos_scheduler:
+
 QoS Scheduler Sample Application
 ================================
 
diff --git a/doc/guides/sample_app_ug/rxtx_callbacks.rst b/doc/guides/sample_app_ug/rxtx_callbacks.rst
index 4feb19b..4dc4a9f 100644
--- a/doc/guides/sample_app_ug/rxtx_callbacks.rst
+++ b/doc/guides/sample_app_ug/rxtx_callbacks.rst
@@ -28,6 +28,7 @@
     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+.. _sample_app_rxtx_callbck:
 
 RX/TX Callbacks Sample Application
 ==================================
diff --git a/doc/guides/sample_app_ug/server_node_efd.rst b/doc/guides/sample_app_ug/server_node_efd.rst
index ee7d460..facdd28 100644
--- a/doc/guides/sample_app_ug/server_node_efd.rst
+++ b/doc/guides/sample_app_ug/server_node_efd.rst
@@ -36,7 +36,7 @@ load balancer, for more information about the EFD Library please refer to the
 DPDK programmer's guide.
 
 This sample application is a variant of the
-:ref:`client-server sample application <multi_process_app>`
+:ref:`client-server sample application <sample_app_multi_process_app>`
 where a specific target node is specified for every and each flow
 (not in a round-robin fashion as the original load balancing sample application).
 
diff --git a/doc/guides/sample_app_ug/skeleton.rst b/doc/guides/sample_app_ug/skeleton.rst
index 4eb65af..66d0004 100644
--- a/doc/guides/sample_app_ug/skeleton.rst
+++ b/doc/guides/sample_app_ug/skeleton.rst
@@ -28,6 +28,7 @@
     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+.. _sample_app_basic_fwd:
 
 Basic Forwarding Sample Application
 ===================================
-- 
2.5.5

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [dpdk-dev] [PATCH v5 1/2] doc: add generic compilation doc for all sample apps
  2017-10-09 16:19 ` [dpdk-dev] [PATCH v5 " Marko Kovacevic
  2017-10-09 16:19   ` [dpdk-dev] [PATCH v5 2/2] doc: add new introduction to sample app guides Marko Kovacevic
@ 2017-10-09 16:48   ` Mcnamara, John
  2017-10-11 15:51   ` [dpdk-dev] [PATCH v6 " Marko Kovacevic
  2 siblings, 0 replies; 18+ messages in thread
From: Mcnamara, John @ 2017-10-09 16:48 UTC (permalink / raw)
  To: Kovacevic, Marko; +Cc: dev, Herakliusz Lipiec



> -----Original Message-----
> From: Kovacevic, Marko
> Sent: Monday, October 9, 2017 5:19 PM
> To: Mcnamara, John <john.mcnamara@intel.com>
> Cc: dev@dpdk.org; Kovacevic, Marko <marko.kovacevic@intel.com>; Herakliusz
> Lipiec <herakliusz.lipiec@intel.com>
> Subject: [PATCH v5 1/2] doc: add generic compilation doc for all sample
> apps
> 
> From: Herakliusz Lipiec <herakliusz.lipiec@intel.com>
> 
> Moved duplicated, and occasionally outdated, doc sections from each of the
> sample app guides chapters to a common chapter at the start.
> 
> This reduces the duplication in the docs and provides a single point of
> reference for compiling the sample apps.
> 
> Signed-off-by: Herakliusz Lipiec <herakliusz.lipiec@intel.com>
> Signed-off-by: Marko Kovacevic <marko.kovacevic@intel.com>
> Reviewed-by: John McNamara <john.mcnamara@intel.com>


I think there was is a line or two missing in the "single application" instructions.

Also, since the original patch there are 2 new sample applications that should
be fixed as well:

* vhost_scsi
* eventdev_pipeline_sw_pmd

Also, the tep_termination doc could be updated.

John

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [dpdk-dev] [PATCH v5 2/2] doc: add new introduction to sample app guides
  2017-10-09 16:19   ` [dpdk-dev] [PATCH v5 2/2] doc: add new introduction to sample app guides Marko Kovacevic
@ 2017-10-09 16:50     ` Mcnamara, John
  0 siblings, 0 replies; 18+ messages in thread
From: Mcnamara, John @ 2017-10-09 16:50 UTC (permalink / raw)
  To: Kovacevic, Marko; +Cc: dev



> -----Original Message-----
> From: Kovacevic, Marko
> Sent: Monday, October 9, 2017 5:19 PM
> To: Mcnamara, John <john.mcnamara@intel.com>
> Cc: dev@dpdk.org; Kovacevic, Marko <marko.kovacevic@intel.com>
> Subject: [PATCH v5 2/2] doc: add new introduction to sample app guides
> 
> Add new Introduction Section into the sample app guides.
> 
> Signed-off-by: Marko Kovacevic <marko.kovacevic@intel.com>
> Reviewed-by: John McNamara <john.mcnamara@intel.com>

Acked-by: John McNamara <john.mcnamara@intel.com>

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [dpdk-dev] [PATCH v6 1/2] doc: add generic compilation doc for all sample apps
  2017-10-09 16:19 ` [dpdk-dev] [PATCH v5 " Marko Kovacevic
  2017-10-09 16:19   ` [dpdk-dev] [PATCH v5 2/2] doc: add new introduction to sample app guides Marko Kovacevic
  2017-10-09 16:48   ` [dpdk-dev] [PATCH v5 1/2] doc: add generic compilation doc for all sample apps Mcnamara, John
@ 2017-10-11 15:51   ` Marko Kovacevic
  2017-10-11 15:51     ` [dpdk-dev] [PATCH v6 2/2] doc: add new introduction to sample app guides Marko Kovacevic
  2017-10-12 10:55     ` [dpdk-dev] [PATCH v6 1/2] doc: add generic compilation doc for all sample apps Mcnamara, John
  2 siblings, 2 replies; 18+ messages in thread
From: Marko Kovacevic @ 2017-10-11 15:51 UTC (permalink / raw)
  To: john.mcnamara; +Cc: dev, marko.kovacevic, Herakliusz Lipiec

From: Herakliusz Lipiec <herakliusz.lipiec@intel.com>

Moved duplicated, and occasionally outdated, doc sections from each
of the sample app guides chapters to a common chapter at the start.

This reduces the duplication in the docs and provides a single
point of reference for compiling the sample apps.

Signed-off-by: Herakliusz Lipiec <herakliusz.lipiec@intel.com>
Signed-off-by: Marko Kovacevic <marko.kovacevic@intel.com>
Reviewed-by: John McNamara <john.mcnamara@intel.com>
---

v6:
   All revelant files updated, changed and fixed (John)


 doc/guides/sample_app_ug/cmd_line.rst              |  21 +---
 doc/guides/sample_app_ug/compiling.rst             | 124 +++++++++++++++++++++
 doc/guides/sample_app_ug/dist_app.rst              |  22 +---
 doc/guides/sample_app_ug/ethtool.rst               |  23 +---
 .../sample_app_ug/eventdev_pipeline_sw_pmd.rst     |  21 +---
 doc/guides/sample_app_ug/exception_path.rst        |  23 +---
 doc/guides/sample_app_ug/hello_world.rst           |  21 +---
 doc/guides/sample_app_ug/index.rst                 |   1 +
 doc/guides/sample_app_ug/ip_frag.rst               |  27 +----
 doc/guides/sample_app_ug/ip_reassembly.rst         |  22 +---
 doc/guides/sample_app_ug/ipsec_secgw.rst           |  19 +---
 doc/guides/sample_app_ug/ipv4_multicast.rst        |  33 +-----
 doc/guides/sample_app_ug/keep_alive.rst            |  22 +---
 doc/guides/sample_app_ug/kernel_nic_interface.rst  |  24 +---
 doc/guides/sample_app_ug/l2_forward_cat.rst        |  34 ++----
 doc/guides/sample_app_ug/l2_forward_crypto.rst     |  21 +---
 doc/guides/sample_app_ug/l2_forward_job_stats.rst  |  21 +---
 .../sample_app_ug/l2_forward_real_virtual.rst      |  21 +---
 doc/guides/sample_app_ug/l3_forward.rst            |  23 +---
 .../sample_app_ug/l3_forward_access_ctrl.rst       |  23 +---
 doc/guides/sample_app_ug/l3_forward_power_man.rst  |  23 +---
 doc/guides/sample_app_ug/l3_forward_virtual.rst    |  29 +----
 doc/guides/sample_app_ug/link_status_intr.rst      |  27 +----
 doc/guides/sample_app_ug/load_balancer.rst         |  19 +---
 doc/guides/sample_app_ug/multi_process.rst         |  22 +---
 doc/guides/sample_app_ug/netmap_compatibility.rst  |  25 +----
 doc/guides/sample_app_ug/packet_ordering.rst       |  23 +---
 doc/guides/sample_app_ug/performance_thread.rst    |  22 +---
 doc/guides/sample_app_ug/ptpclient.rst             |  33 ++----
 doc/guides/sample_app_ug/qos_metering.rst          |  24 +---
 doc/guides/sample_app_ug/qos_scheduler.rst         |  21 +---
 doc/guides/sample_app_ug/quota_watermark.rst       |  22 +---
 doc/guides/sample_app_ug/rxtx_callbacks.rst        |  25 +----
 doc/guides/sample_app_ug/server_node_efd.rst       |  21 +---
 doc/guides/sample_app_ug/skeleton.rst              |  25 +----
 doc/guides/sample_app_ug/tep_termination.rst       |  31 +-----
 doc/guides/sample_app_ug/test_pipeline.rst         |  20 +---
 doc/guides/sample_app_ug/timer.rst                 |  21 +---
 doc/guides/sample_app_ug/vhost.rst                 |  16 +--
 doc/guides/sample_app_ug/vhost_scsi.rst            |  19 +---
 doc/guides/sample_app_ug/vm_power_management.rst   |   9 +-
 doc/guides/sample_app_ug/vmdq_dcb_forwarding.rst   |  19 +---
 42 files changed, 241 insertions(+), 801 deletions(-)
 create mode 100644 doc/guides/sample_app_ug/compiling.rst

diff --git a/doc/guides/sample_app_ug/cmd_line.rst b/doc/guides/sample_app_ug/cmd_line.rst
index 36c7971..7ea0dea 100644
--- a/doc/guides/sample_app_ug/cmd_line.rst
+++ b/doc/guides/sample_app_ug/cmd_line.rst
@@ -68,26 +68,9 @@ There are three simple commands:
 Compiling the Application
 -------------------------
 
-#.  Go to example directory:
+To compile the sample application see :ref:`sample_app_compilation`
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/cmdline
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    Refer to the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``cmd_line`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/compiling.rst b/doc/guides/sample_app_ug/compiling.rst
new file mode 100644
index 0000000..882432f
--- /dev/null
+++ b/doc/guides/sample_app_ug/compiling.rst
@@ -0,0 +1,124 @@
+ ..  BSD LICENSE
+     Copyright(c) 2015 Intel Corporation. All rights reserved.
+     All rights reserved.
+
+     Redistribution and use in source and binary forms, with or without
+     modification, are permitted provided that the following conditions
+     are met:
+
+     * Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+     * Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in
+     the documentation and/or other materials provided with the
+     distribution.
+     * Neither the name of Intel Corporation nor the names of its
+     contributors may be used to endorse or promote products derived
+     from this software without specific prior written permission.
+
+     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+     "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+     LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+     A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+     OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+     LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+     DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+     THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+.. _sample_app_compilation:
+
+Compiling the Sample Applications
+=================================
+
+This section explains how to compile the DPDK sample applications.
+
+To compile all the sample applications
+--------------------------------------
+
+
+Set the path to DPDK source code if its not set:
+
+    .. code-block:: console
+
+        export RTE_SDK=/path/to/rte_sdk
+
+Go to DPDK source:
+
+    .. code-block:: console
+
+        cd $RTE_SDK
+
+Build DPDK:
+
+   .. code-block:: console
+
+        make defconfig
+        make
+
+Build the sample applications:
+
+   .. code-block:: console
+
+       export RTE_TARGET=build
+       make -C examples
+
+For other possible ``RTE_TARGET`` values and additional information on
+compiling see
+:ref:`Compiling DPDK on Linux <linux_gsg_compiling_dpdk>` or
+:ref:`Compiling DPDK on FreeBSD <building_from_source>`.
+Applications are output to: ``$RTE_SDK/examples/app-dir/build`` or
+``$RTE_SDK/examples/app-dir/$RTE_TARGET``.
+
+
+In the example above the compiled application is written to the ``build`` subdirectory.
+To have the applications written to a different location,
+the ``O=/path/to/build/directory`` option may be specified in the make command.
+
+    .. code-block:: console
+
+       make O=/tmp
+
+To build the applications for debugging use the ``DEBUG`` option.
+This option adds some extra flags, disables compiler optimizations and
+sets verbose output.
+
+    .. code-block:: console
+
+       make DEBUG=1
+
+
+To compile a single application
+-------------------------------
+
+Set the path to DPDK source code:
+
+    .. code-block:: console
+
+        export RTE_SDK=/path/to/rte_sdk
+
+Go to DPDK source:
+
+    .. code-block:: console
+
+       cd $RTE_SDK
+
+Build DPDK:
+
+    .. code-block:: console
+
+        make defconfig
+        make
+
+Go to the sample application directory. Unless otherwise specified the sample
+applications are located in ``$RTE_SDK/examples/``.
+
+
+Build the application:
+
+    .. code-block:: console
+
+        export RTE_TARGET=build
+        make
diff --git a/doc/guides/sample_app_ug/dist_app.rst b/doc/guides/sample_app_ug/dist_app.rst
index 1cae473..466115d 100644
--- a/doc/guides/sample_app_ug/dist_app.rst
+++ b/doc/guides/sample_app_ug/dist_app.rst
@@ -53,30 +53,12 @@ generator as shown in the figure below.
 
    Performance Benchmarking Setup (Basic Environment)
 
-
 Compiling the Application
 -------------------------
 
-#.  Go to the sample application directory:
-
-    ..  code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/distributor
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    ..  code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the DPDK Getting Started Guide for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    ..  code-block:: console
+To compile the sample application see :ref:`sample_app_compilation`.
 
-        make
+The application is located in the ``distributor`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/ethtool.rst b/doc/guides/sample_app_ug/ethtool.rst
index 6779795..814d78b 100644
--- a/doc/guides/sample_app_ug/ethtool.rst
+++ b/doc/guides/sample_app_ug/ethtool.rst
@@ -40,28 +40,9 @@ is based upon a simple L2 frame reflector.
 Compiling the Application
 -------------------------
 
-To compile the application:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Go to the sample application directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/ethtool
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``ethtool`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/eventdev_pipeline_sw_pmd.rst b/doc/guides/sample_app_ug/eventdev_pipeline_sw_pmd.rst
index b1b18dd..c793886 100644
--- a/doc/guides/sample_app_ug/eventdev_pipeline_sw_pmd.rst
+++ b/doc/guides/sample_app_ug/eventdev_pipeline_sw_pmd.rst
@@ -46,28 +46,11 @@ a particular pipeline configuration.
 Compiling the Application
 -------------------------
 
-To compile the application:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Go to the sample application directory:
+The application is located in the ``examples`` sub-directory.
 
-    .. code-block:: console
 
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/eventdev_pipeline_sw_pmd
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/exception_path.rst b/doc/guides/sample_app_ug/exception_path.rst
index e505fb3..2dee8bf 100644
--- a/doc/guides/sample_app_ug/exception_path.rst
+++ b/doc/guides/sample_app_ug/exception_path.rst
@@ -58,28 +58,9 @@ To make throughput measurements, kernel bridges must be setup to forward data be
 Compiling the Application
 -------------------------
 
-#.  Go to example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/exception_path
-
-#.  Set the target (a default target will be used if not specified).
-    For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-This application is intended as a linuxapp only.
-See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``exception_path`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/hello_world.rst b/doc/guides/sample_app_ug/hello_world.rst
index f4753af..8196702 100644
--- a/doc/guides/sample_app_ug/hello_world.rst
+++ b/doc/guides/sample_app_ug/hello_world.rst
@@ -37,26 +37,9 @@ The application simply prints an "helloworld" message on every enabled lcore.
 Compiling the Application
 -------------------------
 
-#.  Go to the example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/helloworld
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started* Guide for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``helloworld`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/index.rst b/doc/guides/sample_app_ug/index.rst
index 069d4f1..4f8340a 100644
--- a/doc/guides/sample_app_ug/index.rst
+++ b/doc/guides/sample_app_ug/index.rst
@@ -36,6 +36,7 @@ Sample Applications User Guides
     :numbered:
 
     intro
+    compiling
     cmd_line
     ethtool
     exception_path
diff --git a/doc/guides/sample_app_ug/ip_frag.rst b/doc/guides/sample_app_ug/ip_frag.rst
index bd1fe2d..5686b35 100644
--- a/doc/guides/sample_app_ug/ip_frag.rst
+++ b/doc/guides/sample_app_ug/ip_frag.rst
@@ -59,31 +59,12 @@ Any unmatched packets are forwarded to the originating port.
 By default, input frame sizes up to 9.5 KB are supported.
 Before forwarding, the input IP packet is fragmented to fit into the "standard" Ethernet* v2 MTU (1500 bytes).
 
-Building the Application
-------------------------
+Compiling the Application
+-------------------------
 
-To build the application:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Go to the sample application directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/ip_fragmentation
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``ip_fragmentation`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/ip_reassembly.rst b/doc/guides/sample_app_ug/ip_reassembly.rst
index cc9e591..21d00fc 100644
--- a/doc/guides/sample_app_ug/ip_reassembly.rst
+++ b/doc/guides/sample_app_ug/ip_reassembly.rst
@@ -53,28 +53,14 @@ There are two key differences from the L2 Forwarding sample application:
 The Longest Prefix Match (LPM for IPv4, LPM6 for IPv6) table is used to store/lookup an outgoing port number, associated with that IPv4 address. Any unmatched packets are forwarded to the originating port.Compiling the Application
 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
-To compile the application:
 
-#.  Go to the sample application directory:
+Compiling the Application
+-------------------------
 
-   .. code-block:: console
+To compile the sample application see :ref:`sample_app_compilation`.
 
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/ip_reassembly
+The application is located in the ``ip_reassembly`` sub-directory.
 
-#.  Set the target (a default target is used if not specified). For example:
-
-   .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-   .. code-block:: console
-
-        make
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/ipsec_secgw.rst b/doc/guides/sample_app_ug/ipsec_secgw.rst
index b675cba..c6af171 100644
--- a/doc/guides/sample_app_ug/ipsec_secgw.rst
+++ b/doc/guides/sample_app_ug/ipsec_secgw.rst
@@ -83,27 +83,12 @@ Constraints
 *  Each SA must be handle by a unique lcore (*1 RX queue per port*).
 *  No chained mbufs.
 
-
 Compiling the Application
 -------------------------
 
-To compile the application:
-
-#. Go to the sample application directory::
-
-      export RTE_SDK=/path/to/rte_sdk
-      cd ${RTE_SDK}/examples/ipsec-secgw
-
-#. Set the target (a default target is used if not specified). For example::
-
-
-      export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-   See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#. Build the application::
+To compile the sample application see :ref:`sample_app_compilation`.
 
-       make
+The application is located in the ``rpsec-secgw`` sub-directory.
 
 #. [Optional] Build the application for debugging:
    This option adds some extra flags, disables compiler optimizations and
diff --git a/doc/guides/sample_app_ug/ipv4_multicast.rst b/doc/guides/sample_app_ug/ipv4_multicast.rst
index 49712a0..4896be3 100644
--- a/doc/guides/sample_app_ug/ipv4_multicast.rst
+++ b/doc/guides/sample_app_ug/ipv4_multicast.rst
@@ -63,37 +63,12 @@ with the mask of ports to multicast packets to.
 Also, the application does not consider the Ethernet addresses;
 it looks only at the IPv4 destination address for any given packet.
 
-Building the Application
-------------------------
+Compiling the Application
+-------------------------
 
-To compile the application:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Go to the sample application directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/ipv4_multicast
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
-
-.. note::
-
-    The compiled application is written to the build subdirectory.
-    To have the application written to a different location,
-    the O=/path/to/build/directory option may be specified in the make command.
+The application is located in the ``ipv4_multicast`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/keep_alive.rst b/doc/guides/sample_app_ug/keep_alive.rst
index fe90820..e58e40c 100644
--- a/doc/guides/sample_app_ug/keep_alive.rst
+++ b/doc/guides/sample_app_ug/keep_alive.rst
@@ -66,27 +66,9 @@ of the L2 forwarding application.
 Compiling the Application
 -------------------------
 
-To compile the application:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Go to the sample application directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk cd ${RTE_SDK}/examples/keep_alive
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``l2fwd_keep_alive`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/kernel_nic_interface.rst b/doc/guides/sample_app_ug/kernel_nic_interface.rst
index 619a7b5..c27af67 100644
--- a/doc/guides/sample_app_ug/kernel_nic_interface.rst
+++ b/doc/guides/sample_app_ug/kernel_nic_interface.rst
@@ -77,35 +77,17 @@ The packet flow through the Kernel NIC Interface application is as shown in the
 
    Kernel NIC Application Packet Flow
 
-
 Compiling the Application
 -------------------------
 
-Compile the application as follows:
-
-#.  Go to the example directory:
-
-    .. code-block:: console
+To compile the sample application see :ref:`sample_app_compilation`.
 
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/kni
+The application is located in the ``kni`` sub-directory.
 
-#.  Set the target (a default target is used if not specified)
-
-    .. note::
+.. note::
 
         This application is intended as a linuxapp only.
 
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
-
 Loading the Kernel Module
 -------------------------
 
diff --git a/doc/guides/sample_app_ug/l2_forward_cat.rst b/doc/guides/sample_app_ug/l2_forward_cat.rst
index b0c2e10..cf09b38 100644
--- a/doc/guides/sample_app_ug/l2_forward_cat.rst
+++ b/doc/guides/sample_app_ug/l2_forward_cat.rst
@@ -67,38 +67,28 @@ White paper demonstrating example use case:
 
 Compiling the Application
 -------------------------
+.. note::
 
-Requires ``libpqos`` from Intel's
-`intel-cmt-cat software package <https://github.com/01org/intel-cmt-cat>`_
-hosted on GitHub repository. For installation notes, please see ``README`` file.
+    Requires ``libpqos`` from Intel's
+    `intel-cmt-cat software package <https://github.com/01org/intel-cmt-cat>`_
+    hosted on GitHub repository. For installation notes, please see ``README`` file.
 
-GIT:
+    GIT:
 
-* https://github.com/01org/intel-cmt-cat
-
-To compile the application export the path to PQoS lib
-and the DPDK source tree and go to the example directory:
-
-.. code-block:: console
+    * https://github.com/01org/intel-cmt-cat
 
-    export PQOS_INSTALL_PATH=/path/to/libpqos
-    export RTE_SDK=/path/to/rte_sdk
 
-    cd ${RTE_SDK}/examples/l2fwd-cat
+#. To compile the application export the path to PQoS lib
+   and the DPDK source tree and go to the example directory:
 
-Set the target, for example:
+   .. code-block:: console
 
-.. code-block:: console
-
-    export RTE_TARGET=x86_64-native-linuxapp-gcc
+       export PQOS_INSTALL_PATH=/path/to/libpqos
 
-See the *DPDK Getting Started* Guide for possible ``RTE_TARGET`` values.
 
-Build the application as follows:
-
-.. code-block:: console
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    make
+The application is located in the ``l2fwd-cat`` sub-directory.
 
 
 Running the Application
diff --git a/doc/guides/sample_app_ug/l2_forward_crypto.rst b/doc/guides/sample_app_ug/l2_forward_crypto.rst
index 158f4b4..9dace20 100644
--- a/doc/guides/sample_app_ug/l2_forward_crypto.rst
+++ b/doc/guides/sample_app_ug/l2_forward_crypto.rst
@@ -55,26 +55,9 @@ Also, if MAC addresses updating is enabled, the MAC addresses are affected as fo
 Compiling the Application
 -------------------------
 
-#.  Go to the example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/l2fwd-crypto
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    *See the DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``l2fwd-crypt`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/l2_forward_job_stats.rst b/doc/guides/sample_app_ug/l2_forward_job_stats.rst
index 1029cc8..9aaf80a 100644
--- a/doc/guides/sample_app_ug/l2_forward_job_stats.rst
+++ b/doc/guides/sample_app_ug/l2_forward_job_stats.rst
@@ -97,26 +97,9 @@ in this case enabling a total of four Virtual Functions.
 Compiling the Application
 -------------------------
 
-#.  Go to the example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/l2fwd-jobstats
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    *See the DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``l2fwd-jobstats`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/l2_forward_real_virtual.rst b/doc/guides/sample_app_ug/l2_forward_real_virtual.rst
index f579c8f..ba64ea2 100644
--- a/doc/guides/sample_app_ug/l2_forward_real_virtual.rst
+++ b/doc/guides/sample_app_ug/l2_forward_real_virtual.rst
@@ -107,26 +107,9 @@ in this case enabling a total of four Virtual Functions.
 Compiling the Application
 -------------------------
 
-#.  Go to the example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/l2fwd
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    *See the DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``l2fwd`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/l3_forward.rst b/doc/guides/sample_app_ug/l3_forward.rst
index 6a6b8fb..1eb12c4 100644
--- a/doc/guides/sample_app_ug/l3_forward.rst
+++ b/doc/guides/sample_app_ug/l3_forward.rst
@@ -62,28 +62,9 @@ In the sample application, hash-based forwarding supports IPv4 and IPv6. LPM-bas
 Compiling the Application
 -------------------------
 
-To compile the application:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Go to the sample application directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/l3fwd
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``l3fwd`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/l3_forward_access_ctrl.rst b/doc/guides/sample_app_ug/l3_forward_access_ctrl.rst
index a6aa4fb..cf71a6c 100644
--- a/doc/guides/sample_app_ug/l3_forward_access_ctrl.rst
+++ b/doc/guides/sample_app_ug/l3_forward_access_ctrl.rst
@@ -252,28 +252,9 @@ Once the application starts, it transitions through three phases:
 Compiling the Application
 -------------------------
 
-To compile the application:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Go to the sample application directory:
-
-    ..  code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/l3fwd-acl
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    ..  code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK IPL Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    ..  code-block:: console
-
-        make
+The application is located in the ``l3fwd-acl`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/l3_forward_power_man.rst b/doc/guides/sample_app_ug/l3_forward_power_man.rst
index ea9c404..271ee04 100644
--- a/doc/guides/sample_app_ug/l3_forward_power_man.rst
+++ b/doc/guides/sample_app_ug/l3_forward_power_man.rst
@@ -104,28 +104,9 @@ instead of always running to the C0 state waiting for packets.
 Compiling the Application
 -------------------------
 
-To compile the application:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Go to the sample application directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/l3fwd-power
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``l3fwd-power`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/l3_forward_virtual.rst b/doc/guides/sample_app_ug/l3_forward_virtual.rst
index 5f9d894..e96f79e 100644
--- a/doc/guides/sample_app_ug/l3_forward_virtual.rst
+++ b/doc/guides/sample_app_ug/l3_forward_virtual.rst
@@ -64,34 +64,9 @@ The set of LPM rules used by the application is statically configured and loaded
 Compiling the Application
 -------------------------
 
-To compile the application:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Go to the sample application directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/l3fwd-vf
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
-
-.. note::
-
-    The compiled application is written to the build subdirectory.
-    To have the application written to a different location,
-    the O=/path/to/build/directory option may be specified in the make command.
+The application is located in the ``l3fwd-vf`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/link_status_intr.rst b/doc/guides/sample_app_ug/link_status_intr.rst
index f9af474..d073e71 100644
--- a/doc/guides/sample_app_ug/link_status_intr.rst
+++ b/doc/guides/sample_app_ug/link_status_intr.rst
@@ -55,32 +55,9 @@ and the behavior of L2 forwarding each time the link status changes.
 Compiling the Application
 -------------------------
 
-#.  Go to the example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/link_status_interrupt
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
-
-.. note::
-
-    The compiled application is written to the build subdirectory.
-    To have the application written to a different location,
-    the O=/path/to/build/directory option may be specified on the make command line.
+The application is located in the ``link_status_interrupt`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/load_balancer.rst b/doc/guides/sample_app_ug/load_balancer.rst
index e101a5f..925ba5d 100644
--- a/doc/guides/sample_app_ug/load_balancer.rst
+++ b/doc/guides/sample_app_ug/load_balancer.rst
@@ -86,24 +86,9 @@ The routing logic is LPM based, with all the worker threads sharing the same LPM
 Compiling the Application
 -------------------------
 
-The sequence of steps used to build the application is:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Export the required environment variables:
-
-    .. code-block:: console
-
-        export RTE_SDK=<Path to the DPDK installation folder>
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-#.  Build the application executable file:
-
-    .. code-block:: console
-
-        cd ${RTE_SDK}/examples/load_balancer
-        make
-
-    For more details on how to build the DPDK libraries and sample applications,
-    please refer to the *DPDK Getting Started Guide.*
+The application is located in the ``load_balancer`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/multi_process.rst b/doc/guides/sample_app_ug/multi_process.rst
index d4df2fa..4b6df70 100644
--- a/doc/guides/sample_app_ug/multi_process.rst
+++ b/doc/guides/sample_app_ug/multi_process.rst
@@ -40,31 +40,13 @@ Example Applications
 
 Building the Sample Applications
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
 The multi-process example applications are built in the same way as other sample applications,
 and as documented in the *DPDK Getting Started Guide*.
-To build all the example applications:
-
-#.  Set RTE_SDK and go to the example directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/multi_process
-
-#.  Set the target (a default target will be used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
 
-#.  Build the applications:
 
-    .. code-block:: console
+To compile the sample application see :ref:`sample_app_compilation`.
 
-        make
+The applications are located in the ``multi_process`` sub-directory.
 
 .. note::
 
diff --git a/doc/guides/sample_app_ug/netmap_compatibility.rst b/doc/guides/sample_app_ug/netmap_compatibility.rst
index 030fd98..0ff5059 100644
--- a/doc/guides/sample_app_ug/netmap_compatibility.rst
+++ b/doc/guides/sample_app_ug/netmap_compatibility.rst
@@ -121,29 +121,12 @@ The bridge application is an example largely based on the bridge example shipped
 It shows how a minimal Netmap application with minimal and straightforward source code changes can be run on top of the DPDK.
 Please refer to ``$RTE_SDK/examples/netmap_compat/bridge/bridge.c`` for an example of a ported application.
 
-Compiling the "bridge" Sample Application
------------------------------------------
+Compiling the Application
+-------------------------
 
-#.  Go to the example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/netmap_compat
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide for Linux* for possible ``RTE_TARGET`` values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``netmap_compat`` sub-directory.
 
 Running the "bridge" Sample Application
 ---------------------------------------
diff --git a/doc/guides/sample_app_ug/packet_ordering.rst b/doc/guides/sample_app_ug/packet_ordering.rst
index ef85150..3c6eb35 100644
--- a/doc/guides/sample_app_ug/packet_ordering.rst
+++ b/doc/guides/sample_app_ug/packet_ordering.rst
@@ -51,28 +51,11 @@ The application uses at least three CPU cores:
   from the reorder buffer and sends them to the NIC ports for transmission.
 
 Compiling the Application
---------------------------
+-------------------------
 
-#.  Go to the example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/helloworld
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started* Guide for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``packet_ordering`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/performance_thread.rst b/doc/guides/sample_app_ug/performance_thread.rst
index a55a624..c718ce6 100644
--- a/doc/guides/sample_app_ug/performance_thread.rst
+++ b/doc/guides/sample_app_ug/performance_thread.rst
@@ -73,28 +73,10 @@ invalid.
 
 Compiling the Application
 -------------------------
-The application is located in the sample application folder in the
-``performance-thread`` folder.
 
-#.  Go to the example applications folder
-
-    .. code-block:: console
-
-       export RTE_SDK=/path/to/rte_sdk
-       cd ${RTE_SDK}/examples/performance-thread/l3fwd-thread
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-       export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Linux Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-        make
+To compile the sample application see :ref:`sample_app_compilation`.
 
+The application is located in the `performance-thread/l3fwd-thread` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/ptpclient.rst b/doc/guides/sample_app_ug/ptpclient.rst
index d3ef1d1..b456e33 100644
--- a/doc/guides/sample_app_ug/ptpclient.rst
+++ b/doc/guides/sample_app_ug/ptpclient.rst
@@ -78,39 +78,20 @@ The adjustment for slave can be represented as:
 If the command line parameter ``-T 1`` is used the application also
 synchronizes the PTP PHC clock with the Linux kernel clock.
 
-
 Compiling the Application
 -------------------------
 
-To compile the application, export the path to the DPDK source tree and edit
-the ``config/common_linuxapp`` configuration file to enable IEEE1588:
-
-.. code-block:: console
-
-    export RTE_SDK=/path/to/rte_sdk
-
-    # Edit  common_linuxapp and set the following options:
-    CONFIG_RTE_LIBRTE_IEEE1588=y
-
-Set the target, for example:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-.. code-block:: console
-
-    export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-See the *DPDK Getting Started* Guide for possible ``RTE_TARGET`` values.
-
-Build the application as follows:
-
-.. code-block:: console
+The application is located in the ``ptpclient`` sub-directory.
 
-    # Recompile DPDK.
-    make install T=$RTE_TARGET
+.. note::
+   To compile the application edit the ``config/common_linuxapp`` configuration file to enable IEEE1588
+   and then recompile DPDK:
 
-    # Compile the application.
-    cd ${RTE_SDK}/examples/ptpclient
-    make
+   .. code-block:: console
 
+      CONFIG_RTE_LIBRTE_IEEE1588=y
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/qos_metering.rst b/doc/guides/sample_app_ug/qos_metering.rst
index e1a6ac7..c6a9d72 100644
--- a/doc/guides/sample_app_ug/qos_metering.rst
+++ b/doc/guides/sample_app_ug/qos_metering.rst
@@ -64,29 +64,9 @@ all the incoming packets are colored as green.
 Compiling the Application
 -------------------------
 
-#.  Go to the example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/qos_meter
-
-#.  Set the target
-    (a default target is used if not specified):
-
-    .. note::
-
-        This application is intended as a linuxapp only.
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``qos_meter`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/qos_scheduler.rst b/doc/guides/sample_app_ug/qos_scheduler.rst
index a6654cb..e618e2a 100644
--- a/doc/guides/sample_app_ug/qos_scheduler.rst
+++ b/doc/guides/sample_app_ug/qos_scheduler.rst
@@ -58,31 +58,14 @@ The TX thread, if present, reads from the TX ring and write the packets to the T
 Compiling the Application
 -------------------------
 
-To compile the application:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Go to the sample application directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/qos_sched
-
-#.  Set the target (a default target is used if not specified). For example:
+The application is located in the ``qos_sched`` sub-directory.
 
     .. note::
 
         This application is intended as a linuxapp only.
 
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
-
 .. note::
 
     To get statistics on the sample app using the command line interface as described in the next section,
diff --git a/doc/guides/sample_app_ug/quota_watermark.rst b/doc/guides/sample_app_ug/quota_watermark.rst
index 2c3a432..c185147 100644
--- a/doc/guides/sample_app_ug/quota_watermark.rst
+++ b/doc/guides/sample_app_ug/quota_watermark.rst
@@ -88,30 +88,12 @@ as shown in :numref:`figure_ring_pipeline_perf_setup`.
 
    Ring-based Processing Pipeline Performance Setup
 
-
 Compiling the Application
 -------------------------
 
-#.  Go to the example directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/quota_watermark
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
+To compile the sample application see :ref:`sample_app_compilation`.
 
-        make
+The application is located in the ``quota_watermark`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/rxtx_callbacks.rst b/doc/guides/sample_app_ug/rxtx_callbacks.rst
index 8d1bb86..4feb19b 100644
--- a/doc/guides/sample_app_ug/rxtx_callbacks.rst
+++ b/doc/guides/sample_app_ug/rxtx_callbacks.rst
@@ -45,23 +45,9 @@ prior to transmission to calculate the elapsed time, in CPU cycles.
 Compiling the Application
 -------------------------
 
-To compile the application export the path to the DPDK source tree and go to
-the example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-.. code-block:: console
-
-    export RTE_SDK=/path/to/rte_sdk
-
-    cd ${RTE_SDK}/examples/rxtx_callbacks
-
-
-Set the target, for example:
-
-.. code-block:: console
-
-    export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-See the *DPDK Getting Started* Guide for possible ``RTE_TARGET`` values.
+The application is located in the ``rxtx_callbacks`` sub-directory.
 
 The callbacks feature requires that the ``CONFIG_RTE_ETHDEV_RXTX_CALLBACKS``
 setting is on in the ``config/common_`` config file that applies to the
@@ -71,13 +57,6 @@ target. This is generally on by default:
 
     CONFIG_RTE_ETHDEV_RXTX_CALLBACKS=y
 
-Build the application as follows:
-
-.. code-block:: console
-
-    make
-
-
 Running the Application
 -----------------------
 
diff --git a/doc/guides/sample_app_ug/server_node_efd.rst b/doc/guides/sample_app_ug/server_node_efd.rst
index c2a5f20..ee7d460 100644
--- a/doc/guides/sample_app_ug/server_node_efd.rst
+++ b/doc/guides/sample_app_ug/server_node_efd.rst
@@ -108,26 +108,9 @@ that this is a new flow, which is dropped.
 Compiling the Application
 -------------------------
 
-The sequence of steps used to build the application is:
-
-#.  Export the required environment variables:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-#.  Build the application executable file:
-
-    .. code-block:: console
-
-        cd ${RTE_SDK}/examples/server_node_efd/
-        make
-
-    For more details on how to build the DPDK libraries and sample
-    applications,
-    please refer to the *DPDK Getting Started Guide.*
+To compile the sample application see :ref:`sample_app_compilation`.
 
+The application is located in the ``server_node_efd`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/skeleton.rst b/doc/guides/sample_app_ug/skeleton.rst
index c39b033..4eb65af 100644
--- a/doc/guides/sample_app_ug/skeleton.rst
+++ b/doc/guides/sample_app_ug/skeleton.rst
@@ -39,33 +39,12 @@ It is intended as a demonstration of the basic components of a DPDK forwarding
 application. For more detailed implementations see the L2 and L3 forwarding
 sample applications.
 
-
 Compiling the Application
 -------------------------
 
-To compile the application export the path to the DPDK source tree and go to
-the example directory:
-
-.. code-block:: console
-
-    export RTE_SDK=/path/to/rte_sdk
-
-    cd ${RTE_SDK}/examples/skeleton
-
-Set the target, for example:
-
-.. code-block:: console
-
-    export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-See the *DPDK Getting Started* Guide for possible ``RTE_TARGET`` values.
-
-Build the application as follows:
-
-.. code-block:: console
-
-    make
+To compile the sample application see :ref:`sample_app_compilation`.
 
+The application is located in the ``skeleton`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/tep_termination.rst b/doc/guides/sample_app_ug/tep_termination.rst
index 087823b..dccb352 100644
--- a/doc/guides/sample_app_ug/tep_termination.rst
+++ b/doc/guides/sample_app_ug/tep_termination.rst
@@ -121,39 +121,16 @@ The example in this section have been validated with the following distributions
 
 Compiling the Sample Code
 -------------------------
-#.  Compile vhost lib:
 
-    To enable vhost, turn on vhost library in the configure file config/common_linuxapp.
+To enable vhost, turn on vhost library in the configure file
+``config/common_linuxapp``.
 
     .. code-block:: console
 
         CONFIG_RTE_LIBRTE_VHOST=y
 
-
-#.  Go to the examples directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/tep_termination
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the DPDK Getting Started Guide for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        cd ${RTE_SDK}
-        make config ${RTE_TARGET}
-        make install ${RTE_TARGET}
-        cd ${RTE_SDK}/examples/tep_termination
-        make
+Then following the to compile the sample application shown in
+:ref:`sample_app_compilation`.
 
 Running the Sample Code
 -----------------------
diff --git a/doc/guides/sample_app_ug/test_pipeline.rst b/doc/guides/sample_app_ug/test_pipeline.rst
index 95c7e0f..4aca2be 100644
--- a/doc/guides/sample_app_ug/test_pipeline.rst
+++ b/doc/guides/sample_app_ug/test_pipeline.rst
@@ -55,28 +55,12 @@ The application uses three CPU cores:
 
    Test Pipeline Application
 
-
 Compiling the Application
 -------------------------
+To compile the sample application see :ref:`sample_app_compilation`
 
-#.  Go to the app/test directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/app/test/test-pipeline
-
-#.  Set the target (a default target is used if not specified):
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-#.  Build the application:
-
-    .. code-block:: console
+The application is located in the ``$RTE_SDK/test/test-pipline`` directory.
 
-        make
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/timer.rst b/doc/guides/sample_app_ug/timer.rst
index 00b6953..e9df6f0 100644
--- a/doc/guides/sample_app_ug/timer.rst
+++ b/doc/guides/sample_app_ug/timer.rst
@@ -37,26 +37,9 @@ This application prints some messages from different lcores regularly, demonstra
 Compiling the Application
 -------------------------
 
-#.  Go to the example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/timer
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide* for possible *RTE_TARGET* values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``timer`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/vhost.rst b/doc/guides/sample_app_ug/vhost.rst
index a2a3909..0b57261 100644
--- a/doc/guides/sample_app_ug/vhost.rst
+++ b/doc/guides/sample_app_ug/vhost.rst
@@ -55,20 +55,12 @@ puts back to the same physical NIC port.
 Build
 ~~~~~
 
-Follow the *Getting Started Guide for Linux* on generic info about
-environment setup and building DPDK from source.
+To compile the sample application see :ref:`sample_app_compilation`.
 
-In this example, you need build DPDK both on the host and inside guest.
-Also, you need build this example.
-
-.. code-block:: console
-
-    export RTE_SDK=/path/to/dpdk_source
-    export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    cd ${RTE_SDK}/examples/vhost
-    make
+The application is located in the ``vhost`` sub-directory.
 
+.. note::
+   In this example, you need build DPDK both on the host and inside guest.
 
 Start the vswitch example
 ~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/doc/guides/sample_app_ug/vhost_scsi.rst b/doc/guides/sample_app_ug/vhost_scsi.rst
index 8be069e..df4be22 100644
--- a/doc/guides/sample_app_ug/vhost_scsi.rst
+++ b/doc/guides/sample_app_ug/vhost_scsi.rst
@@ -51,23 +51,14 @@ Testing steps
 This section shows the steps how to start a VM with the block device as
 fast data path for critical application.
 
-Build
-~~~~~
+Compiling the Application
+-------------------------
 
-Follow the *Getting Started Guide for Linux* on generic info about
-environment setup and building DPDK from source.
+To compile the sample application see :ref:`sample_app_compilation`.
 
-In this example, you need build DPDK both on the host and inside guest.
-Also, you need build this example.
-
-.. code-block:: console
-
-    export RTE_SDK=/path/to/dpdk_source
-    export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    cd ${RTE_SDK}/examples/vhost_scsi
-    make
+The application is located in the ``examples`` sub-directory.
 
+You will also need to build DPDK both on the host and inside the guest
 
 Start the vhost_scsi example
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/doc/guides/sample_app_ug/vm_power_management.rst b/doc/guides/sample_app_ug/vm_power_management.rst
index 05c26b0..dc51476 100644
--- a/doc/guides/sample_app_ug/vm_power_management.rst
+++ b/doc/guides/sample_app_ug/vm_power_management.rst
@@ -201,9 +201,12 @@ Compiling and Running the Host Application
 Compiling
 ~~~~~~~~~
 
-#. export RTE_SDK=/path/to/rte_sdk
-#. cd ${RTE_SDK}/examples/vm_power_manager
-#. make
+Compiling the Application
+-------------------------
+
+To compile the sample application see :ref:`sample_app_compilation`.
+
+The application is located in the ``vm_power_manager`` sub-directory.
 
 Running
 ~~~~~~~
diff --git a/doc/guides/sample_app_ug/vmdq_dcb_forwarding.rst b/doc/guides/sample_app_ug/vmdq_dcb_forwarding.rst
index 70e1d19..3d2abb8 100644
--- a/doc/guides/sample_app_ug/vmdq_dcb_forwarding.rst
+++ b/doc/guides/sample_app_ug/vmdq_dcb_forwarding.rst
@@ -86,26 +86,11 @@ No command-line options are taken by this application apart from the standard EA
 Compiling the Application
 -------------------------
 
-#.  Go to the examples directory:
 
-    .. code-block:: console
 
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/vmdq_dcb
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``vmdq_dcb`` sub-directory.
 
 Running the Application
 -----------------------
-- 
2.5.5

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [dpdk-dev] [PATCH v6 2/2] doc: add new introduction to sample app guides
  2017-10-11 15:51   ` [dpdk-dev] [PATCH v6 " Marko Kovacevic
@ 2017-10-11 15:51     ` Marko Kovacevic
  2017-10-12 10:55       ` Mcnamara, John
                         ` (2 more replies)
  2017-10-12 10:55     ` [dpdk-dev] [PATCH v6 1/2] doc: add generic compilation doc for all sample apps Mcnamara, John
  1 sibling, 3 replies; 18+ messages in thread
From: Marko Kovacevic @ 2017-10-11 15:51 UTC (permalink / raw)
  To: john.mcnamara; +Cc: dev, marko.kovacevic

Add new Introduction Section into the sample app guides.

Signed-off-by: Marko Kovacevic <marko.kovacevic@intel.com>
Reviewed-by: John McNamara <john.mcnamara@intel.com>
---
 doc/guides/faq/faq.rst                             |   2 +-
 doc/guides/sample_app_ug/dist_app.rst              |   2 +
 doc/guides/sample_app_ug/exception_path.rst        |   2 +-
 doc/guides/sample_app_ug/hello_world.rst           |   2 +
 doc/guides/sample_app_ug/index.rst                 |   2 +
 doc/guides/sample_app_ug/intro.rst                 | 153 +++++++++++++++------
 doc/guides/sample_app_ug/ipsec_secgw.rst           |   2 +
 .../sample_app_ug/l2_forward_real_virtual.rst      |   2 +-
 doc/guides/sample_app_ug/l3_forward.rst            |   2 +
 doc/guides/sample_app_ug/multi_process.rst         |   2 +-
 doc/guides/sample_app_ug/ptpclient.rst             |   1 +
 doc/guides/sample_app_ug/qos_scheduler.rst         |   2 +
 doc/guides/sample_app_ug/rxtx_callbacks.rst        |   1 +
 doc/guides/sample_app_ug/server_node_efd.rst       |   2 +-
 doc/guides/sample_app_ug/skeleton.rst              |   1 +
 15 files changed, 133 insertions(+), 45 deletions(-)

diff --git a/doc/guides/faq/faq.rst b/doc/guides/faq/faq.rst
index dac8050..da9b484 100644
--- a/doc/guides/faq/faq.rst
+++ b/doc/guides/faq/faq.rst
@@ -221,7 +221,7 @@ I350 has RSS support and 8 queue pairs can be used in RSS mode. It should work w
 How can hugepage-backed memory be shared among multiple processes?
 ------------------------------------------------------------------
 
-See the Primary and Secondary examples in the :ref:`multi-process sample application <multi_process_app>`.
+See the Primary and Secondary examples in the :ref:`multi-process sample application <sample_app_multi_process_app>`.
 
 
 Why can't my application receive packets on my system with UEFI Secure Boot enabled?
diff --git a/doc/guides/sample_app_ug/dist_app.rst b/doc/guides/sample_app_ug/dist_app.rst
index 466115d..0431b97 100644
--- a/doc/guides/sample_app_ug/dist_app.rst
+++ b/doc/guides/sample_app_ug/dist_app.rst
@@ -28,6 +28,8 @@
     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+.. _sample_app_dist_app:
+
 Distributor Sample Application
 ==============================
 
diff --git a/doc/guides/sample_app_ug/exception_path.rst b/doc/guides/sample_app_ug/exception_path.rst
index 2dee8bf..40e5b5c 100644
--- a/doc/guides/sample_app_ug/exception_path.rst
+++ b/doc/guides/sample_app_ug/exception_path.rst
@@ -115,7 +115,7 @@ The following sections provide some explanation of the code.
 Initialization
 ~~~~~~~~~~~~~~
 
-Setup of the mbuf pool, driver and queues is similar to the setup done in the :ref:`l2_fwd_app_real_and_virtual`.
+Setup of the mbuf pool, driver and queues is similar to the setup done in the :ref:`sample_app_l2_fwd`.
 In addition, the TAP interfaces must also be created.
 A TAP interface is created for each lcore that is being used.
 The code for creating the TAP interface is as follows:
diff --git a/doc/guides/sample_app_ug/hello_world.rst b/doc/guides/sample_app_ug/hello_world.rst
index 8196702..8cf23a3 100644
--- a/doc/guides/sample_app_ug/hello_world.rst
+++ b/doc/guides/sample_app_ug/hello_world.rst
@@ -28,6 +28,8 @@
     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+.. _sample_app_hello_world:
+
 Hello World Sample Application
 ==============================
 
diff --git a/doc/guides/sample_app_ug/index.rst b/doc/guides/sample_app_ug/index.rst
index 4f8340a..163b468 100644
--- a/doc/guides/sample_app_ug/index.rst
+++ b/doc/guides/sample_app_ug/index.rst
@@ -1,4 +1,5 @@
 ..  BSD LICENSE
+
     Copyright(c) 2010-2015 Intel Corporation. All rights reserved.
     All rights reserved.
 
@@ -28,6 +29,7 @@
     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+
 Sample Applications User Guides
 ===============================
 
diff --git a/doc/guides/sample_app_ug/intro.rst b/doc/guides/sample_app_ug/intro.rst
index d3f261b..9498d3d 100644
--- a/doc/guides/sample_app_ug/intro.rst
+++ b/doc/guides/sample_app_ug/intro.rst
@@ -1,5 +1,5 @@
 ..  BSD LICENSE
-    Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
+    Copyright(c) 2010-2017 Intel Corporation. All rights reserved.
     All rights reserved.
 
     Redistribution and use in source and binary forms, with or without
@@ -28,42 +28,115 @@
     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-Introduction
-============
-
-This document describes the sample applications that are included in the Data Plane Development Kit (DPDK).
-Each chapter describes a sample application that showcases specific functionality and
-provides instructions on how to compile, run and use the sample application.
-
-Documentation Roadmap
----------------------
-
-The following is a list of DPDK documents in suggested reading order:
-
-*   **Release Notes** : Provides release-specific information, including supported features,
-    limitations, fixed issues, known issues and so on.
-    Also, provides the answers to frequently asked questions in FAQ format.
-
-*   **Getting Started Guides** : Describes how to install and
-    configure the DPDK software for your operating system;
-    designed to get users up and running quickly with the software.
-
-*   **Programmer's Guide:**  Describes:
-
-    *   The software architecture and how to use it (through examples),
-        specifically in a Linux* application (linuxapp) environment.
-
-    *   The content of the DPDK, the build system
-        (including the commands that can be used in the root DPDK Makefile to build the development kit and an application)
- 	and guidelines for porting an application.
-
-    *   Optimizations used in the software and those that should be considered for new development
-
-A glossary of terms is also provided.
-
-*   **API Reference**  : Provides detailed information about DPDK functions,
-    data structures and other programming constructs.
-
-*   **Sample Applications User Guide**  : Describes a set of sample applications.
-    Each chapter describes a sample application that showcases specific functionality and
-    provides instructions on how to compile, run and use the sample application.
+Introduction to the DPDK Sample Applications
+============================================
+
+The DPDK Sample Applications are small standalone applications which
+demonstrate various features of DPDK. They can be considered as a cookbook of
+DPDK features.  Users interested in getting started with DPDK can take the
+applications, try out the features, and then extend them to fit their needs.
+
+
+The DPDK Sample Applications
+----------------------------
+
+Table :numref:`table_sample_apps` shows a list of some of the main sample
+applications that are available in the examples directory of DPDK:
+
+ .. _table_sample_apps:
+
+ .. table:: **Some of the DPDK Sample applications**
+
+    +---------------------------------------+--------------------------------------+
+    | Bonding                               | Netmap Compatibility                 |
+    +---------------------------------------+--------------------------------------+
+    | Command Line                          | Packet Ordering                      |
+    +---------------------------------------+--------------------------------------+
+    | Distributor                           | Performance Thread                   |
+    +---------------------------------------+--------------------------------------+
+    | Ethtool                               | Precision Time Protocol (PTP) Client |
+    +---------------------------------------+--------------------------------------+
+    | Exception Path                        | Quality of Service (QoS) Metering    |
+    +---------------------------------------+--------------------------------------+
+    | Hello World                           | QoS Scheduler                        |
+    +---------------------------------------+--------------------------------------+
+    | Internet Protocol (IP) Fragmentation  | Quota and Watermark                  |
+    +---------------------------------------+--------------------------------------+
+    | IP Pipeline                           | RX/TX Callbacks                      |
+    +---------------------------------------+--------------------------------------+
+    | IP Reassembly                         | Server node EFD                      |
+    +---------------------------------------+--------------------------------------+
+    | IPsec Security Gateway                | Basic Forwarding/Skeleton App        |
+    +---------------------------------------+--------------------------------------+
+    | IPv4 multicast                        | Tunnel End Point (TEP) termination   |
+    +---------------------------------------+--------------------------------------+
+    | Kernel NIC Interface                  | Timer                                |
+    +---------------------------------------+--------------------------------------+
+    | Network Layer 2 Forwarding + variants | Vhost                                |
+    +---------------------------------------+--------------------------------------+
+    | Network Layer 3 Forwarding + variants | Vhost Xen                            |
+    +---------------------------------------+--------------------------------------+
+    | Link Status Interrupt                 | VMDQ Forwarding                      |
+    +---------------------------------------+--------------------------------------+
+    | Load Balancer                         | VMDQ and DCB Forwarding              |
+    +---------------------------------------+--------------------------------------+
+    | Multi-process                         | VM Power Management                  |
+    +---------------------------------------+--------------------------------------+
+
+These examples range from simple to reasonably complex but most are designed
+to demonstrate one particular feature of DPDK. Some of the more interesting
+examples are highlighted below.
+
+
+* :ref:`Hello World<sample_app_hello_world>`: As with most introductions to a
+  programming framework a good place to start is with the Hello World
+  application. The Hello World example sets up the DPDK Environment Abstraction
+  Layer (EAL), and prints a simple "Hello World" message to each of the DPDK
+  enabled cores. This application doesn't do any packet forwarding but it is a
+  good way to test if the DPDK environment is compiled and set up properly.
+
+* :ref:`Basic Forwarding/Skeleton Application<sample_app_basic_fwd>`: The Basic
+  Forwarding/Skeleton contains the minimum amount of code required to enable
+  basic packet forwarding with DPDK. This allows you to test if your network
+  interfaces are working with DPDK.
+
+* :ref:`Network Layer 2 forwarding<sample_app_l2_fwd>`: The Network Layer 2
+  forwarding, or ``l2fwd`` application does forwarding based on Ethernet MAC
+  addresses like a simple switch.
+
+* :ref:`Network Layer 3 forwarding<sample_app_l3_fwd>`: The Network Layer3
+  forwarding, or ``l3fwd`` application does forwarding based on Internet
+  Protocol, IPv4 or IPv6 like a simple router.
+
+* :ref:`Packet Distributor<sample_app_dist_app>`: The Packet Distributor
+  demonstrates how to distribute packets arriving on an Rx port to different
+  cores for processing and transmission.
+
+* :ref:`Multi-Process Application<sample_app_multi_process_app>`: The
+  multi-process application shows how two DPDK processes can work together using
+  queues and memory pools to share information.
+
+* :ref:`RX/TX callbacks Application<sample_app_rxtx_callbck>`: The RX/TX
+  callbacks sample application is a packet forwarding application that
+  demonstrates the use of user defined callbacks on received and transmitted
+  packets. The application calculates the latency of a packet between RX
+  (packet arrival) and TX (packet transmission) by adding callbacks to the RX
+  and TX packet processing functions.
+
+* :ref:`IPSec Security Gateway<sample_app_ipsec_secgw>`: The IPSec Security
+  Gateway application is minimal example of something closer to a real world
+  example. This is also a good example of an application using the DPDK
+  Cryptodev framework.
+
+* :ref:`Precision Time Protocol (PTP) client<sample_app_ptp_client>`: The PTP
+  client is another minimal implementation of a real world application.
+  In this case the application is a PTP client that communicates with a PTP
+  master clock to synchronize time on a Network Interface Card (NIC) using the
+  IEEE1588 protocol.
+
+* :ref:`Quality of Service (QoS) Scheduler<sample_app_qos_scheduler>`: The QoS
+  Scheduler application demonstrates the use of DPDK to provide QoS scheduling.
+
+There are many more examples shown in the following chapters. Each of the
+documented sample applications show how to compile, configure and run the
+application as well as explaining the main functionality of the code.
diff --git a/doc/guides/sample_app_ug/ipsec_secgw.rst b/doc/guides/sample_app_ug/ipsec_secgw.rst
index c6af171..8efa614 100644
--- a/doc/guides/sample_app_ug/ipsec_secgw.rst
+++ b/doc/guides/sample_app_ug/ipsec_secgw.rst
@@ -28,6 +28,8 @@
     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+.. _sample_app_ipsec_secgw:
+
 IPsec Security Gateway Sample Application
 =========================================
 
diff --git a/doc/guides/sample_app_ug/l2_forward_real_virtual.rst b/doc/guides/sample_app_ug/l2_forward_real_virtual.rst
index ba64ea2..901603e 100644
--- a/doc/guides/sample_app_ug/l2_forward_real_virtual.rst
+++ b/doc/guides/sample_app_ug/l2_forward_real_virtual.rst
@@ -28,7 +28,7 @@
     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-.. _l2_fwd_app_real_and_virtual:
+.. _sample_app_l2_fwd:
 
 L2 Forwarding Sample Application (in Real and Virtualized Environments)
 =======================================================================
diff --git a/doc/guides/sample_app_ug/l3_forward.rst b/doc/guides/sample_app_ug/l3_forward.rst
index 1eb12c4..c80bc31 100644
--- a/doc/guides/sample_app_ug/l3_forward.rst
+++ b/doc/guides/sample_app_ug/l3_forward.rst
@@ -28,6 +28,8 @@
     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+.. _sample_app_l3_fwd:
+
 L3 Forwarding Sample Application
 ================================
 
diff --git a/doc/guides/sample_app_ug/multi_process.rst b/doc/guides/sample_app_ug/multi_process.rst
index 4b6df70..51c7ef4 100644
--- a/doc/guides/sample_app_ug/multi_process.rst
+++ b/doc/guides/sample_app_ug/multi_process.rst
@@ -28,7 +28,7 @@
     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-.. _multi_process_app:
+.. _sample_app_multi_process_app:
 
 Multi-process Sample Application
 ================================
diff --git a/doc/guides/sample_app_ug/ptpclient.rst b/doc/guides/sample_app_ug/ptpclient.rst
index b456e33..9710a87 100644
--- a/doc/guides/sample_app_ug/ptpclient.rst
+++ b/doc/guides/sample_app_ug/ptpclient.rst
@@ -28,6 +28,7 @@
     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+.. _sample_app_ptp_client:
 
 PTP Client Sample Application
 =============================
diff --git a/doc/guides/sample_app_ug/qos_scheduler.rst b/doc/guides/sample_app_ug/qos_scheduler.rst
index e618e2a..79e3ff7 100644
--- a/doc/guides/sample_app_ug/qos_scheduler.rst
+++ b/doc/guides/sample_app_ug/qos_scheduler.rst
@@ -28,6 +28,8 @@
     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+.. _sample_app_qos_scheduler:
+
 QoS Scheduler Sample Application
 ================================
 
diff --git a/doc/guides/sample_app_ug/rxtx_callbacks.rst b/doc/guides/sample_app_ug/rxtx_callbacks.rst
index 4feb19b..4dc4a9f 100644
--- a/doc/guides/sample_app_ug/rxtx_callbacks.rst
+++ b/doc/guides/sample_app_ug/rxtx_callbacks.rst
@@ -28,6 +28,7 @@
     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+.. _sample_app_rxtx_callbck:
 
 RX/TX Callbacks Sample Application
 ==================================
diff --git a/doc/guides/sample_app_ug/server_node_efd.rst b/doc/guides/sample_app_ug/server_node_efd.rst
index ee7d460..facdd28 100644
--- a/doc/guides/sample_app_ug/server_node_efd.rst
+++ b/doc/guides/sample_app_ug/server_node_efd.rst
@@ -36,7 +36,7 @@ load balancer, for more information about the EFD Library please refer to the
 DPDK programmer's guide.
 
 This sample application is a variant of the
-:ref:`client-server sample application <multi_process_app>`
+:ref:`client-server sample application <sample_app_multi_process_app>`
 where a specific target node is specified for every and each flow
 (not in a round-robin fashion as the original load balancing sample application).
 
diff --git a/doc/guides/sample_app_ug/skeleton.rst b/doc/guides/sample_app_ug/skeleton.rst
index 4eb65af..66d0004 100644
--- a/doc/guides/sample_app_ug/skeleton.rst
+++ b/doc/guides/sample_app_ug/skeleton.rst
@@ -28,6 +28,7 @@
     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+.. _sample_app_basic_fwd:
 
 Basic Forwarding Sample Application
 ===================================
-- 
2.5.5

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [dpdk-dev] [PATCH v6 1/2] doc: add generic compilation doc for all sample apps
  2017-10-11 15:51   ` [dpdk-dev] [PATCH v6 " Marko Kovacevic
  2017-10-11 15:51     ` [dpdk-dev] [PATCH v6 2/2] doc: add new introduction to sample app guides Marko Kovacevic
@ 2017-10-12 10:55     ` Mcnamara, John
  1 sibling, 0 replies; 18+ messages in thread
From: Mcnamara, John @ 2017-10-12 10:55 UTC (permalink / raw)
  To: Kovacevic, Marko; +Cc: dev, Herakliusz Lipiec



> -----Original Message-----
> From: Kovacevic, Marko
> Sent: Wednesday, October 11, 2017 4:51 PM
> To: Mcnamara, John <john.mcnamara@intel.com>
> Cc: dev@dpdk.org; Kovacevic, Marko <marko.kovacevic@intel.com>; Herakliusz
> Lipiec <herakliusz.lipiec@intel.com>
> Subject: [PATCH v6 1/2] doc: add generic compilation doc for all sample
> apps
> 
> From: Herakliusz Lipiec <herakliusz.lipiec@intel.com>
> 
> Moved duplicated, and occasionally outdated, doc sections from each
> of the sample app guides chapters to a common chapter at the start.
> 
> This reduces the duplication in the docs and provides a single
> point of reference for compiling the sample apps.
> 
> Signed-off-by: Herakliusz Lipiec <herakliusz.lipiec@intel.com>
> Signed-off-by: Marko Kovacevic <marko.kovacevic@intel.com>
> Reviewed-by: John McNamara <john.mcnamara@intel.com>


Acked-by: John McNamara <john.mcnamara@intel.com>

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [dpdk-dev] [PATCH v6 2/2] doc: add new introduction to sample app guides
  2017-10-11 15:51     ` [dpdk-dev] [PATCH v6 2/2] doc: add new introduction to sample app guides Marko Kovacevic
@ 2017-10-12 10:55       ` Mcnamara, John
  2017-10-13 22:17       ` Thomas Monjalon
  2017-10-16 14:50       ` [dpdk-dev] [PATCH v7 1/2] doc: add generic compilation doc for all sample apps Marko Kovacevic
  2 siblings, 0 replies; 18+ messages in thread
From: Mcnamara, John @ 2017-10-12 10:55 UTC (permalink / raw)
  To: Kovacevic, Marko; +Cc: dev



> -----Original Message-----
> From: Kovacevic, Marko
> Sent: Wednesday, October 11, 2017 4:51 PM
> To: Mcnamara, John <john.mcnamara@intel.com>
> Cc: dev@dpdk.org; Kovacevic, Marko <marko.kovacevic@intel.com>
> Subject: [PATCH v6 2/2] doc: add new introduction to sample app guides
> 
> Add new Introduction Section into the sample app guides.
> 
> Signed-off-by: Marko Kovacevic <marko.kovacevic@intel.com>
> Reviewed-by: John McNamara <john.mcnamara@intel.com>


Acked-by: John McNamara <john.mcnamara@intel.com>

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [dpdk-dev] [PATCH v6 2/2] doc: add new introduction to sample app guides
  2017-10-11 15:51     ` [dpdk-dev] [PATCH v6 2/2] doc: add new introduction to sample app guides Marko Kovacevic
  2017-10-12 10:55       ` Mcnamara, John
@ 2017-10-13 22:17       ` Thomas Monjalon
  2017-10-16 14:50       ` [dpdk-dev] [PATCH v7 1/2] doc: add generic compilation doc for all sample apps Marko Kovacevic
  2 siblings, 0 replies; 18+ messages in thread
From: Thomas Monjalon @ 2017-10-13 22:17 UTC (permalink / raw)
  To: Marko Kovacevic, john.mcnamara; +Cc: dev

Hi,

11/10/2017 17:51, Marko Kovacevic:
> --- a/doc/guides/sample_app_ug/ipsec_secgw.rst
> +++ b/doc/guides/sample_app_ug/ipsec_secgw.rst
> @@ -28,6 +28,8 @@
>      (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
>      OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
>  
> +.. _sample_app_ipsec_secgw:
> +
>  IPsec Security Gateway Sample Application
>  =========================================
>  
> diff --git a/doc/guides/sample_app_ug/l2_forward_real_virtual.rst b/doc/guides/sample_app_ug/l2_forward_real_virtual.rst
> index ba64ea2..901603e 100644
> --- a/doc/guides/sample_app_ug/l2_forward_real_virtual.rst
> +++ b/doc/guides/sample_app_ug/l2_forward_real_virtual.rst
> @@ -28,7 +28,7 @@
>      (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
>      OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
>  
> -.. _l2_fwd_app_real_and_virtual:
> +.. _sample_app_l2_fwd:
>  
>  L2 Forwarding Sample Application (in Real and Virtualized Environments)
>  =======================================================================

You don't need to add such anchor at the top of a doc.
You can refer to a doc with :doc: tag.
Please do not add more useless anchors.

Idea for another patch: remove all useless anchors at top of files :)

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [dpdk-dev] [PATCH v7 1/2] doc: add generic compilation doc for all sample apps
  2017-10-11 15:51     ` [dpdk-dev] [PATCH v6 2/2] doc: add new introduction to sample app guides Marko Kovacevic
  2017-10-12 10:55       ` Mcnamara, John
  2017-10-13 22:17       ` Thomas Monjalon
@ 2017-10-16 14:50       ` Marko Kovacevic
  2017-10-16 14:50         ` [dpdk-dev] [PATCH v7 2/2] doc: add new introduction to sample app guides Marko Kovacevic
  2 siblings, 1 reply; 18+ messages in thread
From: Marko Kovacevic @ 2017-10-16 14:50 UTC (permalink / raw)
  To: john.mcnamara; +Cc: dev, marko.kovacevic, Herakliusz Lipiec

From: Herakliusz Lipiec <herakliusz.lipiec@intel.com>

Moved duplicated, and occasionally outdated, doc sections from each
of the sample app guides chapters to a common chapter at the start.

This reduces the duplication in the docs and provides a single
point of reference for compiling the sample apps.

Signed-off-by: Herakliusz Lipiec <herakliusz.lipiec@intel.com>
Signed-off-by: Marko Kovacevic <marko.kovacevic@intel.com>
Reviewed-by: John McNamara <john.mcnamara@intel.com>
---
 doc/guides/sample_app_ug/cmd_line.rst              |  21 +---
 doc/guides/sample_app_ug/compiling.rst             | 124 +++++++++++++++++++++
 doc/guides/sample_app_ug/dist_app.rst              |  22 +---
 doc/guides/sample_app_ug/ethtool.rst               |  23 +---
 .../sample_app_ug/eventdev_pipeline_sw_pmd.rst     |  21 +---
 doc/guides/sample_app_ug/exception_path.rst        |  23 +---
 doc/guides/sample_app_ug/hello_world.rst           |  21 +---
 doc/guides/sample_app_ug/index.rst                 |   1 +
 doc/guides/sample_app_ug/ip_frag.rst               |  27 +----
 doc/guides/sample_app_ug/ip_reassembly.rst         |  22 +---
 doc/guides/sample_app_ug/ipsec_secgw.rst           |  19 +---
 doc/guides/sample_app_ug/ipv4_multicast.rst        |  33 +-----
 doc/guides/sample_app_ug/keep_alive.rst            |  22 +---
 doc/guides/sample_app_ug/kernel_nic_interface.rst  |  24 +---
 doc/guides/sample_app_ug/l2_forward_cat.rst        |  34 ++----
 doc/guides/sample_app_ug/l2_forward_crypto.rst     |  21 +---
 doc/guides/sample_app_ug/l2_forward_job_stats.rst  |  21 +---
 .../sample_app_ug/l2_forward_real_virtual.rst      |  21 +---
 doc/guides/sample_app_ug/l3_forward.rst            |  23 +---
 .../sample_app_ug/l3_forward_access_ctrl.rst       |  23 +---
 doc/guides/sample_app_ug/l3_forward_power_man.rst  |  23 +---
 doc/guides/sample_app_ug/l3_forward_virtual.rst    |  29 +----
 doc/guides/sample_app_ug/link_status_intr.rst      |  27 +----
 doc/guides/sample_app_ug/load_balancer.rst         |  19 +---
 doc/guides/sample_app_ug/multi_process.rst         |  22 +---
 doc/guides/sample_app_ug/netmap_compatibility.rst  |  25 +----
 doc/guides/sample_app_ug/packet_ordering.rst       |  23 +---
 doc/guides/sample_app_ug/performance_thread.rst    |  22 +---
 doc/guides/sample_app_ug/ptpclient.rst             |  33 ++----
 doc/guides/sample_app_ug/qos_metering.rst          |  24 +---
 doc/guides/sample_app_ug/qos_scheduler.rst         |  21 +---
 doc/guides/sample_app_ug/quota_watermark.rst       |  22 +---
 doc/guides/sample_app_ug/rxtx_callbacks.rst        |  25 +----
 doc/guides/sample_app_ug/server_node_efd.rst       |  21 +---
 doc/guides/sample_app_ug/skeleton.rst              |  25 +----
 doc/guides/sample_app_ug/tep_termination.rst       |  31 +-----
 doc/guides/sample_app_ug/test_pipeline.rst         |  20 +---
 doc/guides/sample_app_ug/timer.rst                 |  21 +---
 doc/guides/sample_app_ug/vhost.rst                 |  16 +--
 doc/guides/sample_app_ug/vhost_scsi.rst            |  19 +---
 doc/guides/sample_app_ug/vm_power_management.rst   |   9 +-
 doc/guides/sample_app_ug/vmdq_dcb_forwarding.rst   |  19 +---
 42 files changed, 241 insertions(+), 801 deletions(-)
 create mode 100644 doc/guides/sample_app_ug/compiling.rst

diff --git a/doc/guides/sample_app_ug/cmd_line.rst b/doc/guides/sample_app_ug/cmd_line.rst
index 36c7971..7ea0dea 100644
--- a/doc/guides/sample_app_ug/cmd_line.rst
+++ b/doc/guides/sample_app_ug/cmd_line.rst
@@ -68,26 +68,9 @@ There are three simple commands:
 Compiling the Application
 -------------------------
 
-#.  Go to example directory:
+To compile the sample application see :ref:`sample_app_compilation`
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/cmdline
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    Refer to the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``cmd_line`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/compiling.rst b/doc/guides/sample_app_ug/compiling.rst
new file mode 100644
index 0000000..882432f
--- /dev/null
+++ b/doc/guides/sample_app_ug/compiling.rst
@@ -0,0 +1,124 @@
+ ..  BSD LICENSE
+     Copyright(c) 2015 Intel Corporation. All rights reserved.
+     All rights reserved.
+
+     Redistribution and use in source and binary forms, with or without
+     modification, are permitted provided that the following conditions
+     are met:
+
+     * Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+     * Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in
+     the documentation and/or other materials provided with the
+     distribution.
+     * Neither the name of Intel Corporation nor the names of its
+     contributors may be used to endorse or promote products derived
+     from this software without specific prior written permission.
+
+     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+     "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+     LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+     A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+     OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+     LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+     DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+     THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+.. _sample_app_compilation:
+
+Compiling the Sample Applications
+=================================
+
+This section explains how to compile the DPDK sample applications.
+
+To compile all the sample applications
+--------------------------------------
+
+
+Set the path to DPDK source code if its not set:
+
+    .. code-block:: console
+
+        export RTE_SDK=/path/to/rte_sdk
+
+Go to DPDK source:
+
+    .. code-block:: console
+
+        cd $RTE_SDK
+
+Build DPDK:
+
+   .. code-block:: console
+
+        make defconfig
+        make
+
+Build the sample applications:
+
+   .. code-block:: console
+
+       export RTE_TARGET=build
+       make -C examples
+
+For other possible ``RTE_TARGET`` values and additional information on
+compiling see
+:ref:`Compiling DPDK on Linux <linux_gsg_compiling_dpdk>` or
+:ref:`Compiling DPDK on FreeBSD <building_from_source>`.
+Applications are output to: ``$RTE_SDK/examples/app-dir/build`` or
+``$RTE_SDK/examples/app-dir/$RTE_TARGET``.
+
+
+In the example above the compiled application is written to the ``build`` subdirectory.
+To have the applications written to a different location,
+the ``O=/path/to/build/directory`` option may be specified in the make command.
+
+    .. code-block:: console
+
+       make O=/tmp
+
+To build the applications for debugging use the ``DEBUG`` option.
+This option adds some extra flags, disables compiler optimizations and
+sets verbose output.
+
+    .. code-block:: console
+
+       make DEBUG=1
+
+
+To compile a single application
+-------------------------------
+
+Set the path to DPDK source code:
+
+    .. code-block:: console
+
+        export RTE_SDK=/path/to/rte_sdk
+
+Go to DPDK source:
+
+    .. code-block:: console
+
+       cd $RTE_SDK
+
+Build DPDK:
+
+    .. code-block:: console
+
+        make defconfig
+        make
+
+Go to the sample application directory. Unless otherwise specified the sample
+applications are located in ``$RTE_SDK/examples/``.
+
+
+Build the application:
+
+    .. code-block:: console
+
+        export RTE_TARGET=build
+        make
diff --git a/doc/guides/sample_app_ug/dist_app.rst b/doc/guides/sample_app_ug/dist_app.rst
index 1cae473..466115d 100644
--- a/doc/guides/sample_app_ug/dist_app.rst
+++ b/doc/guides/sample_app_ug/dist_app.rst
@@ -53,30 +53,12 @@ generator as shown in the figure below.
 
    Performance Benchmarking Setup (Basic Environment)
 
-
 Compiling the Application
 -------------------------
 
-#.  Go to the sample application directory:
-
-    ..  code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/distributor
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    ..  code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the DPDK Getting Started Guide for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    ..  code-block:: console
+To compile the sample application see :ref:`sample_app_compilation`.
 
-        make
+The application is located in the ``distributor`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/ethtool.rst b/doc/guides/sample_app_ug/ethtool.rst
index 6779795..814d78b 100644
--- a/doc/guides/sample_app_ug/ethtool.rst
+++ b/doc/guides/sample_app_ug/ethtool.rst
@@ -40,28 +40,9 @@ is based upon a simple L2 frame reflector.
 Compiling the Application
 -------------------------
 
-To compile the application:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Go to the sample application directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/ethtool
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``ethtool`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/eventdev_pipeline_sw_pmd.rst b/doc/guides/sample_app_ug/eventdev_pipeline_sw_pmd.rst
index b1b18dd..c793886 100644
--- a/doc/guides/sample_app_ug/eventdev_pipeline_sw_pmd.rst
+++ b/doc/guides/sample_app_ug/eventdev_pipeline_sw_pmd.rst
@@ -46,28 +46,11 @@ a particular pipeline configuration.
 Compiling the Application
 -------------------------
 
-To compile the application:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Go to the sample application directory:
+The application is located in the ``examples`` sub-directory.
 
-    .. code-block:: console
 
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/eventdev_pipeline_sw_pmd
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/exception_path.rst b/doc/guides/sample_app_ug/exception_path.rst
index e505fb3..2dee8bf 100644
--- a/doc/guides/sample_app_ug/exception_path.rst
+++ b/doc/guides/sample_app_ug/exception_path.rst
@@ -58,28 +58,9 @@ To make throughput measurements, kernel bridges must be setup to forward data be
 Compiling the Application
 -------------------------
 
-#.  Go to example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/exception_path
-
-#.  Set the target (a default target will be used if not specified).
-    For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-This application is intended as a linuxapp only.
-See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``exception_path`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/hello_world.rst b/doc/guides/sample_app_ug/hello_world.rst
index f4753af..8196702 100644
--- a/doc/guides/sample_app_ug/hello_world.rst
+++ b/doc/guides/sample_app_ug/hello_world.rst
@@ -37,26 +37,9 @@ The application simply prints an "helloworld" message on every enabled lcore.
 Compiling the Application
 -------------------------
 
-#.  Go to the example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/helloworld
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started* Guide for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``helloworld`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/index.rst b/doc/guides/sample_app_ug/index.rst
index 069d4f1..4f8340a 100644
--- a/doc/guides/sample_app_ug/index.rst
+++ b/doc/guides/sample_app_ug/index.rst
@@ -36,6 +36,7 @@ Sample Applications User Guides
     :numbered:
 
     intro
+    compiling
     cmd_line
     ethtool
     exception_path
diff --git a/doc/guides/sample_app_ug/ip_frag.rst b/doc/guides/sample_app_ug/ip_frag.rst
index bd1fe2d..5686b35 100644
--- a/doc/guides/sample_app_ug/ip_frag.rst
+++ b/doc/guides/sample_app_ug/ip_frag.rst
@@ -59,31 +59,12 @@ Any unmatched packets are forwarded to the originating port.
 By default, input frame sizes up to 9.5 KB are supported.
 Before forwarding, the input IP packet is fragmented to fit into the "standard" Ethernet* v2 MTU (1500 bytes).
 
-Building the Application
-------------------------
+Compiling the Application
+-------------------------
 
-To build the application:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Go to the sample application directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/ip_fragmentation
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``ip_fragmentation`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/ip_reassembly.rst b/doc/guides/sample_app_ug/ip_reassembly.rst
index cc9e591..21d00fc 100644
--- a/doc/guides/sample_app_ug/ip_reassembly.rst
+++ b/doc/guides/sample_app_ug/ip_reassembly.rst
@@ -53,28 +53,14 @@ There are two key differences from the L2 Forwarding sample application:
 The Longest Prefix Match (LPM for IPv4, LPM6 for IPv6) table is used to store/lookup an outgoing port number, associated with that IPv4 address. Any unmatched packets are forwarded to the originating port.Compiling the Application
 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
-To compile the application:
 
-#.  Go to the sample application directory:
+Compiling the Application
+-------------------------
 
-   .. code-block:: console
+To compile the sample application see :ref:`sample_app_compilation`.
 
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/ip_reassembly
+The application is located in the ``ip_reassembly`` sub-directory.
 
-#.  Set the target (a default target is used if not specified). For example:
-
-   .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-   .. code-block:: console
-
-        make
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/ipsec_secgw.rst b/doc/guides/sample_app_ug/ipsec_secgw.rst
index b675cba..c6af171 100644
--- a/doc/guides/sample_app_ug/ipsec_secgw.rst
+++ b/doc/guides/sample_app_ug/ipsec_secgw.rst
@@ -83,27 +83,12 @@ Constraints
 *  Each SA must be handle by a unique lcore (*1 RX queue per port*).
 *  No chained mbufs.
 
-
 Compiling the Application
 -------------------------
 
-To compile the application:
-
-#. Go to the sample application directory::
-
-      export RTE_SDK=/path/to/rte_sdk
-      cd ${RTE_SDK}/examples/ipsec-secgw
-
-#. Set the target (a default target is used if not specified). For example::
-
-
-      export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-   See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#. Build the application::
+To compile the sample application see :ref:`sample_app_compilation`.
 
-       make
+The application is located in the ``rpsec-secgw`` sub-directory.
 
 #. [Optional] Build the application for debugging:
    This option adds some extra flags, disables compiler optimizations and
diff --git a/doc/guides/sample_app_ug/ipv4_multicast.rst b/doc/guides/sample_app_ug/ipv4_multicast.rst
index 49712a0..4896be3 100644
--- a/doc/guides/sample_app_ug/ipv4_multicast.rst
+++ b/doc/guides/sample_app_ug/ipv4_multicast.rst
@@ -63,37 +63,12 @@ with the mask of ports to multicast packets to.
 Also, the application does not consider the Ethernet addresses;
 it looks only at the IPv4 destination address for any given packet.
 
-Building the Application
-------------------------
+Compiling the Application
+-------------------------
 
-To compile the application:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Go to the sample application directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/ipv4_multicast
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
-
-.. note::
-
-    The compiled application is written to the build subdirectory.
-    To have the application written to a different location,
-    the O=/path/to/build/directory option may be specified in the make command.
+The application is located in the ``ipv4_multicast`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/keep_alive.rst b/doc/guides/sample_app_ug/keep_alive.rst
index fe90820..e58e40c 100644
--- a/doc/guides/sample_app_ug/keep_alive.rst
+++ b/doc/guides/sample_app_ug/keep_alive.rst
@@ -66,27 +66,9 @@ of the L2 forwarding application.
 Compiling the Application
 -------------------------
 
-To compile the application:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Go to the sample application directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk cd ${RTE_SDK}/examples/keep_alive
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``l2fwd_keep_alive`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/kernel_nic_interface.rst b/doc/guides/sample_app_ug/kernel_nic_interface.rst
index 619a7b5..c27af67 100644
--- a/doc/guides/sample_app_ug/kernel_nic_interface.rst
+++ b/doc/guides/sample_app_ug/kernel_nic_interface.rst
@@ -77,35 +77,17 @@ The packet flow through the Kernel NIC Interface application is as shown in the
 
    Kernel NIC Application Packet Flow
 
-
 Compiling the Application
 -------------------------
 
-Compile the application as follows:
-
-#.  Go to the example directory:
-
-    .. code-block:: console
+To compile the sample application see :ref:`sample_app_compilation`.
 
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/kni
+The application is located in the ``kni`` sub-directory.
 
-#.  Set the target (a default target is used if not specified)
-
-    .. note::
+.. note::
 
         This application is intended as a linuxapp only.
 
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
-
 Loading the Kernel Module
 -------------------------
 
diff --git a/doc/guides/sample_app_ug/l2_forward_cat.rst b/doc/guides/sample_app_ug/l2_forward_cat.rst
index b0c2e10..cf09b38 100644
--- a/doc/guides/sample_app_ug/l2_forward_cat.rst
+++ b/doc/guides/sample_app_ug/l2_forward_cat.rst
@@ -67,38 +67,28 @@ White paper demonstrating example use case:
 
 Compiling the Application
 -------------------------
+.. note::
 
-Requires ``libpqos`` from Intel's
-`intel-cmt-cat software package <https://github.com/01org/intel-cmt-cat>`_
-hosted on GitHub repository. For installation notes, please see ``README`` file.
+    Requires ``libpqos`` from Intel's
+    `intel-cmt-cat software package <https://github.com/01org/intel-cmt-cat>`_
+    hosted on GitHub repository. For installation notes, please see ``README`` file.
 
-GIT:
+    GIT:
 
-* https://github.com/01org/intel-cmt-cat
-
-To compile the application export the path to PQoS lib
-and the DPDK source tree and go to the example directory:
-
-.. code-block:: console
+    * https://github.com/01org/intel-cmt-cat
 
-    export PQOS_INSTALL_PATH=/path/to/libpqos
-    export RTE_SDK=/path/to/rte_sdk
 
-    cd ${RTE_SDK}/examples/l2fwd-cat
+#. To compile the application export the path to PQoS lib
+   and the DPDK source tree and go to the example directory:
 
-Set the target, for example:
+   .. code-block:: console
 
-.. code-block:: console
-
-    export RTE_TARGET=x86_64-native-linuxapp-gcc
+       export PQOS_INSTALL_PATH=/path/to/libpqos
 
-See the *DPDK Getting Started* Guide for possible ``RTE_TARGET`` values.
 
-Build the application as follows:
-
-.. code-block:: console
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    make
+The application is located in the ``l2fwd-cat`` sub-directory.
 
 
 Running the Application
diff --git a/doc/guides/sample_app_ug/l2_forward_crypto.rst b/doc/guides/sample_app_ug/l2_forward_crypto.rst
index 158f4b4..9dace20 100644
--- a/doc/guides/sample_app_ug/l2_forward_crypto.rst
+++ b/doc/guides/sample_app_ug/l2_forward_crypto.rst
@@ -55,26 +55,9 @@ Also, if MAC addresses updating is enabled, the MAC addresses are affected as fo
 Compiling the Application
 -------------------------
 
-#.  Go to the example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/l2fwd-crypto
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    *See the DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``l2fwd-crypt`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/l2_forward_job_stats.rst b/doc/guides/sample_app_ug/l2_forward_job_stats.rst
index 1029cc8..9aaf80a 100644
--- a/doc/guides/sample_app_ug/l2_forward_job_stats.rst
+++ b/doc/guides/sample_app_ug/l2_forward_job_stats.rst
@@ -97,26 +97,9 @@ in this case enabling a total of four Virtual Functions.
 Compiling the Application
 -------------------------
 
-#.  Go to the example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/l2fwd-jobstats
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    *See the DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``l2fwd-jobstats`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/l2_forward_real_virtual.rst b/doc/guides/sample_app_ug/l2_forward_real_virtual.rst
index f579c8f..ba64ea2 100644
--- a/doc/guides/sample_app_ug/l2_forward_real_virtual.rst
+++ b/doc/guides/sample_app_ug/l2_forward_real_virtual.rst
@@ -107,26 +107,9 @@ in this case enabling a total of four Virtual Functions.
 Compiling the Application
 -------------------------
 
-#.  Go to the example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/l2fwd
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    *See the DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``l2fwd`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/l3_forward.rst b/doc/guides/sample_app_ug/l3_forward.rst
index 6a6b8fb..1eb12c4 100644
--- a/doc/guides/sample_app_ug/l3_forward.rst
+++ b/doc/guides/sample_app_ug/l3_forward.rst
@@ -62,28 +62,9 @@ In the sample application, hash-based forwarding supports IPv4 and IPv6. LPM-bas
 Compiling the Application
 -------------------------
 
-To compile the application:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Go to the sample application directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/l3fwd
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``l3fwd`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/l3_forward_access_ctrl.rst b/doc/guides/sample_app_ug/l3_forward_access_ctrl.rst
index a6aa4fb..cf71a6c 100644
--- a/doc/guides/sample_app_ug/l3_forward_access_ctrl.rst
+++ b/doc/guides/sample_app_ug/l3_forward_access_ctrl.rst
@@ -252,28 +252,9 @@ Once the application starts, it transitions through three phases:
 Compiling the Application
 -------------------------
 
-To compile the application:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Go to the sample application directory:
-
-    ..  code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/l3fwd-acl
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    ..  code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK IPL Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    ..  code-block:: console
-
-        make
+The application is located in the ``l3fwd-acl`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/l3_forward_power_man.rst b/doc/guides/sample_app_ug/l3_forward_power_man.rst
index ea9c404..271ee04 100644
--- a/doc/guides/sample_app_ug/l3_forward_power_man.rst
+++ b/doc/guides/sample_app_ug/l3_forward_power_man.rst
@@ -104,28 +104,9 @@ instead of always running to the C0 state waiting for packets.
 Compiling the Application
 -------------------------
 
-To compile the application:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Go to the sample application directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/l3fwd-power
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``l3fwd-power`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/l3_forward_virtual.rst b/doc/guides/sample_app_ug/l3_forward_virtual.rst
index 5f9d894..e96f79e 100644
--- a/doc/guides/sample_app_ug/l3_forward_virtual.rst
+++ b/doc/guides/sample_app_ug/l3_forward_virtual.rst
@@ -64,34 +64,9 @@ The set of LPM rules used by the application is statically configured and loaded
 Compiling the Application
 -------------------------
 
-To compile the application:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Go to the sample application directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/l3fwd-vf
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
-
-.. note::
-
-    The compiled application is written to the build subdirectory.
-    To have the application written to a different location,
-    the O=/path/to/build/directory option may be specified in the make command.
+The application is located in the ``l3fwd-vf`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/link_status_intr.rst b/doc/guides/sample_app_ug/link_status_intr.rst
index f9af474..d073e71 100644
--- a/doc/guides/sample_app_ug/link_status_intr.rst
+++ b/doc/guides/sample_app_ug/link_status_intr.rst
@@ -55,32 +55,9 @@ and the behavior of L2 forwarding each time the link status changes.
 Compiling the Application
 -------------------------
 
-#.  Go to the example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/link_status_interrupt
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
-
-.. note::
-
-    The compiled application is written to the build subdirectory.
-    To have the application written to a different location,
-    the O=/path/to/build/directory option may be specified on the make command line.
+The application is located in the ``link_status_interrupt`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/load_balancer.rst b/doc/guides/sample_app_ug/load_balancer.rst
index e101a5f..925ba5d 100644
--- a/doc/guides/sample_app_ug/load_balancer.rst
+++ b/doc/guides/sample_app_ug/load_balancer.rst
@@ -86,24 +86,9 @@ The routing logic is LPM based, with all the worker threads sharing the same LPM
 Compiling the Application
 -------------------------
 
-The sequence of steps used to build the application is:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Export the required environment variables:
-
-    .. code-block:: console
-
-        export RTE_SDK=<Path to the DPDK installation folder>
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-#.  Build the application executable file:
-
-    .. code-block:: console
-
-        cd ${RTE_SDK}/examples/load_balancer
-        make
-
-    For more details on how to build the DPDK libraries and sample applications,
-    please refer to the *DPDK Getting Started Guide.*
+The application is located in the ``load_balancer`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/multi_process.rst b/doc/guides/sample_app_ug/multi_process.rst
index d4df2fa..4b6df70 100644
--- a/doc/guides/sample_app_ug/multi_process.rst
+++ b/doc/guides/sample_app_ug/multi_process.rst
@@ -40,31 +40,13 @@ Example Applications
 
 Building the Sample Applications
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
 The multi-process example applications are built in the same way as other sample applications,
 and as documented in the *DPDK Getting Started Guide*.
-To build all the example applications:
-
-#.  Set RTE_SDK and go to the example directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/multi_process
-
-#.  Set the target (a default target will be used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
 
-#.  Build the applications:
 
-    .. code-block:: console
+To compile the sample application see :ref:`sample_app_compilation`.
 
-        make
+The applications are located in the ``multi_process`` sub-directory.
 
 .. note::
 
diff --git a/doc/guides/sample_app_ug/netmap_compatibility.rst b/doc/guides/sample_app_ug/netmap_compatibility.rst
index 030fd98..0ff5059 100644
--- a/doc/guides/sample_app_ug/netmap_compatibility.rst
+++ b/doc/guides/sample_app_ug/netmap_compatibility.rst
@@ -121,29 +121,12 @@ The bridge application is an example largely based on the bridge example shipped
 It shows how a minimal Netmap application with minimal and straightforward source code changes can be run on top of the DPDK.
 Please refer to ``$RTE_SDK/examples/netmap_compat/bridge/bridge.c`` for an example of a ported application.
 
-Compiling the "bridge" Sample Application
------------------------------------------
+Compiling the Application
+-------------------------
 
-#.  Go to the example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/netmap_compat
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide for Linux* for possible ``RTE_TARGET`` values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``netmap_compat`` sub-directory.
 
 Running the "bridge" Sample Application
 ---------------------------------------
diff --git a/doc/guides/sample_app_ug/packet_ordering.rst b/doc/guides/sample_app_ug/packet_ordering.rst
index ef85150..3c6eb35 100644
--- a/doc/guides/sample_app_ug/packet_ordering.rst
+++ b/doc/guides/sample_app_ug/packet_ordering.rst
@@ -51,28 +51,11 @@ The application uses at least three CPU cores:
   from the reorder buffer and sends them to the NIC ports for transmission.
 
 Compiling the Application
---------------------------
+-------------------------
 
-#.  Go to the example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/helloworld
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started* Guide for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``packet_ordering`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/performance_thread.rst b/doc/guides/sample_app_ug/performance_thread.rst
index a55a624..c718ce6 100644
--- a/doc/guides/sample_app_ug/performance_thread.rst
+++ b/doc/guides/sample_app_ug/performance_thread.rst
@@ -73,28 +73,10 @@ invalid.
 
 Compiling the Application
 -------------------------
-The application is located in the sample application folder in the
-``performance-thread`` folder.
 
-#.  Go to the example applications folder
-
-    .. code-block:: console
-
-       export RTE_SDK=/path/to/rte_sdk
-       cd ${RTE_SDK}/examples/performance-thread/l3fwd-thread
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-       export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Linux Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-        make
+To compile the sample application see :ref:`sample_app_compilation`.
 
+The application is located in the `performance-thread/l3fwd-thread` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/ptpclient.rst b/doc/guides/sample_app_ug/ptpclient.rst
index d3ef1d1..b456e33 100644
--- a/doc/guides/sample_app_ug/ptpclient.rst
+++ b/doc/guides/sample_app_ug/ptpclient.rst
@@ -78,39 +78,20 @@ The adjustment for slave can be represented as:
 If the command line parameter ``-T 1`` is used the application also
 synchronizes the PTP PHC clock with the Linux kernel clock.
 
-
 Compiling the Application
 -------------------------
 
-To compile the application, export the path to the DPDK source tree and edit
-the ``config/common_linuxapp`` configuration file to enable IEEE1588:
-
-.. code-block:: console
-
-    export RTE_SDK=/path/to/rte_sdk
-
-    # Edit  common_linuxapp and set the following options:
-    CONFIG_RTE_LIBRTE_IEEE1588=y
-
-Set the target, for example:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-.. code-block:: console
-
-    export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-See the *DPDK Getting Started* Guide for possible ``RTE_TARGET`` values.
-
-Build the application as follows:
-
-.. code-block:: console
+The application is located in the ``ptpclient`` sub-directory.
 
-    # Recompile DPDK.
-    make install T=$RTE_TARGET
+.. note::
+   To compile the application edit the ``config/common_linuxapp`` configuration file to enable IEEE1588
+   and then recompile DPDK:
 
-    # Compile the application.
-    cd ${RTE_SDK}/examples/ptpclient
-    make
+   .. code-block:: console
 
+      CONFIG_RTE_LIBRTE_IEEE1588=y
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/qos_metering.rst b/doc/guides/sample_app_ug/qos_metering.rst
index e1a6ac7..c6a9d72 100644
--- a/doc/guides/sample_app_ug/qos_metering.rst
+++ b/doc/guides/sample_app_ug/qos_metering.rst
@@ -64,29 +64,9 @@ all the incoming packets are colored as green.
 Compiling the Application
 -------------------------
 
-#.  Go to the example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/qos_meter
-
-#.  Set the target
-    (a default target is used if not specified):
-
-    .. note::
-
-        This application is intended as a linuxapp only.
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``qos_meter`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/qos_scheduler.rst b/doc/guides/sample_app_ug/qos_scheduler.rst
index a6654cb..e618e2a 100644
--- a/doc/guides/sample_app_ug/qos_scheduler.rst
+++ b/doc/guides/sample_app_ug/qos_scheduler.rst
@@ -58,31 +58,14 @@ The TX thread, if present, reads from the TX ring and write the packets to the T
 Compiling the Application
 -------------------------
 
-To compile the application:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Go to the sample application directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/qos_sched
-
-#.  Set the target (a default target is used if not specified). For example:
+The application is located in the ``qos_sched`` sub-directory.
 
     .. note::
 
         This application is intended as a linuxapp only.
 
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
-
 .. note::
 
     To get statistics on the sample app using the command line interface as described in the next section,
diff --git a/doc/guides/sample_app_ug/quota_watermark.rst b/doc/guides/sample_app_ug/quota_watermark.rst
index 2c3a432..c185147 100644
--- a/doc/guides/sample_app_ug/quota_watermark.rst
+++ b/doc/guides/sample_app_ug/quota_watermark.rst
@@ -88,30 +88,12 @@ as shown in :numref:`figure_ring_pipeline_perf_setup`.
 
    Ring-based Processing Pipeline Performance Setup
 
-
 Compiling the Application
 -------------------------
 
-#.  Go to the example directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/quota_watermark
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
+To compile the sample application see :ref:`sample_app_compilation`.
 
-        make
+The application is located in the ``quota_watermark`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/rxtx_callbacks.rst b/doc/guides/sample_app_ug/rxtx_callbacks.rst
index 8d1bb86..4feb19b 100644
--- a/doc/guides/sample_app_ug/rxtx_callbacks.rst
+++ b/doc/guides/sample_app_ug/rxtx_callbacks.rst
@@ -45,23 +45,9 @@ prior to transmission to calculate the elapsed time, in CPU cycles.
 Compiling the Application
 -------------------------
 
-To compile the application export the path to the DPDK source tree and go to
-the example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-.. code-block:: console
-
-    export RTE_SDK=/path/to/rte_sdk
-
-    cd ${RTE_SDK}/examples/rxtx_callbacks
-
-
-Set the target, for example:
-
-.. code-block:: console
-
-    export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-See the *DPDK Getting Started* Guide for possible ``RTE_TARGET`` values.
+The application is located in the ``rxtx_callbacks`` sub-directory.
 
 The callbacks feature requires that the ``CONFIG_RTE_ETHDEV_RXTX_CALLBACKS``
 setting is on in the ``config/common_`` config file that applies to the
@@ -71,13 +57,6 @@ target. This is generally on by default:
 
     CONFIG_RTE_ETHDEV_RXTX_CALLBACKS=y
 
-Build the application as follows:
-
-.. code-block:: console
-
-    make
-
-
 Running the Application
 -----------------------
 
diff --git a/doc/guides/sample_app_ug/server_node_efd.rst b/doc/guides/sample_app_ug/server_node_efd.rst
index c2a5f20..ee7d460 100644
--- a/doc/guides/sample_app_ug/server_node_efd.rst
+++ b/doc/guides/sample_app_ug/server_node_efd.rst
@@ -108,26 +108,9 @@ that this is a new flow, which is dropped.
 Compiling the Application
 -------------------------
 
-The sequence of steps used to build the application is:
-
-#.  Export the required environment variables:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-#.  Build the application executable file:
-
-    .. code-block:: console
-
-        cd ${RTE_SDK}/examples/server_node_efd/
-        make
-
-    For more details on how to build the DPDK libraries and sample
-    applications,
-    please refer to the *DPDK Getting Started Guide.*
+To compile the sample application see :ref:`sample_app_compilation`.
 
+The application is located in the ``server_node_efd`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/skeleton.rst b/doc/guides/sample_app_ug/skeleton.rst
index c39b033..4eb65af 100644
--- a/doc/guides/sample_app_ug/skeleton.rst
+++ b/doc/guides/sample_app_ug/skeleton.rst
@@ -39,33 +39,12 @@ It is intended as a demonstration of the basic components of a DPDK forwarding
 application. For more detailed implementations see the L2 and L3 forwarding
 sample applications.
 
-
 Compiling the Application
 -------------------------
 
-To compile the application export the path to the DPDK source tree and go to
-the example directory:
-
-.. code-block:: console
-
-    export RTE_SDK=/path/to/rte_sdk
-
-    cd ${RTE_SDK}/examples/skeleton
-
-Set the target, for example:
-
-.. code-block:: console
-
-    export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-See the *DPDK Getting Started* Guide for possible ``RTE_TARGET`` values.
-
-Build the application as follows:
-
-.. code-block:: console
-
-    make
+To compile the sample application see :ref:`sample_app_compilation`.
 
+The application is located in the ``skeleton`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/tep_termination.rst b/doc/guides/sample_app_ug/tep_termination.rst
index 087823b..dccb352 100644
--- a/doc/guides/sample_app_ug/tep_termination.rst
+++ b/doc/guides/sample_app_ug/tep_termination.rst
@@ -121,39 +121,16 @@ The example in this section have been validated with the following distributions
 
 Compiling the Sample Code
 -------------------------
-#.  Compile vhost lib:
 
-    To enable vhost, turn on vhost library in the configure file config/common_linuxapp.
+To enable vhost, turn on vhost library in the configure file
+``config/common_linuxapp``.
 
     .. code-block:: console
 
         CONFIG_RTE_LIBRTE_VHOST=y
 
-
-#.  Go to the examples directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/tep_termination
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the DPDK Getting Started Guide for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        cd ${RTE_SDK}
-        make config ${RTE_TARGET}
-        make install ${RTE_TARGET}
-        cd ${RTE_SDK}/examples/tep_termination
-        make
+Then following the to compile the sample application shown in
+:ref:`sample_app_compilation`.
 
 Running the Sample Code
 -----------------------
diff --git a/doc/guides/sample_app_ug/test_pipeline.rst b/doc/guides/sample_app_ug/test_pipeline.rst
index 95c7e0f..4aca2be 100644
--- a/doc/guides/sample_app_ug/test_pipeline.rst
+++ b/doc/guides/sample_app_ug/test_pipeline.rst
@@ -55,28 +55,12 @@ The application uses three CPU cores:
 
    Test Pipeline Application
 
-
 Compiling the Application
 -------------------------
+To compile the sample application see :ref:`sample_app_compilation`
 
-#.  Go to the app/test directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/app/test/test-pipeline
-
-#.  Set the target (a default target is used if not specified):
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-#.  Build the application:
-
-    .. code-block:: console
+The application is located in the ``$RTE_SDK/test/test-pipline`` directory.
 
-        make
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/timer.rst b/doc/guides/sample_app_ug/timer.rst
index 00b6953..e9df6f0 100644
--- a/doc/guides/sample_app_ug/timer.rst
+++ b/doc/guides/sample_app_ug/timer.rst
@@ -37,26 +37,9 @@ This application prints some messages from different lcores regularly, demonstra
 Compiling the Application
 -------------------------
 
-#.  Go to the example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/timer
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide* for possible *RTE_TARGET* values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``timer`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/vhost.rst b/doc/guides/sample_app_ug/vhost.rst
index a2a3909..0b57261 100644
--- a/doc/guides/sample_app_ug/vhost.rst
+++ b/doc/guides/sample_app_ug/vhost.rst
@@ -55,20 +55,12 @@ puts back to the same physical NIC port.
 Build
 ~~~~~
 
-Follow the *Getting Started Guide for Linux* on generic info about
-environment setup and building DPDK from source.
+To compile the sample application see :ref:`sample_app_compilation`.
 
-In this example, you need build DPDK both on the host and inside guest.
-Also, you need build this example.
-
-.. code-block:: console
-
-    export RTE_SDK=/path/to/dpdk_source
-    export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    cd ${RTE_SDK}/examples/vhost
-    make
+The application is located in the ``vhost`` sub-directory.
 
+.. note::
+   In this example, you need build DPDK both on the host and inside guest.
 
 Start the vswitch example
 ~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/doc/guides/sample_app_ug/vhost_scsi.rst b/doc/guides/sample_app_ug/vhost_scsi.rst
index 8be069e..df4be22 100644
--- a/doc/guides/sample_app_ug/vhost_scsi.rst
+++ b/doc/guides/sample_app_ug/vhost_scsi.rst
@@ -51,23 +51,14 @@ Testing steps
 This section shows the steps how to start a VM with the block device as
 fast data path for critical application.
 
-Build
-~~~~~
+Compiling the Application
+-------------------------
 
-Follow the *Getting Started Guide for Linux* on generic info about
-environment setup and building DPDK from source.
+To compile the sample application see :ref:`sample_app_compilation`.
 
-In this example, you need build DPDK both on the host and inside guest.
-Also, you need build this example.
-
-.. code-block:: console
-
-    export RTE_SDK=/path/to/dpdk_source
-    export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    cd ${RTE_SDK}/examples/vhost_scsi
-    make
+The application is located in the ``examples`` sub-directory.
 
+You will also need to build DPDK both on the host and inside the guest
 
 Start the vhost_scsi example
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/doc/guides/sample_app_ug/vm_power_management.rst b/doc/guides/sample_app_ug/vm_power_management.rst
index 05c26b0..dc51476 100644
--- a/doc/guides/sample_app_ug/vm_power_management.rst
+++ b/doc/guides/sample_app_ug/vm_power_management.rst
@@ -201,9 +201,12 @@ Compiling and Running the Host Application
 Compiling
 ~~~~~~~~~
 
-#. export RTE_SDK=/path/to/rte_sdk
-#. cd ${RTE_SDK}/examples/vm_power_manager
-#. make
+Compiling the Application
+-------------------------
+
+To compile the sample application see :ref:`sample_app_compilation`.
+
+The application is located in the ``vm_power_manager`` sub-directory.
 
 Running
 ~~~~~~~
diff --git a/doc/guides/sample_app_ug/vmdq_dcb_forwarding.rst b/doc/guides/sample_app_ug/vmdq_dcb_forwarding.rst
index 70e1d19..3d2abb8 100644
--- a/doc/guides/sample_app_ug/vmdq_dcb_forwarding.rst
+++ b/doc/guides/sample_app_ug/vmdq_dcb_forwarding.rst
@@ -86,26 +86,11 @@ No command-line options are taken by this application apart from the standard EA
 Compiling the Application
 -------------------------
 
-#.  Go to the examples directory:
 
-    .. code-block:: console
 
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/vmdq_dcb
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``vmdq_dcb`` sub-directory.
 
 Running the Application
 -----------------------
-- 
2.5.5

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [dpdk-dev] [PATCH v7 2/2] doc: add new introduction to sample app guides
  2017-10-16 14:50       ` [dpdk-dev] [PATCH v7 1/2] doc: add generic compilation doc for all sample apps Marko Kovacevic
@ 2017-10-16 14:50         ` Marko Kovacevic
  2017-10-16 18:53           ` Mcnamara, John
  2017-10-18  9:28           ` [dpdk-dev] [PATCH v8 1/2] doc: add generic compilation doc for all sample apps Marko Kovacevic
  0 siblings, 2 replies; 18+ messages in thread
From: Marko Kovacevic @ 2017-10-16 14:50 UTC (permalink / raw)
  To: john.mcnamara; +Cc: dev, marko.kovacevic

Add new Introduction Section into the sample app guides.

Signed-off-by: Marko Kovacevic <marko.kovacevic@intel.com>

---

V7:
    removed :ref: targets. (Thomas)

 doc/guides/faq/faq.rst                             |   2 +-
 doc/guides/sample_app_ug/dist_app.rst              |   1 +
 doc/guides/sample_app_ug/exception_path.rst        |   2 +-
 doc/guides/sample_app_ug/hello_world.rst           |   1 +
 doc/guides/sample_app_ug/index.rst                 |   2 +
 doc/guides/sample_app_ug/intro.rst                 | 153 +++++++++++++++------
 doc/guides/sample_app_ug/ipsec_secgw.rst           |   1 +
 .../sample_app_ug/l2_forward_real_virtual.rst      |   1 -
 doc/guides/sample_app_ug/l3_forward.rst            |   1 +
 doc/guides/sample_app_ug/multi_process.rst         |   1 -
 doc/guides/sample_app_ug/qos_scheduler.rst         |   1 +
 doc/guides/sample_app_ug/server_node_efd.rst       |   2 +-
 12 files changed, 123 insertions(+), 45 deletions(-)

diff --git a/doc/guides/faq/faq.rst b/doc/guides/faq/faq.rst
index dac8050..da9b484 100644
--- a/doc/guides/faq/faq.rst
+++ b/doc/guides/faq/faq.rst
@@ -221,7 +221,7 @@ I350 has RSS support and 8 queue pairs can be used in RSS mode. It should work w
 How can hugepage-backed memory be shared among multiple processes?
 ------------------------------------------------------------------
 
-See the Primary and Secondary examples in the :ref:`multi-process sample application <multi_process_app>`.
+See the Primary and Secondary examples in the :ref:`multi-process sample application <sample_app_multi_process_app>`.
 
 
 Why can't my application receive packets on my system with UEFI Secure Boot enabled?
diff --git a/doc/guides/sample_app_ug/dist_app.rst b/doc/guides/sample_app_ug/dist_app.rst
index 466115d..f705d9e 100644
--- a/doc/guides/sample_app_ug/dist_app.rst
+++ b/doc/guides/sample_app_ug/dist_app.rst
@@ -28,6 +28,7 @@
     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+
 Distributor Sample Application
 ==============================
 
diff --git a/doc/guides/sample_app_ug/exception_path.rst b/doc/guides/sample_app_ug/exception_path.rst
index 2dee8bf..40e5b5c 100644
--- a/doc/guides/sample_app_ug/exception_path.rst
+++ b/doc/guides/sample_app_ug/exception_path.rst
@@ -115,7 +115,7 @@ The following sections provide some explanation of the code.
 Initialization
 ~~~~~~~~~~~~~~
 
-Setup of the mbuf pool, driver and queues is similar to the setup done in the :ref:`l2_fwd_app_real_and_virtual`.
+Setup of the mbuf pool, driver and queues is similar to the setup done in the :ref:`sample_app_l2_fwd`.
 In addition, the TAP interfaces must also be created.
 A TAP interface is created for each lcore that is being used.
 The code for creating the TAP interface is as follows:
diff --git a/doc/guides/sample_app_ug/hello_world.rst b/doc/guides/sample_app_ug/hello_world.rst
index 8196702..9ef7e25 100644
--- a/doc/guides/sample_app_ug/hello_world.rst
+++ b/doc/guides/sample_app_ug/hello_world.rst
@@ -28,6 +28,7 @@
     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+
 Hello World Sample Application
 ==============================
 
diff --git a/doc/guides/sample_app_ug/index.rst b/doc/guides/sample_app_ug/index.rst
index 4f8340a..163b468 100644
--- a/doc/guides/sample_app_ug/index.rst
+++ b/doc/guides/sample_app_ug/index.rst
@@ -1,4 +1,5 @@
 ..  BSD LICENSE
+
     Copyright(c) 2010-2015 Intel Corporation. All rights reserved.
     All rights reserved.
 
@@ -28,6 +29,7 @@
     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+
 Sample Applications User Guides
 ===============================
 
diff --git a/doc/guides/sample_app_ug/intro.rst b/doc/guides/sample_app_ug/intro.rst
index d3f261b..ae12503 100644
--- a/doc/guides/sample_app_ug/intro.rst
+++ b/doc/guides/sample_app_ug/intro.rst
@@ -1,5 +1,5 @@
 ..  BSD LICENSE
-    Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
+    Copyright(c) 2010-2017 Intel Corporation. All rights reserved.
     All rights reserved.
 
     Redistribution and use in source and binary forms, with or without
@@ -28,42 +28,115 @@
     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-Introduction
-============
-
-This document describes the sample applications that are included in the Data Plane Development Kit (DPDK).
-Each chapter describes a sample application that showcases specific functionality and
-provides instructions on how to compile, run and use the sample application.
-
-Documentation Roadmap
----------------------
-
-The following is a list of DPDK documents in suggested reading order:
-
-*   **Release Notes** : Provides release-specific information, including supported features,
-    limitations, fixed issues, known issues and so on.
-    Also, provides the answers to frequently asked questions in FAQ format.
-
-*   **Getting Started Guides** : Describes how to install and
-    configure the DPDK software for your operating system;
-    designed to get users up and running quickly with the software.
-
-*   **Programmer's Guide:**  Describes:
-
-    *   The software architecture and how to use it (through examples),
-        specifically in a Linux* application (linuxapp) environment.
-
-    *   The content of the DPDK, the build system
-        (including the commands that can be used in the root DPDK Makefile to build the development kit and an application)
- 	and guidelines for porting an application.
-
-    *   Optimizations used in the software and those that should be considered for new development
-
-A glossary of terms is also provided.
-
-*   **API Reference**  : Provides detailed information about DPDK functions,
-    data structures and other programming constructs.
-
-*   **Sample Applications User Guide**  : Describes a set of sample applications.
-    Each chapter describes a sample application that showcases specific functionality and
-    provides instructions on how to compile, run and use the sample application.
+Introduction to the DPDK Sample Applications
+============================================
+
+The DPDK Sample Applications are small standalone applications which
+demonstrate various features of DPDK. They can be considered as a cookbook of
+DPDK features.  Users interested in getting started with DPDK can take the
+applications, try out the features, and then extend them to fit their needs.
+
+
+The DPDK Sample Applications
+----------------------------
+
+Table :numref:`table_sample_apps` shows a list of some of the main sample
+applications that are available in the examples directory of DPDK:
+
+ .. _table_sample_apps:
+
+ .. table:: **Some of the DPDK Sample applications**
+
+    +---------------------------------------+--------------------------------------+
+    | Bonding                               | Netmap Compatibility                 |
+    +---------------------------------------+--------------------------------------+
+    | Command Line                          | Packet Ordering                      |
+    +---------------------------------------+--------------------------------------+
+    | Distributor                           | Performance Thread                   |
+    +---------------------------------------+--------------------------------------+
+    | Ethtool                               | Precision Time Protocol (PTP) Client |
+    +---------------------------------------+--------------------------------------+
+    | Exception Path                        | Quality of Service (QoS) Metering    |
+    +---------------------------------------+--------------------------------------+
+    | Hello World                           | QoS Scheduler                        |
+    +---------------------------------------+--------------------------------------+
+    | Internet Protocol (IP) Fragmentation  | Quota and Watermark                  |
+    +---------------------------------------+--------------------------------------+
+    | IP Pipeline                           | RX/TX Callbacks                      |
+    +---------------------------------------+--------------------------------------+
+    | IP Reassembly                         | Server node EFD                      |
+    +---------------------------------------+--------------------------------------+
+    | IPsec Security Gateway                | Basic Forwarding/Skeleton App        |
+    +---------------------------------------+--------------------------------------+
+    | IPv4 multicast                        | Tunnel End Point (TEP) termination   |
+    +---------------------------------------+--------------------------------------+
+    | Kernel NIC Interface                  | Timer                                |
+    +---------------------------------------+--------------------------------------+
+    | Network Layer 2 Forwarding + variants | Vhost                                |
+    +---------------------------------------+--------------------------------------+
+    | Network Layer 3 Forwarding + variants | Vhost Xen                            |
+    +---------------------------------------+--------------------------------------+
+    | Link Status Interrupt                 | VMDQ Forwarding                      |
+    +---------------------------------------+--------------------------------------+
+    | Load Balancer                         | VMDQ and DCB Forwarding              |
+    +---------------------------------------+--------------------------------------+
+    | Multi-process                         | VM Power Management                  |
+    +---------------------------------------+--------------------------------------+
+
+These examples range from simple to reasonably complex but most are designed
+to demonstrate one particular feature of DPDK. Some of the more interesting
+examples are highlighted below.
+
+
+* :doc:`Hello World<hello_world>`: As with most introductions to a
+  programming framework a good place to start is with the Hello World
+  application. The Hello World example sets up the DPDK Environment Abstraction
+  Layer (EAL), and prints a simple "Hello World" message to each of the DPDK
+  enabled cores. This application doesn't do any packet forwarding but it is a
+  good way to test if the DPDK environment is compiled and set up properly.
+
+* :doc:`Basic Forwarding/Skeleton Application<skeleton>`: The Basic
+  Forwarding/Skeleton contains the minimum amount of code required to enable
+  basic packet forwarding with DPDK. This allows you to test if your network
+  interfaces are working with DPDK.
+
+* :doc:`Network Layer 2 forwarding<l2_forward_real_virtual>`: The Network Layer 2
+  forwarding, or ``l2fwd`` application does forwarding based on Ethernet MAC
+  addresses like a simple switch.
+
+* :doc:`Network Layer 3 forwarding<l3_forward>`: The Network Layer3
+  forwarding, or ``l3fwd`` application does forwarding based on Internet
+  Protocol, IPv4 or IPv6 like a simple router.
+
+* :doc:`Packet Distributor<dist_app>`: The Packet Distributor
+  demonstrates how to distribute packets arriving on an Rx port to different
+  cores for processing and transmission.
+
+* :doc:`Multi-Process Application<multi_process>`: The
+  multi-process application shows how two DPDK processes can work together using
+  queues and memory pools to share information.
+
+* :doc:`RX/TX callbacks Application<rxtx_callbacks>`: The RX/TX
+  callbacks sample application is a packet forwarding application that
+  demonstrates the use of user defined callbacks on received and transmitted
+  packets. The application calculates the latency of a packet between RX
+  (packet arrival) and TX (packet transmission) by adding callbacks to the RX
+  and TX packet processing functions.
+
+* :doc:`IPSec Security Gateway<ipsec_secgw>`: The IPSec Security
+  Gateway application is minimal example of something closer to a real world
+  example. This is also a good example of an application using the DPDK
+  Cryptodev framework.
+
+* :doc:`Precision Time Protocol (PTP) client<ptpclient>`: The PTP
+  client is another minimal implementation of a real world application.
+  In this case the application is a PTP client that communicates with a PTP
+  master clock to synchronize time on a Network Interface Card (NIC) using the
+  IEEE1588 protocol.
+
+* :doc:`Quality of Service (QoS) Scheduler<qos_scheduler>`: The QoS
+  Scheduler application demonstrates the use of DPDK to provide QoS scheduling.
+
+There are many more examples shown in the following chapters. Each of the
+documented sample applications show how to compile, configure and run the
+application as well as explaining the main functionality of the code.
diff --git a/doc/guides/sample_app_ug/ipsec_secgw.rst b/doc/guides/sample_app_ug/ipsec_secgw.rst
index c6af171..7f4b75d 100644
--- a/doc/guides/sample_app_ug/ipsec_secgw.rst
+++ b/doc/guides/sample_app_ug/ipsec_secgw.rst
@@ -28,6 +28,7 @@
     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+
 IPsec Security Gateway Sample Application
 =========================================
 
diff --git a/doc/guides/sample_app_ug/l2_forward_real_virtual.rst b/doc/guides/sample_app_ug/l2_forward_real_virtual.rst
index ba64ea2..193d8b3 100644
--- a/doc/guides/sample_app_ug/l2_forward_real_virtual.rst
+++ b/doc/guides/sample_app_ug/l2_forward_real_virtual.rst
@@ -28,7 +28,6 @@
     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-.. _l2_fwd_app_real_and_virtual:
 
 L2 Forwarding Sample Application (in Real and Virtualized Environments)
 =======================================================================
diff --git a/doc/guides/sample_app_ug/l3_forward.rst b/doc/guides/sample_app_ug/l3_forward.rst
index 1eb12c4..6a01340 100644
--- a/doc/guides/sample_app_ug/l3_forward.rst
+++ b/doc/guides/sample_app_ug/l3_forward.rst
@@ -28,6 +28,7 @@
     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+
 L3 Forwarding Sample Application
 ================================
 
diff --git a/doc/guides/sample_app_ug/multi_process.rst b/doc/guides/sample_app_ug/multi_process.rst
index 4b6df70..04b3f17 100644
--- a/doc/guides/sample_app_ug/multi_process.rst
+++ b/doc/guides/sample_app_ug/multi_process.rst
@@ -28,7 +28,6 @@
     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-.. _multi_process_app:
 
 Multi-process Sample Application
 ================================
diff --git a/doc/guides/sample_app_ug/qos_scheduler.rst b/doc/guides/sample_app_ug/qos_scheduler.rst
index e618e2a..c0a9045 100644
--- a/doc/guides/sample_app_ug/qos_scheduler.rst
+++ b/doc/guides/sample_app_ug/qos_scheduler.rst
@@ -28,6 +28,7 @@
     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+
 QoS Scheduler Sample Application
 ================================
 
diff --git a/doc/guides/sample_app_ug/server_node_efd.rst b/doc/guides/sample_app_ug/server_node_efd.rst
index ee7d460..facdd28 100644
--- a/doc/guides/sample_app_ug/server_node_efd.rst
+++ b/doc/guides/sample_app_ug/server_node_efd.rst
@@ -36,7 +36,7 @@ load balancer, for more information about the EFD Library please refer to the
 DPDK programmer's guide.
 
 This sample application is a variant of the
-:ref:`client-server sample application <multi_process_app>`
+:ref:`client-server sample application <sample_app_multi_process_app>`
 where a specific target node is specified for every and each flow
 (not in a round-robin fashion as the original load balancing sample application).
 
-- 
2.5.5

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [dpdk-dev] [PATCH v7 2/2] doc: add new introduction to sample app guides
  2017-10-16 14:50         ` [dpdk-dev] [PATCH v7 2/2] doc: add new introduction to sample app guides Marko Kovacevic
@ 2017-10-16 18:53           ` Mcnamara, John
  2017-10-18  9:28           ` [dpdk-dev] [PATCH v8 1/2] doc: add generic compilation doc for all sample apps Marko Kovacevic
  1 sibling, 0 replies; 18+ messages in thread
From: Mcnamara, John @ 2017-10-16 18:53 UTC (permalink / raw)
  To: Kovacevic, Marko; +Cc: dev



> -----Original Message-----
> From: Kovacevic, Marko
> Sent: Monday, October 16, 2017 3:51 PM
> To: Mcnamara, John <john.mcnamara@intel.com>
> Cc: dev@dpdk.org; Kovacevic, Marko <marko.kovacevic@intel.com>
> Subject: [PATCH v7 2/2] doc: add new introduction to sample app guides
> 
> Add new Introduction Section into the sample app guides.
> 
> Signed-off-by: Marko Kovacevic <marko.kovacevic@intel.com>
> 
> ---
> 

Hi Marko,

There are some doc build issues with missing targets. 

$ make doc-guides-html  -j
sphinx processing guides-html...

doc/guides/faq/faq.rst:224: WARNING: undefined label: 
sample_app_multi_process_app (if the link has no caption the label must precede a section header)

doc/guides/sample_app_ug/exception_path.rst:118: WARNING: undefined label: 
sample_app_l2_fwd (if the link has no caption the label must precede a section header)

doc/guides/sample_app_ug/server_node_efd.rst:38: WARNING: undefined label: 
sample_app_multi_process_app (if the link has no caption the label must precede a section header)


Also some of the files extraneous added blank lines.

John

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [dpdk-dev] [PATCH v8 1/2] doc: add generic compilation doc for all sample apps
  2017-10-16 14:50         ` [dpdk-dev] [PATCH v7 2/2] doc: add new introduction to sample app guides Marko Kovacevic
  2017-10-16 18:53           ` Mcnamara, John
@ 2017-10-18  9:28           ` Marko Kovacevic
  2017-10-18  9:28             ` [dpdk-dev] [PATCH v8 2/2] doc: add new introduction to sample app guides Marko Kovacevic
  1 sibling, 1 reply; 18+ messages in thread
From: Marko Kovacevic @ 2017-10-18  9:28 UTC (permalink / raw)
  To: john.mcnamara; +Cc: dev, marko.kovacevic, Herakliusz Lipiec

From: Herakliusz Lipiec <herakliusz.lipiec@intel.com>

Moved duplicated, and occasionally outdated, doc sections from each
of the sample app guides chapters to a common chapter at the start.

This reduces the duplication in the docs and provides a single
point of reference for compiling the sample apps.

Signed-off-by: Herakliusz Lipiec <herakliusz.lipiec@intel.com>
Signed-off-by: Marko Kovacevic <marko.kovacevic@intel.com>
Reviewed-by: John McNamara <john.mcnamara@intel.com>
---
 doc/guides/sample_app_ug/cmd_line.rst              |  21 +---
 doc/guides/sample_app_ug/compiling.rst             | 124 +++++++++++++++++++++
 doc/guides/sample_app_ug/dist_app.rst              |  22 +---
 doc/guides/sample_app_ug/ethtool.rst               |  23 +---
 .../sample_app_ug/eventdev_pipeline_sw_pmd.rst     |  21 +---
 doc/guides/sample_app_ug/exception_path.rst        |  23 +---
 doc/guides/sample_app_ug/hello_world.rst           |  21 +---
 doc/guides/sample_app_ug/index.rst                 |   1 +
 doc/guides/sample_app_ug/ip_frag.rst               |  27 +----
 doc/guides/sample_app_ug/ip_reassembly.rst         |  22 +---
 doc/guides/sample_app_ug/ipsec_secgw.rst           |  19 +---
 doc/guides/sample_app_ug/ipv4_multicast.rst        |  33 +-----
 doc/guides/sample_app_ug/keep_alive.rst            |  22 +---
 doc/guides/sample_app_ug/kernel_nic_interface.rst  |  24 +---
 doc/guides/sample_app_ug/l2_forward_cat.rst        |  34 ++----
 doc/guides/sample_app_ug/l2_forward_crypto.rst     |  21 +---
 doc/guides/sample_app_ug/l2_forward_job_stats.rst  |  21 +---
 .../sample_app_ug/l2_forward_real_virtual.rst      |  21 +---
 doc/guides/sample_app_ug/l3_forward.rst            |  23 +---
 .../sample_app_ug/l3_forward_access_ctrl.rst       |  23 +---
 doc/guides/sample_app_ug/l3_forward_power_man.rst  |  23 +---
 doc/guides/sample_app_ug/l3_forward_virtual.rst    |  29 +----
 doc/guides/sample_app_ug/link_status_intr.rst      |  27 +----
 doc/guides/sample_app_ug/load_balancer.rst         |  19 +---
 doc/guides/sample_app_ug/multi_process.rst         |  22 +---
 doc/guides/sample_app_ug/netmap_compatibility.rst  |  25 +----
 doc/guides/sample_app_ug/packet_ordering.rst       |  23 +---
 doc/guides/sample_app_ug/performance_thread.rst    |  22 +---
 doc/guides/sample_app_ug/ptpclient.rst             |  33 ++----
 doc/guides/sample_app_ug/qos_metering.rst          |  24 +---
 doc/guides/sample_app_ug/qos_scheduler.rst         |  21 +---
 doc/guides/sample_app_ug/quota_watermark.rst       |  22 +---
 doc/guides/sample_app_ug/rxtx_callbacks.rst        |  25 +----
 doc/guides/sample_app_ug/server_node_efd.rst       |  21 +---
 doc/guides/sample_app_ug/skeleton.rst              |  25 +----
 doc/guides/sample_app_ug/tep_termination.rst       |  31 +-----
 doc/guides/sample_app_ug/test_pipeline.rst         |  20 +---
 doc/guides/sample_app_ug/timer.rst                 |  21 +---
 doc/guides/sample_app_ug/vhost.rst                 |  16 +--
 doc/guides/sample_app_ug/vhost_scsi.rst            |  19 +---
 doc/guides/sample_app_ug/vm_power_management.rst   |   9 +-
 doc/guides/sample_app_ug/vmdq_dcb_forwarding.rst   |  19 +---
 42 files changed, 241 insertions(+), 801 deletions(-)
 create mode 100644 doc/guides/sample_app_ug/compiling.rst

diff --git a/doc/guides/sample_app_ug/cmd_line.rst b/doc/guides/sample_app_ug/cmd_line.rst
index 36c7971..7ea0dea 100644
--- a/doc/guides/sample_app_ug/cmd_line.rst
+++ b/doc/guides/sample_app_ug/cmd_line.rst
@@ -68,26 +68,9 @@ There are three simple commands:
 Compiling the Application
 -------------------------
 
-#.  Go to example directory:
+To compile the sample application see :ref:`sample_app_compilation`
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/cmdline
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    Refer to the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``cmd_line`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/compiling.rst b/doc/guides/sample_app_ug/compiling.rst
new file mode 100644
index 0000000..882432f
--- /dev/null
+++ b/doc/guides/sample_app_ug/compiling.rst
@@ -0,0 +1,124 @@
+ ..  BSD LICENSE
+     Copyright(c) 2015 Intel Corporation. All rights reserved.
+     All rights reserved.
+
+     Redistribution and use in source and binary forms, with or without
+     modification, are permitted provided that the following conditions
+     are met:
+
+     * Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+     * Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in
+     the documentation and/or other materials provided with the
+     distribution.
+     * Neither the name of Intel Corporation nor the names of its
+     contributors may be used to endorse or promote products derived
+     from this software without specific prior written permission.
+
+     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+     "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+     LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+     A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+     OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+     LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+     DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+     THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+.. _sample_app_compilation:
+
+Compiling the Sample Applications
+=================================
+
+This section explains how to compile the DPDK sample applications.
+
+To compile all the sample applications
+--------------------------------------
+
+
+Set the path to DPDK source code if its not set:
+
+    .. code-block:: console
+
+        export RTE_SDK=/path/to/rte_sdk
+
+Go to DPDK source:
+
+    .. code-block:: console
+
+        cd $RTE_SDK
+
+Build DPDK:
+
+   .. code-block:: console
+
+        make defconfig
+        make
+
+Build the sample applications:
+
+   .. code-block:: console
+
+       export RTE_TARGET=build
+       make -C examples
+
+For other possible ``RTE_TARGET`` values and additional information on
+compiling see
+:ref:`Compiling DPDK on Linux <linux_gsg_compiling_dpdk>` or
+:ref:`Compiling DPDK on FreeBSD <building_from_source>`.
+Applications are output to: ``$RTE_SDK/examples/app-dir/build`` or
+``$RTE_SDK/examples/app-dir/$RTE_TARGET``.
+
+
+In the example above the compiled application is written to the ``build`` subdirectory.
+To have the applications written to a different location,
+the ``O=/path/to/build/directory`` option may be specified in the make command.
+
+    .. code-block:: console
+
+       make O=/tmp
+
+To build the applications for debugging use the ``DEBUG`` option.
+This option adds some extra flags, disables compiler optimizations and
+sets verbose output.
+
+    .. code-block:: console
+
+       make DEBUG=1
+
+
+To compile a single application
+-------------------------------
+
+Set the path to DPDK source code:
+
+    .. code-block:: console
+
+        export RTE_SDK=/path/to/rte_sdk
+
+Go to DPDK source:
+
+    .. code-block:: console
+
+       cd $RTE_SDK
+
+Build DPDK:
+
+    .. code-block:: console
+
+        make defconfig
+        make
+
+Go to the sample application directory. Unless otherwise specified the sample
+applications are located in ``$RTE_SDK/examples/``.
+
+
+Build the application:
+
+    .. code-block:: console
+
+        export RTE_TARGET=build
+        make
diff --git a/doc/guides/sample_app_ug/dist_app.rst b/doc/guides/sample_app_ug/dist_app.rst
index 1cae473..466115d 100644
--- a/doc/guides/sample_app_ug/dist_app.rst
+++ b/doc/guides/sample_app_ug/dist_app.rst
@@ -53,30 +53,12 @@ generator as shown in the figure below.
 
    Performance Benchmarking Setup (Basic Environment)
 
-
 Compiling the Application
 -------------------------
 
-#.  Go to the sample application directory:
-
-    ..  code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/distributor
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    ..  code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the DPDK Getting Started Guide for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    ..  code-block:: console
+To compile the sample application see :ref:`sample_app_compilation`.
 
-        make
+The application is located in the ``distributor`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/ethtool.rst b/doc/guides/sample_app_ug/ethtool.rst
index 6779795..814d78b 100644
--- a/doc/guides/sample_app_ug/ethtool.rst
+++ b/doc/guides/sample_app_ug/ethtool.rst
@@ -40,28 +40,9 @@ is based upon a simple L2 frame reflector.
 Compiling the Application
 -------------------------
 
-To compile the application:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Go to the sample application directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/ethtool
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``ethtool`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/eventdev_pipeline_sw_pmd.rst b/doc/guides/sample_app_ug/eventdev_pipeline_sw_pmd.rst
index b1b18dd..c793886 100644
--- a/doc/guides/sample_app_ug/eventdev_pipeline_sw_pmd.rst
+++ b/doc/guides/sample_app_ug/eventdev_pipeline_sw_pmd.rst
@@ -46,28 +46,11 @@ a particular pipeline configuration.
 Compiling the Application
 -------------------------
 
-To compile the application:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Go to the sample application directory:
+The application is located in the ``examples`` sub-directory.
 
-    .. code-block:: console
 
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/eventdev_pipeline_sw_pmd
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/exception_path.rst b/doc/guides/sample_app_ug/exception_path.rst
index e505fb3..2dee8bf 100644
--- a/doc/guides/sample_app_ug/exception_path.rst
+++ b/doc/guides/sample_app_ug/exception_path.rst
@@ -58,28 +58,9 @@ To make throughput measurements, kernel bridges must be setup to forward data be
 Compiling the Application
 -------------------------
 
-#.  Go to example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/exception_path
-
-#.  Set the target (a default target will be used if not specified).
-    For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-This application is intended as a linuxapp only.
-See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``exception_path`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/hello_world.rst b/doc/guides/sample_app_ug/hello_world.rst
index f4753af..8196702 100644
--- a/doc/guides/sample_app_ug/hello_world.rst
+++ b/doc/guides/sample_app_ug/hello_world.rst
@@ -37,26 +37,9 @@ The application simply prints an "helloworld" message on every enabled lcore.
 Compiling the Application
 -------------------------
 
-#.  Go to the example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/helloworld
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started* Guide for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``helloworld`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/index.rst b/doc/guides/sample_app_ug/index.rst
index 069d4f1..4f8340a 100644
--- a/doc/guides/sample_app_ug/index.rst
+++ b/doc/guides/sample_app_ug/index.rst
@@ -36,6 +36,7 @@ Sample Applications User Guides
     :numbered:
 
     intro
+    compiling
     cmd_line
     ethtool
     exception_path
diff --git a/doc/guides/sample_app_ug/ip_frag.rst b/doc/guides/sample_app_ug/ip_frag.rst
index bd1fe2d..5686b35 100644
--- a/doc/guides/sample_app_ug/ip_frag.rst
+++ b/doc/guides/sample_app_ug/ip_frag.rst
@@ -59,31 +59,12 @@ Any unmatched packets are forwarded to the originating port.
 By default, input frame sizes up to 9.5 KB are supported.
 Before forwarding, the input IP packet is fragmented to fit into the "standard" Ethernet* v2 MTU (1500 bytes).
 
-Building the Application
-------------------------
+Compiling the Application
+-------------------------
 
-To build the application:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Go to the sample application directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/ip_fragmentation
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``ip_fragmentation`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/ip_reassembly.rst b/doc/guides/sample_app_ug/ip_reassembly.rst
index cc9e591..21d00fc 100644
--- a/doc/guides/sample_app_ug/ip_reassembly.rst
+++ b/doc/guides/sample_app_ug/ip_reassembly.rst
@@ -53,28 +53,14 @@ There are two key differences from the L2 Forwarding sample application:
 The Longest Prefix Match (LPM for IPv4, LPM6 for IPv6) table is used to store/lookup an outgoing port number, associated with that IPv4 address. Any unmatched packets are forwarded to the originating port.Compiling the Application
 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
-To compile the application:
 
-#.  Go to the sample application directory:
+Compiling the Application
+-------------------------
 
-   .. code-block:: console
+To compile the sample application see :ref:`sample_app_compilation`.
 
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/ip_reassembly
+The application is located in the ``ip_reassembly`` sub-directory.
 
-#.  Set the target (a default target is used if not specified). For example:
-
-   .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-   .. code-block:: console
-
-        make
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/ipsec_secgw.rst b/doc/guides/sample_app_ug/ipsec_secgw.rst
index b675cba..c6af171 100644
--- a/doc/guides/sample_app_ug/ipsec_secgw.rst
+++ b/doc/guides/sample_app_ug/ipsec_secgw.rst
@@ -83,27 +83,12 @@ Constraints
 *  Each SA must be handle by a unique lcore (*1 RX queue per port*).
 *  No chained mbufs.
 
-
 Compiling the Application
 -------------------------
 
-To compile the application:
-
-#. Go to the sample application directory::
-
-      export RTE_SDK=/path/to/rte_sdk
-      cd ${RTE_SDK}/examples/ipsec-secgw
-
-#. Set the target (a default target is used if not specified). For example::
-
-
-      export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-   See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#. Build the application::
+To compile the sample application see :ref:`sample_app_compilation`.
 
-       make
+The application is located in the ``rpsec-secgw`` sub-directory.
 
 #. [Optional] Build the application for debugging:
    This option adds some extra flags, disables compiler optimizations and
diff --git a/doc/guides/sample_app_ug/ipv4_multicast.rst b/doc/guides/sample_app_ug/ipv4_multicast.rst
index 49712a0..4896be3 100644
--- a/doc/guides/sample_app_ug/ipv4_multicast.rst
+++ b/doc/guides/sample_app_ug/ipv4_multicast.rst
@@ -63,37 +63,12 @@ with the mask of ports to multicast packets to.
 Also, the application does not consider the Ethernet addresses;
 it looks only at the IPv4 destination address for any given packet.
 
-Building the Application
-------------------------
+Compiling the Application
+-------------------------
 
-To compile the application:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Go to the sample application directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/ipv4_multicast
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
-
-.. note::
-
-    The compiled application is written to the build subdirectory.
-    To have the application written to a different location,
-    the O=/path/to/build/directory option may be specified in the make command.
+The application is located in the ``ipv4_multicast`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/keep_alive.rst b/doc/guides/sample_app_ug/keep_alive.rst
index fe90820..e58e40c 100644
--- a/doc/guides/sample_app_ug/keep_alive.rst
+++ b/doc/guides/sample_app_ug/keep_alive.rst
@@ -66,27 +66,9 @@ of the L2 forwarding application.
 Compiling the Application
 -------------------------
 
-To compile the application:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Go to the sample application directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk cd ${RTE_SDK}/examples/keep_alive
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``l2fwd_keep_alive`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/kernel_nic_interface.rst b/doc/guides/sample_app_ug/kernel_nic_interface.rst
index 619a7b5..c27af67 100644
--- a/doc/guides/sample_app_ug/kernel_nic_interface.rst
+++ b/doc/guides/sample_app_ug/kernel_nic_interface.rst
@@ -77,35 +77,17 @@ The packet flow through the Kernel NIC Interface application is as shown in the
 
    Kernel NIC Application Packet Flow
 
-
 Compiling the Application
 -------------------------
 
-Compile the application as follows:
-
-#.  Go to the example directory:
-
-    .. code-block:: console
+To compile the sample application see :ref:`sample_app_compilation`.
 
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/kni
+The application is located in the ``kni`` sub-directory.
 
-#.  Set the target (a default target is used if not specified)
-
-    .. note::
+.. note::
 
         This application is intended as a linuxapp only.
 
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
-
 Loading the Kernel Module
 -------------------------
 
diff --git a/doc/guides/sample_app_ug/l2_forward_cat.rst b/doc/guides/sample_app_ug/l2_forward_cat.rst
index b0c2e10..cf09b38 100644
--- a/doc/guides/sample_app_ug/l2_forward_cat.rst
+++ b/doc/guides/sample_app_ug/l2_forward_cat.rst
@@ -67,38 +67,28 @@ White paper demonstrating example use case:
 
 Compiling the Application
 -------------------------
+.. note::
 
-Requires ``libpqos`` from Intel's
-`intel-cmt-cat software package <https://github.com/01org/intel-cmt-cat>`_
-hosted on GitHub repository. For installation notes, please see ``README`` file.
+    Requires ``libpqos`` from Intel's
+    `intel-cmt-cat software package <https://github.com/01org/intel-cmt-cat>`_
+    hosted on GitHub repository. For installation notes, please see ``README`` file.
 
-GIT:
+    GIT:
 
-* https://github.com/01org/intel-cmt-cat
-
-To compile the application export the path to PQoS lib
-and the DPDK source tree and go to the example directory:
-
-.. code-block:: console
+    * https://github.com/01org/intel-cmt-cat
 
-    export PQOS_INSTALL_PATH=/path/to/libpqos
-    export RTE_SDK=/path/to/rte_sdk
 
-    cd ${RTE_SDK}/examples/l2fwd-cat
+#. To compile the application export the path to PQoS lib
+   and the DPDK source tree and go to the example directory:
 
-Set the target, for example:
+   .. code-block:: console
 
-.. code-block:: console
-
-    export RTE_TARGET=x86_64-native-linuxapp-gcc
+       export PQOS_INSTALL_PATH=/path/to/libpqos
 
-See the *DPDK Getting Started* Guide for possible ``RTE_TARGET`` values.
 
-Build the application as follows:
-
-.. code-block:: console
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    make
+The application is located in the ``l2fwd-cat`` sub-directory.
 
 
 Running the Application
diff --git a/doc/guides/sample_app_ug/l2_forward_crypto.rst b/doc/guides/sample_app_ug/l2_forward_crypto.rst
index 158f4b4..9dace20 100644
--- a/doc/guides/sample_app_ug/l2_forward_crypto.rst
+++ b/doc/guides/sample_app_ug/l2_forward_crypto.rst
@@ -55,26 +55,9 @@ Also, if MAC addresses updating is enabled, the MAC addresses are affected as fo
 Compiling the Application
 -------------------------
 
-#.  Go to the example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/l2fwd-crypto
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    *See the DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``l2fwd-crypt`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/l2_forward_job_stats.rst b/doc/guides/sample_app_ug/l2_forward_job_stats.rst
index 1029cc8..9aaf80a 100644
--- a/doc/guides/sample_app_ug/l2_forward_job_stats.rst
+++ b/doc/guides/sample_app_ug/l2_forward_job_stats.rst
@@ -97,26 +97,9 @@ in this case enabling a total of four Virtual Functions.
 Compiling the Application
 -------------------------
 
-#.  Go to the example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/l2fwd-jobstats
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    *See the DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``l2fwd-jobstats`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/l2_forward_real_virtual.rst b/doc/guides/sample_app_ug/l2_forward_real_virtual.rst
index f579c8f..ba64ea2 100644
--- a/doc/guides/sample_app_ug/l2_forward_real_virtual.rst
+++ b/doc/guides/sample_app_ug/l2_forward_real_virtual.rst
@@ -107,26 +107,9 @@ in this case enabling a total of four Virtual Functions.
 Compiling the Application
 -------------------------
 
-#.  Go to the example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/l2fwd
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    *See the DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``l2fwd`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/l3_forward.rst b/doc/guides/sample_app_ug/l3_forward.rst
index 6a6b8fb..1eb12c4 100644
--- a/doc/guides/sample_app_ug/l3_forward.rst
+++ b/doc/guides/sample_app_ug/l3_forward.rst
@@ -62,28 +62,9 @@ In the sample application, hash-based forwarding supports IPv4 and IPv6. LPM-bas
 Compiling the Application
 -------------------------
 
-To compile the application:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Go to the sample application directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/l3fwd
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``l3fwd`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/l3_forward_access_ctrl.rst b/doc/guides/sample_app_ug/l3_forward_access_ctrl.rst
index a6aa4fb..cf71a6c 100644
--- a/doc/guides/sample_app_ug/l3_forward_access_ctrl.rst
+++ b/doc/guides/sample_app_ug/l3_forward_access_ctrl.rst
@@ -252,28 +252,9 @@ Once the application starts, it transitions through three phases:
 Compiling the Application
 -------------------------
 
-To compile the application:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Go to the sample application directory:
-
-    ..  code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/l3fwd-acl
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    ..  code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK IPL Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    ..  code-block:: console
-
-        make
+The application is located in the ``l3fwd-acl`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/l3_forward_power_man.rst b/doc/guides/sample_app_ug/l3_forward_power_man.rst
index ea9c404..271ee04 100644
--- a/doc/guides/sample_app_ug/l3_forward_power_man.rst
+++ b/doc/guides/sample_app_ug/l3_forward_power_man.rst
@@ -104,28 +104,9 @@ instead of always running to the C0 state waiting for packets.
 Compiling the Application
 -------------------------
 
-To compile the application:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Go to the sample application directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/l3fwd-power
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``l3fwd-power`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/l3_forward_virtual.rst b/doc/guides/sample_app_ug/l3_forward_virtual.rst
index 5f9d894..e96f79e 100644
--- a/doc/guides/sample_app_ug/l3_forward_virtual.rst
+++ b/doc/guides/sample_app_ug/l3_forward_virtual.rst
@@ -64,34 +64,9 @@ The set of LPM rules used by the application is statically configured and loaded
 Compiling the Application
 -------------------------
 
-To compile the application:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Go to the sample application directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/l3fwd-vf
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
-
-.. note::
-
-    The compiled application is written to the build subdirectory.
-    To have the application written to a different location,
-    the O=/path/to/build/directory option may be specified in the make command.
+The application is located in the ``l3fwd-vf`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/link_status_intr.rst b/doc/guides/sample_app_ug/link_status_intr.rst
index f9af474..d073e71 100644
--- a/doc/guides/sample_app_ug/link_status_intr.rst
+++ b/doc/guides/sample_app_ug/link_status_intr.rst
@@ -55,32 +55,9 @@ and the behavior of L2 forwarding each time the link status changes.
 Compiling the Application
 -------------------------
 
-#.  Go to the example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/link_status_interrupt
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
-
-.. note::
-
-    The compiled application is written to the build subdirectory.
-    To have the application written to a different location,
-    the O=/path/to/build/directory option may be specified on the make command line.
+The application is located in the ``link_status_interrupt`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/load_balancer.rst b/doc/guides/sample_app_ug/load_balancer.rst
index e101a5f..925ba5d 100644
--- a/doc/guides/sample_app_ug/load_balancer.rst
+++ b/doc/guides/sample_app_ug/load_balancer.rst
@@ -86,24 +86,9 @@ The routing logic is LPM based, with all the worker threads sharing the same LPM
 Compiling the Application
 -------------------------
 
-The sequence of steps used to build the application is:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Export the required environment variables:
-
-    .. code-block:: console
-
-        export RTE_SDK=<Path to the DPDK installation folder>
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-#.  Build the application executable file:
-
-    .. code-block:: console
-
-        cd ${RTE_SDK}/examples/load_balancer
-        make
-
-    For more details on how to build the DPDK libraries and sample applications,
-    please refer to the *DPDK Getting Started Guide.*
+The application is located in the ``load_balancer`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/multi_process.rst b/doc/guides/sample_app_ug/multi_process.rst
index d4df2fa..4b6df70 100644
--- a/doc/guides/sample_app_ug/multi_process.rst
+++ b/doc/guides/sample_app_ug/multi_process.rst
@@ -40,31 +40,13 @@ Example Applications
 
 Building the Sample Applications
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
 The multi-process example applications are built in the same way as other sample applications,
 and as documented in the *DPDK Getting Started Guide*.
-To build all the example applications:
-
-#.  Set RTE_SDK and go to the example directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/multi_process
-
-#.  Set the target (a default target will be used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
 
-#.  Build the applications:
 
-    .. code-block:: console
+To compile the sample application see :ref:`sample_app_compilation`.
 
-        make
+The applications are located in the ``multi_process`` sub-directory.
 
 .. note::
 
diff --git a/doc/guides/sample_app_ug/netmap_compatibility.rst b/doc/guides/sample_app_ug/netmap_compatibility.rst
index 030fd98..0ff5059 100644
--- a/doc/guides/sample_app_ug/netmap_compatibility.rst
+++ b/doc/guides/sample_app_ug/netmap_compatibility.rst
@@ -121,29 +121,12 @@ The bridge application is an example largely based on the bridge example shipped
 It shows how a minimal Netmap application with minimal and straightforward source code changes can be run on top of the DPDK.
 Please refer to ``$RTE_SDK/examples/netmap_compat/bridge/bridge.c`` for an example of a ported application.
 
-Compiling the "bridge" Sample Application
------------------------------------------
+Compiling the Application
+-------------------------
 
-#.  Go to the example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/netmap_compat
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide for Linux* for possible ``RTE_TARGET`` values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``netmap_compat`` sub-directory.
 
 Running the "bridge" Sample Application
 ---------------------------------------
diff --git a/doc/guides/sample_app_ug/packet_ordering.rst b/doc/guides/sample_app_ug/packet_ordering.rst
index ef85150..3c6eb35 100644
--- a/doc/guides/sample_app_ug/packet_ordering.rst
+++ b/doc/guides/sample_app_ug/packet_ordering.rst
@@ -51,28 +51,11 @@ The application uses at least three CPU cores:
   from the reorder buffer and sends them to the NIC ports for transmission.
 
 Compiling the Application
---------------------------
+-------------------------
 
-#.  Go to the example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/helloworld
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started* Guide for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``packet_ordering`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/performance_thread.rst b/doc/guides/sample_app_ug/performance_thread.rst
index a55a624..c718ce6 100644
--- a/doc/guides/sample_app_ug/performance_thread.rst
+++ b/doc/guides/sample_app_ug/performance_thread.rst
@@ -73,28 +73,10 @@ invalid.
 
 Compiling the Application
 -------------------------
-The application is located in the sample application folder in the
-``performance-thread`` folder.
 
-#.  Go to the example applications folder
-
-    .. code-block:: console
-
-       export RTE_SDK=/path/to/rte_sdk
-       cd ${RTE_SDK}/examples/performance-thread/l3fwd-thread
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-       export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Linux Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-        make
+To compile the sample application see :ref:`sample_app_compilation`.
 
+The application is located in the `performance-thread/l3fwd-thread` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/ptpclient.rst b/doc/guides/sample_app_ug/ptpclient.rst
index d3ef1d1..b456e33 100644
--- a/doc/guides/sample_app_ug/ptpclient.rst
+++ b/doc/guides/sample_app_ug/ptpclient.rst
@@ -78,39 +78,20 @@ The adjustment for slave can be represented as:
 If the command line parameter ``-T 1`` is used the application also
 synchronizes the PTP PHC clock with the Linux kernel clock.
 
-
 Compiling the Application
 -------------------------
 
-To compile the application, export the path to the DPDK source tree and edit
-the ``config/common_linuxapp`` configuration file to enable IEEE1588:
-
-.. code-block:: console
-
-    export RTE_SDK=/path/to/rte_sdk
-
-    # Edit  common_linuxapp and set the following options:
-    CONFIG_RTE_LIBRTE_IEEE1588=y
-
-Set the target, for example:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-.. code-block:: console
-
-    export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-See the *DPDK Getting Started* Guide for possible ``RTE_TARGET`` values.
-
-Build the application as follows:
-
-.. code-block:: console
+The application is located in the ``ptpclient`` sub-directory.
 
-    # Recompile DPDK.
-    make install T=$RTE_TARGET
+.. note::
+   To compile the application edit the ``config/common_linuxapp`` configuration file to enable IEEE1588
+   and then recompile DPDK:
 
-    # Compile the application.
-    cd ${RTE_SDK}/examples/ptpclient
-    make
+   .. code-block:: console
 
+      CONFIG_RTE_LIBRTE_IEEE1588=y
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/qos_metering.rst b/doc/guides/sample_app_ug/qos_metering.rst
index e1a6ac7..c6a9d72 100644
--- a/doc/guides/sample_app_ug/qos_metering.rst
+++ b/doc/guides/sample_app_ug/qos_metering.rst
@@ -64,29 +64,9 @@ all the incoming packets are colored as green.
 Compiling the Application
 -------------------------
 
-#.  Go to the example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/qos_meter
-
-#.  Set the target
-    (a default target is used if not specified):
-
-    .. note::
-
-        This application is intended as a linuxapp only.
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``qos_meter`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/qos_scheduler.rst b/doc/guides/sample_app_ug/qos_scheduler.rst
index a6654cb..e618e2a 100644
--- a/doc/guides/sample_app_ug/qos_scheduler.rst
+++ b/doc/guides/sample_app_ug/qos_scheduler.rst
@@ -58,31 +58,14 @@ The TX thread, if present, reads from the TX ring and write the packets to the T
 Compiling the Application
 -------------------------
 
-To compile the application:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Go to the sample application directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/qos_sched
-
-#.  Set the target (a default target is used if not specified). For example:
+The application is located in the ``qos_sched`` sub-directory.
 
     .. note::
 
         This application is intended as a linuxapp only.
 
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
-
 .. note::
 
     To get statistics on the sample app using the command line interface as described in the next section,
diff --git a/doc/guides/sample_app_ug/quota_watermark.rst b/doc/guides/sample_app_ug/quota_watermark.rst
index 2c3a432..c185147 100644
--- a/doc/guides/sample_app_ug/quota_watermark.rst
+++ b/doc/guides/sample_app_ug/quota_watermark.rst
@@ -88,30 +88,12 @@ as shown in :numref:`figure_ring_pipeline_perf_setup`.
 
    Ring-based Processing Pipeline Performance Setup
 
-
 Compiling the Application
 -------------------------
 
-#.  Go to the example directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/quota_watermark
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
+To compile the sample application see :ref:`sample_app_compilation`.
 
-        make
+The application is located in the ``quota_watermark`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/rxtx_callbacks.rst b/doc/guides/sample_app_ug/rxtx_callbacks.rst
index 8d1bb86..4feb19b 100644
--- a/doc/guides/sample_app_ug/rxtx_callbacks.rst
+++ b/doc/guides/sample_app_ug/rxtx_callbacks.rst
@@ -45,23 +45,9 @@ prior to transmission to calculate the elapsed time, in CPU cycles.
 Compiling the Application
 -------------------------
 
-To compile the application export the path to the DPDK source tree and go to
-the example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-.. code-block:: console
-
-    export RTE_SDK=/path/to/rte_sdk
-
-    cd ${RTE_SDK}/examples/rxtx_callbacks
-
-
-Set the target, for example:
-
-.. code-block:: console
-
-    export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-See the *DPDK Getting Started* Guide for possible ``RTE_TARGET`` values.
+The application is located in the ``rxtx_callbacks`` sub-directory.
 
 The callbacks feature requires that the ``CONFIG_RTE_ETHDEV_RXTX_CALLBACKS``
 setting is on in the ``config/common_`` config file that applies to the
@@ -71,13 +57,6 @@ target. This is generally on by default:
 
     CONFIG_RTE_ETHDEV_RXTX_CALLBACKS=y
 
-Build the application as follows:
-
-.. code-block:: console
-
-    make
-
-
 Running the Application
 -----------------------
 
diff --git a/doc/guides/sample_app_ug/server_node_efd.rst b/doc/guides/sample_app_ug/server_node_efd.rst
index c2a5f20..ee7d460 100644
--- a/doc/guides/sample_app_ug/server_node_efd.rst
+++ b/doc/guides/sample_app_ug/server_node_efd.rst
@@ -108,26 +108,9 @@ that this is a new flow, which is dropped.
 Compiling the Application
 -------------------------
 
-The sequence of steps used to build the application is:
-
-#.  Export the required environment variables:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-#.  Build the application executable file:
-
-    .. code-block:: console
-
-        cd ${RTE_SDK}/examples/server_node_efd/
-        make
-
-    For more details on how to build the DPDK libraries and sample
-    applications,
-    please refer to the *DPDK Getting Started Guide.*
+To compile the sample application see :ref:`sample_app_compilation`.
 
+The application is located in the ``server_node_efd`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/skeleton.rst b/doc/guides/sample_app_ug/skeleton.rst
index c39b033..4eb65af 100644
--- a/doc/guides/sample_app_ug/skeleton.rst
+++ b/doc/guides/sample_app_ug/skeleton.rst
@@ -39,33 +39,12 @@ It is intended as a demonstration of the basic components of a DPDK forwarding
 application. For more detailed implementations see the L2 and L3 forwarding
 sample applications.
 
-
 Compiling the Application
 -------------------------
 
-To compile the application export the path to the DPDK source tree and go to
-the example directory:
-
-.. code-block:: console
-
-    export RTE_SDK=/path/to/rte_sdk
-
-    cd ${RTE_SDK}/examples/skeleton
-
-Set the target, for example:
-
-.. code-block:: console
-
-    export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-See the *DPDK Getting Started* Guide for possible ``RTE_TARGET`` values.
-
-Build the application as follows:
-
-.. code-block:: console
-
-    make
+To compile the sample application see :ref:`sample_app_compilation`.
 
+The application is located in the ``skeleton`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/tep_termination.rst b/doc/guides/sample_app_ug/tep_termination.rst
index 087823b..dccb352 100644
--- a/doc/guides/sample_app_ug/tep_termination.rst
+++ b/doc/guides/sample_app_ug/tep_termination.rst
@@ -121,39 +121,16 @@ The example in this section have been validated with the following distributions
 
 Compiling the Sample Code
 -------------------------
-#.  Compile vhost lib:
 
-    To enable vhost, turn on vhost library in the configure file config/common_linuxapp.
+To enable vhost, turn on vhost library in the configure file
+``config/common_linuxapp``.
 
     .. code-block:: console
 
         CONFIG_RTE_LIBRTE_VHOST=y
 
-
-#.  Go to the examples directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/tep_termination
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the DPDK Getting Started Guide for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        cd ${RTE_SDK}
-        make config ${RTE_TARGET}
-        make install ${RTE_TARGET}
-        cd ${RTE_SDK}/examples/tep_termination
-        make
+Then following the to compile the sample application shown in
+:ref:`sample_app_compilation`.
 
 Running the Sample Code
 -----------------------
diff --git a/doc/guides/sample_app_ug/test_pipeline.rst b/doc/guides/sample_app_ug/test_pipeline.rst
index 95c7e0f..4aca2be 100644
--- a/doc/guides/sample_app_ug/test_pipeline.rst
+++ b/doc/guides/sample_app_ug/test_pipeline.rst
@@ -55,28 +55,12 @@ The application uses three CPU cores:
 
    Test Pipeline Application
 
-
 Compiling the Application
 -------------------------
+To compile the sample application see :ref:`sample_app_compilation`
 
-#.  Go to the app/test directory:
-
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/app/test/test-pipeline
-
-#.  Set the target (a default target is used if not specified):
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-#.  Build the application:
-
-    .. code-block:: console
+The application is located in the ``$RTE_SDK/test/test-pipline`` directory.
 
-        make
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/timer.rst b/doc/guides/sample_app_ug/timer.rst
index 00b6953..e9df6f0 100644
--- a/doc/guides/sample_app_ug/timer.rst
+++ b/doc/guides/sample_app_ug/timer.rst
@@ -37,26 +37,9 @@ This application prints some messages from different lcores regularly, demonstra
 Compiling the Application
 -------------------------
 
-#.  Go to the example directory:
+To compile the sample application see :ref:`sample_app_compilation`.
 
-    .. code-block:: console
-
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/timer
-
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide* for possible *RTE_TARGET* values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``timer`` sub-directory.
 
 Running the Application
 -----------------------
diff --git a/doc/guides/sample_app_ug/vhost.rst b/doc/guides/sample_app_ug/vhost.rst
index a2a3909..0b57261 100644
--- a/doc/guides/sample_app_ug/vhost.rst
+++ b/doc/guides/sample_app_ug/vhost.rst
@@ -55,20 +55,12 @@ puts back to the same physical NIC port.
 Build
 ~~~~~
 
-Follow the *Getting Started Guide for Linux* on generic info about
-environment setup and building DPDK from source.
+To compile the sample application see :ref:`sample_app_compilation`.
 
-In this example, you need build DPDK both on the host and inside guest.
-Also, you need build this example.
-
-.. code-block:: console
-
-    export RTE_SDK=/path/to/dpdk_source
-    export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    cd ${RTE_SDK}/examples/vhost
-    make
+The application is located in the ``vhost`` sub-directory.
 
+.. note::
+   In this example, you need build DPDK both on the host and inside guest.
 
 Start the vswitch example
 ~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/doc/guides/sample_app_ug/vhost_scsi.rst b/doc/guides/sample_app_ug/vhost_scsi.rst
index 8be069e..df4be22 100644
--- a/doc/guides/sample_app_ug/vhost_scsi.rst
+++ b/doc/guides/sample_app_ug/vhost_scsi.rst
@@ -51,23 +51,14 @@ Testing steps
 This section shows the steps how to start a VM with the block device as
 fast data path for critical application.
 
-Build
-~~~~~
+Compiling the Application
+-------------------------
 
-Follow the *Getting Started Guide for Linux* on generic info about
-environment setup and building DPDK from source.
+To compile the sample application see :ref:`sample_app_compilation`.
 
-In this example, you need build DPDK both on the host and inside guest.
-Also, you need build this example.
-
-.. code-block:: console
-
-    export RTE_SDK=/path/to/dpdk_source
-    export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    cd ${RTE_SDK}/examples/vhost_scsi
-    make
+The application is located in the ``examples`` sub-directory.
 
+You will also need to build DPDK both on the host and inside the guest
 
 Start the vhost_scsi example
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/doc/guides/sample_app_ug/vm_power_management.rst b/doc/guides/sample_app_ug/vm_power_management.rst
index 05c26b0..dc51476 100644
--- a/doc/guides/sample_app_ug/vm_power_management.rst
+++ b/doc/guides/sample_app_ug/vm_power_management.rst
@@ -201,9 +201,12 @@ Compiling and Running the Host Application
 Compiling
 ~~~~~~~~~
 
-#. export RTE_SDK=/path/to/rte_sdk
-#. cd ${RTE_SDK}/examples/vm_power_manager
-#. make
+Compiling the Application
+-------------------------
+
+To compile the sample application see :ref:`sample_app_compilation`.
+
+The application is located in the ``vm_power_manager`` sub-directory.
 
 Running
 ~~~~~~~
diff --git a/doc/guides/sample_app_ug/vmdq_dcb_forwarding.rst b/doc/guides/sample_app_ug/vmdq_dcb_forwarding.rst
index 70e1d19..3d2abb8 100644
--- a/doc/guides/sample_app_ug/vmdq_dcb_forwarding.rst
+++ b/doc/guides/sample_app_ug/vmdq_dcb_forwarding.rst
@@ -86,26 +86,11 @@ No command-line options are taken by this application apart from the standard EA
 Compiling the Application
 -------------------------
 
-#.  Go to the examples directory:
 
-    .. code-block:: console
 
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/vmdq_dcb
+To compile the sample application see :ref:`sample_app_compilation`.
 
-#.  Set the target (a default target is used if not specified). For example:
-
-    .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-    See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-    .. code-block:: console
-
-        make
+The application is located in the ``vmdq_dcb`` sub-directory.
 
 Running the Application
 -----------------------
-- 
2.5.5

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [dpdk-dev] [PATCH v8 2/2] doc: add new introduction to sample app guides
  2017-10-18  9:28           ` [dpdk-dev] [PATCH v8 1/2] doc: add generic compilation doc for all sample apps Marko Kovacevic
@ 2017-10-18  9:28             ` Marko Kovacevic
  0 siblings, 0 replies; 18+ messages in thread
From: Marko Kovacevic @ 2017-10-18  9:28 UTC (permalink / raw)
  To: john.mcnamara; +Cc: dev, marko.kovacevic

Add new Introduction Section into the sample app guides.

Signed-off-by: Marko Kovacevic <marko.kovacevic@intel.com>
---

V8:
   Fixed Build issue (John)


 doc/guides/sample_app_ug/index.rst |   2 +
 doc/guides/sample_app_ug/intro.rst | 153 +++++++++++++++++++++++++++----------
 2 files changed, 115 insertions(+), 40 deletions(-)

diff --git a/doc/guides/sample_app_ug/index.rst b/doc/guides/sample_app_ug/index.rst
index 4f8340a..163b468 100644
--- a/doc/guides/sample_app_ug/index.rst
+++ b/doc/guides/sample_app_ug/index.rst
@@ -1,4 +1,5 @@
 ..  BSD LICENSE
+
     Copyright(c) 2010-2015 Intel Corporation. All rights reserved.
     All rights reserved.
 
@@ -28,6 +29,7 @@
     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+
 Sample Applications User Guides
 ===============================
 
diff --git a/doc/guides/sample_app_ug/intro.rst b/doc/guides/sample_app_ug/intro.rst
index d3f261b..ae12503 100644
--- a/doc/guides/sample_app_ug/intro.rst
+++ b/doc/guides/sample_app_ug/intro.rst
@@ -1,5 +1,5 @@
 ..  BSD LICENSE
-    Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
+    Copyright(c) 2010-2017 Intel Corporation. All rights reserved.
     All rights reserved.
 
     Redistribution and use in source and binary forms, with or without
@@ -28,42 +28,115 @@
     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-Introduction
-============
-
-This document describes the sample applications that are included in the Data Plane Development Kit (DPDK).
-Each chapter describes a sample application that showcases specific functionality and
-provides instructions on how to compile, run and use the sample application.
-
-Documentation Roadmap
----------------------
-
-The following is a list of DPDK documents in suggested reading order:
-
-*   **Release Notes** : Provides release-specific information, including supported features,
-    limitations, fixed issues, known issues and so on.
-    Also, provides the answers to frequently asked questions in FAQ format.
-
-*   **Getting Started Guides** : Describes how to install and
-    configure the DPDK software for your operating system;
-    designed to get users up and running quickly with the software.
-
-*   **Programmer's Guide:**  Describes:
-
-    *   The software architecture and how to use it (through examples),
-        specifically in a Linux* application (linuxapp) environment.
-
-    *   The content of the DPDK, the build system
-        (including the commands that can be used in the root DPDK Makefile to build the development kit and an application)
- 	and guidelines for porting an application.
-
-    *   Optimizations used in the software and those that should be considered for new development
-
-A glossary of terms is also provided.
-
-*   **API Reference**  : Provides detailed information about DPDK functions,
-    data structures and other programming constructs.
-
-*   **Sample Applications User Guide**  : Describes a set of sample applications.
-    Each chapter describes a sample application that showcases specific functionality and
-    provides instructions on how to compile, run and use the sample application.
+Introduction to the DPDK Sample Applications
+============================================
+
+The DPDK Sample Applications are small standalone applications which
+demonstrate various features of DPDK. They can be considered as a cookbook of
+DPDK features.  Users interested in getting started with DPDK can take the
+applications, try out the features, and then extend them to fit their needs.
+
+
+The DPDK Sample Applications
+----------------------------
+
+Table :numref:`table_sample_apps` shows a list of some of the main sample
+applications that are available in the examples directory of DPDK:
+
+ .. _table_sample_apps:
+
+ .. table:: **Some of the DPDK Sample applications**
+
+    +---------------------------------------+--------------------------------------+
+    | Bonding                               | Netmap Compatibility                 |
+    +---------------------------------------+--------------------------------------+
+    | Command Line                          | Packet Ordering                      |
+    +---------------------------------------+--------------------------------------+
+    | Distributor                           | Performance Thread                   |
+    +---------------------------------------+--------------------------------------+
+    | Ethtool                               | Precision Time Protocol (PTP) Client |
+    +---------------------------------------+--------------------------------------+
+    | Exception Path                        | Quality of Service (QoS) Metering    |
+    +---------------------------------------+--------------------------------------+
+    | Hello World                           | QoS Scheduler                        |
+    +---------------------------------------+--------------------------------------+
+    | Internet Protocol (IP) Fragmentation  | Quota and Watermark                  |
+    +---------------------------------------+--------------------------------------+
+    | IP Pipeline                           | RX/TX Callbacks                      |
+    +---------------------------------------+--------------------------------------+
+    | IP Reassembly                         | Server node EFD                      |
+    +---------------------------------------+--------------------------------------+
+    | IPsec Security Gateway                | Basic Forwarding/Skeleton App        |
+    +---------------------------------------+--------------------------------------+
+    | IPv4 multicast                        | Tunnel End Point (TEP) termination   |
+    +---------------------------------------+--------------------------------------+
+    | Kernel NIC Interface                  | Timer                                |
+    +---------------------------------------+--------------------------------------+
+    | Network Layer 2 Forwarding + variants | Vhost                                |
+    +---------------------------------------+--------------------------------------+
+    | Network Layer 3 Forwarding + variants | Vhost Xen                            |
+    +---------------------------------------+--------------------------------------+
+    | Link Status Interrupt                 | VMDQ Forwarding                      |
+    +---------------------------------------+--------------------------------------+
+    | Load Balancer                         | VMDQ and DCB Forwarding              |
+    +---------------------------------------+--------------------------------------+
+    | Multi-process                         | VM Power Management                  |
+    +---------------------------------------+--------------------------------------+
+
+These examples range from simple to reasonably complex but most are designed
+to demonstrate one particular feature of DPDK. Some of the more interesting
+examples are highlighted below.
+
+
+* :doc:`Hello World<hello_world>`: As with most introductions to a
+  programming framework a good place to start is with the Hello World
+  application. The Hello World example sets up the DPDK Environment Abstraction
+  Layer (EAL), and prints a simple "Hello World" message to each of the DPDK
+  enabled cores. This application doesn't do any packet forwarding but it is a
+  good way to test if the DPDK environment is compiled and set up properly.
+
+* :doc:`Basic Forwarding/Skeleton Application<skeleton>`: The Basic
+  Forwarding/Skeleton contains the minimum amount of code required to enable
+  basic packet forwarding with DPDK. This allows you to test if your network
+  interfaces are working with DPDK.
+
+* :doc:`Network Layer 2 forwarding<l2_forward_real_virtual>`: The Network Layer 2
+  forwarding, or ``l2fwd`` application does forwarding based on Ethernet MAC
+  addresses like a simple switch.
+
+* :doc:`Network Layer 3 forwarding<l3_forward>`: The Network Layer3
+  forwarding, or ``l3fwd`` application does forwarding based on Internet
+  Protocol, IPv4 or IPv6 like a simple router.
+
+* :doc:`Packet Distributor<dist_app>`: The Packet Distributor
+  demonstrates how to distribute packets arriving on an Rx port to different
+  cores for processing and transmission.
+
+* :doc:`Multi-Process Application<multi_process>`: The
+  multi-process application shows how two DPDK processes can work together using
+  queues and memory pools to share information.
+
+* :doc:`RX/TX callbacks Application<rxtx_callbacks>`: The RX/TX
+  callbacks sample application is a packet forwarding application that
+  demonstrates the use of user defined callbacks on received and transmitted
+  packets. The application calculates the latency of a packet between RX
+  (packet arrival) and TX (packet transmission) by adding callbacks to the RX
+  and TX packet processing functions.
+
+* :doc:`IPSec Security Gateway<ipsec_secgw>`: The IPSec Security
+  Gateway application is minimal example of something closer to a real world
+  example. This is also a good example of an application using the DPDK
+  Cryptodev framework.
+
+* :doc:`Precision Time Protocol (PTP) client<ptpclient>`: The PTP
+  client is another minimal implementation of a real world application.
+  In this case the application is a PTP client that communicates with a PTP
+  master clock to synchronize time on a Network Interface Card (NIC) using the
+  IEEE1588 protocol.
+
+* :doc:`Quality of Service (QoS) Scheduler<qos_scheduler>`: The QoS
+  Scheduler application demonstrates the use of DPDK to provide QoS scheduling.
+
+There are many more examples shown in the following chapters. Each of the
+documented sample applications show how to compile, configure and run the
+application as well as explaining the main functionality of the code.
-- 
2.5.5

^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2017-10-18  9:29 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-10-05 11:12 [dpdk-dev] [PATCH v4 1/2] doc: add generic compilation doc for all sample apps Marko Kovacevic
2017-10-05 11:12 ` [dpdk-dev] [PATCH v4 2/2] doc: add new introduction to sample app guides Marko Kovacevic
2017-10-05 17:48   ` Mcnamara, John
2017-10-05 17:26 ` [dpdk-dev] [PATCH v4 1/2] doc: add generic compilation doc for all sample apps Mcnamara, John
2017-10-09 16:19 ` [dpdk-dev] [PATCH v5 " Marko Kovacevic
2017-10-09 16:19   ` [dpdk-dev] [PATCH v5 2/2] doc: add new introduction to sample app guides Marko Kovacevic
2017-10-09 16:50     ` Mcnamara, John
2017-10-09 16:48   ` [dpdk-dev] [PATCH v5 1/2] doc: add generic compilation doc for all sample apps Mcnamara, John
2017-10-11 15:51   ` [dpdk-dev] [PATCH v6 " Marko Kovacevic
2017-10-11 15:51     ` [dpdk-dev] [PATCH v6 2/2] doc: add new introduction to sample app guides Marko Kovacevic
2017-10-12 10:55       ` Mcnamara, John
2017-10-13 22:17       ` Thomas Monjalon
2017-10-16 14:50       ` [dpdk-dev] [PATCH v7 1/2] doc: add generic compilation doc for all sample apps Marko Kovacevic
2017-10-16 14:50         ` [dpdk-dev] [PATCH v7 2/2] doc: add new introduction to sample app guides Marko Kovacevic
2017-10-16 18:53           ` Mcnamara, John
2017-10-18  9:28           ` [dpdk-dev] [PATCH v8 1/2] doc: add generic compilation doc for all sample apps Marko Kovacevic
2017-10-18  9:28             ` [dpdk-dev] [PATCH v8 2/2] doc: add new introduction to sample app guides Marko Kovacevic
2017-10-12 10:55     ` [dpdk-dev] [PATCH v6 1/2] doc: add generic compilation doc for all sample apps Mcnamara, John

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).