X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=doc%2Fguides%2Fprog_guide%2Fdev_kit_build_system.rst;h=05358d06f88c28866955e23877deea0ae92ce7a4;hb=c830cb295411fc71c3f3d3591308d531937dd58f;hp=5bfef58b5d32fd0eef4fd90d15f399af7e6e86b0;hpb=fea1d908d39989a27890b29b5c0ec94c85c8257b;p=dpdk.git diff --git a/doc/guides/prog_guide/dev_kit_build_system.rst b/doc/guides/prog_guide/dev_kit_build_system.rst index 5bfef58b5d..05358d06f8 100644 --- a/doc/guides/prog_guide/dev_kit_build_system.rst +++ b/doc/guides/prog_guide/dev_kit_build_system.rst @@ -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_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. @@ -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)) = ""; + + +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 ="PMD_INFO_STRING=\"{'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 @@ -343,6 +326,8 @@ 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 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -407,12 +392,12 @@ Variables that Can be Set/Overridden by the User in a Makefile or Command Line * 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.