drivers: use PCI registration macro
[dpdk.git] / doc / guides / prog_guide / dev_kit_build_system.rst
index 3e89eae..05358d0 100644 (file)
@@ -53,62 +53,7 @@ Build Directory Concept
 ~~~~~~~~~~~~~~~~~~~~~~~
 
 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_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.
@@ -264,7 +209,7 @@ These Makefiles generate a binary application.
 
 *   rte.extapp.mk: External application
 
-*   rte.hostapp.mk: Host application in the development kit framework
+*   rte.hostapp.mk: prerequisite tool to build dpdk
 
 Library
 ^^^^^^^
@@ -304,6 +249,44 @@ Misc
 
 *   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