summaryrefslogtreecommitdiff
path: root/doc/guides/prog_guide/ext_app_lib_make_help.rst
blob: 4312778dc935be6741c1f7049bfeb81ba129d906 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
..  SPDX-License-Identifier: BSD-3-Clause
    Copyright(c) 2010-2014 Intel Corporation.

.. _External_Application/Library_Makefile_help:

External Application/Library Makefile help
==========================================

External applications or libraries should include specific Makefiles from RTE_SDK, located in mk directory.
These Makefiles are:

*   ${RTE_SDK}/mk/rte.extapp.mk: Build an application

*   ${RTE_SDK}/mk/rte.extlib.mk: Build a static library

*   ${RTE_SDK}/mk/rte.extobj.mk: Build objects (.o)

Prerequisites
-------------

The following variables must be defined:

*   ${RTE_SDK}: Points to the root directory of the DPDK.

*   ${RTE_TARGET}: Reference the target to be used for compilation (for example, x86_64-native-linux-gcc).

Build Targets
-------------

Build targets support the specification of the name of the output directory, using O=mybuilddir.
This is optional; the default output directory is build.

*   all, "nothing" (meaning just make)

    Build the application or the library in the specified output directory.

    Example:

    .. code-block:: console

        make O=mybuild

*   clean

    Clean all objects created using make build.

    Example:

    .. code-block:: console

        make clean O=mybuild

Help Targets
------------

*   help

    Show this help.

Other Useful Command-line Variables
-----------------------------------

The following variables can be specified at the command line:

*   S=

    Specify the directory in which the sources are located. By default, it is the current directory.

*   M=

    Specify the Makefile to call once the output directory is created. By default, it uses $(S)/Makefile.

*   V=

    Enable verbose build (show full compilation command line and some intermediate commands).

*   D=

    Enable dependency debugging. This provides some useful information about why a target must be rebuilt or not.

*   EXTRA_CFLAGS=, EXTRA_LDFLAGS=, EXTRA_ASFLAGS=, EXTRA_CPPFLAGS=

    Append specific compilation, link or asm flags.

*   CROSS=

    Specify a cross-toolchain header that will prefix all gcc/binutils applications. This only works when using gcc.

Make from Another Directory
---------------------------

It is possible to run the Makefile from another directory, by specifying the output and the source dir. For example:

.. code-block:: console

    export RTE_SDK=/path/to/DPDK
    export RTE_TARGET=x86_64-native-linux-icc
    make -f /path/to/my_app/Makefile S=/path/to/my_app O=/path/to/build_dir