+++ /dev/null
-.. SPDX-License-Identifier: BSD-3-Clause
- Copyright(c) 2010-2014 Intel Corporation.
-
-Extending the DPDK
-=========================
-
-This chapter describes how a developer can extend the DPDK to provide a new library,
-a new target, or support a new target.
-
-Example: Adding a New Library libfoo
-------------------------------------
-
-To add a new library to the DPDK, proceed as follows:
-
-#. Add a new configuration option:
-
- .. code-block:: bash
-
- for f in config/\*; do \
- echo CONFIG_RTE_LIBFOO=y >> $f; done
-
-#. Create a new directory with sources:
-
- .. code-block:: console
-
- mkdir ${RTE_SDK}/lib/libfoo
- touch ${RTE_SDK}/lib/libfoo/foo.c
- touch ${RTE_SDK}/lib/libfoo/foo.h
-
-#. Add a foo() function in libfoo.
-
- Definition is in foo.c:
-
- .. code-block:: c
-
- void foo(void)
- {
- }
-
- Declaration is in foo.h:
-
- .. code-block:: c
-
- extern void foo(void);
-
-
-#. Update lib/Makefile:
-
- .. code-block:: console
-
- vi ${RTE_SDK}/lib/Makefile
- # add:
- # DIRS-$(CONFIG_RTE_LIBFOO) += libfoo
-
-#. Create a new Makefile for this library, for example, derived from mempool Makefile:
-
- .. code-block:: console
-
- cp ${RTE_SDK}/lib/librte_mempool/Makefile ${RTE_SDK}/lib/libfoo/
-
- vi ${RTE_SDK}/lib/libfoo/Makefile
- # replace:
- # librte_mempool -> libfoo
- # rte_mempool -> foo
-
-
-#. Update mk/DPDK.app.mk, and add -lfoo in LDLIBS variable when the option is enabled.
- This will automatically add this flag when linking a DPDK application.
-
-
-#. Build the DPDK with the new library (we only show a specific target here):
-
- .. code-block:: console
-
- cd ${RTE_SDK}
- make config T=x86_64-native-linux-gcc
- make
-
-
-#. Check that the library is installed:
-
- .. code-block:: console
-
- ls build/lib
- ls build/include
-
-Example: Using libfoo in the Test Application
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The test application is used to validate all functionality of the DPDK.
-Once you have added a library, a new test case should be added in the test application.
-
-* A new test_foo.c file should be added, that includes foo.h and calls the foo() function from test_foo().
- When the test passes, the test_foo() function should return 0.
-
-* Makefile, test.h and commands.c must be updated also, to handle the new test case.
-
-* Test report generation: autotest.py is a script that is used to generate the test report that is available in the
- ${RTE_SDK}/doc/rst/test_report/autotests directory. This script must be updated also.
- If libfoo is in a new test family, the links in ${RTE_SDK}/doc/rst/test_report/test_report.rst must be updated.
-
-* Build the DPDK with the updated test application (we only show a specific target here):
-
-
- .. code-block:: console
-
- cd ${RTE_SDK}
- make config T=x86_64-native-linux-gcc
- make