~~~~~~~~~~~~~~~~~~~~~~~
After installation, a build directory structure is created.
-Each build directory contains include files, libraries, and applications:
-
-.. code-block:: console
-
- ~/DPDK$ ls
- app MAINTAINERS
- config Makefile
- COPYRIGHT mk
- doc scripts
- examples lib
- tools x86_64-native-linuxapp-gcc
- x86_64-native-linuxapp-icc i686-native-linuxapp-gcc
- i686-native-linuxapp-icc
-
- ...
- ~/DEV/DPDK$ ls i686-native-linuxapp-gcc
-
- app build hostapp include kmod lib Makefile
-
-
- ~/DEV/DPDK$ ls i686-native-linuxapp-gcc/app/
- cmdline_test dump_cfg test testpmd
- cmdline_test.map dump_cfg.map test.map
- testpmd.map
-
-
- ~/DEV/DPDK$ ls i686-native-linuxapp-gcc/lib/
-
- libethdev.a librte_hash.a librte_mbuf.a librte_pmd_ixgbe.a
-
- librte_cmdline.a librte_lpm.a librte_mempool.a librte_ring.a
-
- librte_eal.a librte_malloc.a librte_pmd_e1000.a librte_timer.a
-
-
- ~/DEV/DPDK$ ls i686-native-linuxapp-gcc/include/
- arch rte_cpuflags.h rte_memcpy.h
- cmdline_cirbuf.h rte_cycles.h rte_memory.h
- cmdline.h rte_debug.h rte_mempool.h
- cmdline_parse_etheraddr.h rte_eal.h rte_memzone.h
- cmdline_parse.h rte_errno.h rte_pci_dev_ids.h
- cmdline_parse_ipaddr.h rte_ethdev.h rte_pci.h
- cmdline_parse_num.h rte_ether.h rte_per_lcore.h
- cmdline_parse_portlist.h rte_fbk_hash.h rte_prefetch.h
- cmdline_parse_string.h rte_hash_crc.h rte_random.h
- cmdline_rdline.h rte_hash.h rte_ring.h
- cmdline_socket.h rte_interrupts.h rte_rwlock.h
- cmdline_vt100.h rte_ip.h rte_sctp.h
- exec-env rte_jhash.h rte_spinlock.h
- rte_alarm.h rte_launch.h rte_string_fns.h
- rte_atomic.h rte_lcore.h rte_tailq.h
- rte_branch_prediction.h rte_log.h rte_tcp.h
- rte_byteorder.h rte_lpm.h rte_timer.h
- rte_common.h rte_malloc.h rte_udp.h
- rte_config.h rte_mbuf.h
-
+Each build directory contains include files, libraries, and applications.
A build directory is specific to a configuration that includes architecture + execution environment + toolchain.
It is possible to have several build directories sharing the same sources with different configurations.
* rte.extapp.mk: External application
-* rte.hostapp.mk: Host application in the development kit framework
+* rte.hostapp.mk: prerequisite tool to build dpdk
Library
^^^^^^^
* rte.subdir.mk: Build several directories in the development kit framework.
+.. _Internally_Generated_Build_Tools:
+
+Internally Generated Build Tools
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+``app/dpdk-pmdinfogen``
+
+
+``dpdk-pmdinfogen`` scans an object (.o) file for various well known symbol names.
+These well known symbol names are defined by various macros and used to export
+important information about hardware support and usage for pmd files. For
+instance the macro:
+
+.. code-block:: c
+
+ DRIVER_REGISTER_PCI(name, drv)
+
+Creates the following symbol:
+
+.. code-block:: c
+
+ static char this_pmd_name0[] __attribute__((used)) = "<name>";
+
+
+Which ``dpdk-pmdinfogen`` scans for. Using this information other relevant
+bits of data can be exported from the object file and used to produce a
+hardware support description, that ``dpdk-pmdinfogen`` then encodes into a
+json formatted string in the following format:
+
+.. code-block:: c
+
+ static char <name_pmd_string>="PMD_INFO_STRING=\"{'name' : '<name>', ...}\"";
+
+
+These strings can then be searched for by external tools to determine the
+hardware support of a given library or application.
+
+
.. _Useful_Variables_Provided_by_the_Build_System:
Useful Variables Provided by the Build System
By default, the variable is set to /lib/modules/$(shell uname -r)/build,
which is correct when the target machine is also the build machine.
+* RTE_DEVEL_BUILD: Stricter options (stop on warning). It defaults to y in a git tree.
+
Variables that Can be Set/Overridden in a Makefile Only
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* LDFLAGS_my_app: Specific flags to add when linking my_app.
-* NO_AUTOLIBS: If set, the libraries provided by the framework will not be included in the LDLIBS variable automatically.
-
* EXTRA_CFLAGS: The content of this variable is appended after CFLAGS when compiling.
* EXTRA_LDFLAGS: The content of this variable is appended after LDFLAGS when linking.
+* EXTRA_LDLIBS: The content of this variable is appended after LDLIBS when linking.
+
* EXTRA_ASFLAGS: The content of this variable is appended after ASFLAGS when assembling.
* EXTRA_CPPFLAGS: The content of this variable is appended after CPPFLAGS when using a C preprocessor on assembly files.