vnet: device flow offload infra
[vpp.git] / src / plugins / dpdk.am
index 212bbb7..7c6e005 100644 (file)
 vppapitestplugins_LTLIBRARIES += dpdk_test_plugin.la
 vppplugins_LTLIBRARIES += dpdk_plugin.la
 
-dpdk_plugin_la_LDFLAGS = $(AM_LDFLAGS) -Wl,--whole-archive,-l:libdpdk.a,--no-whole-archive,-lm,-ldl
+if ENABLE_DPDK_SHARED
+dpdk_plugin_la_LDFLAGS = $(AM_LDFLAGS) -ldpdk
+else
+dpdk_plugin_la_LDFLAGS = $(AM_LDFLAGS) -Wl,--whole-archive,-l:libdpdk.a,--no-whole-archive
+endif
+if WITH_AESNI_MB_LIB
+dpdk_plugin_la_LDFLAGS += -Wl,--exclude-libs,libIPSec_MB.a,-l:libIPSec_MB.a
+endif
+if WITH_ISA_L_CRYPTO_LIB
+dpdk_plugin_la_LDFLAGS += -Wl,--exclude-libs,libisal_crypto.a,-l:libisal_crypto.a
+endif
+dpdk_plugin_la_CFLAGS = $(AM_CFLAGS)
+dpdk_plugin_la_LDFLAGS += -Wl,-lnuma
+
+dpdk_plugin_la_LDFLAGS += -Wl,-lm,-ldl
+dpdk_plugin_la_LIBADD =
 
 dpdk_plugin_la_SOURCES =                                       \
-  dpdk/init.c                                                  \
   dpdk/main.c                                                  \
   dpdk/buffer.c                                                        \
   dpdk/thread.c                                                        \
+  dpdk/api/dpdk_api.c                                          \
   dpdk/device/cli.c                                            \
+  dpdk/device/common.c                                         \
+  dpdk/device/flow.c                                           \
   dpdk/device/dpdk_priv.h                                      \
   dpdk/device/device.c                                         \
   dpdk/device/format.c                                         \
+  dpdk/device/init.c                                           \
   dpdk/device/node.c                                           \
   dpdk/hqos/hqos.c                                             \
   dpdk/ipsec/esp_encrypt.c                                     \
@@ -36,13 +54,41 @@ dpdk_plugin_la_SOURCES =                                    \
 
 API_FILES += dpdk/api/dpdk.api
 
+if CPU_X86_64
+dpdk_multiversioning_files =                                   \
+       dpdk/buffer.c                                           \
+       dpdk/device/node.c                                      \
+       dpdk/device/device.c
+
+if CC_SUPPORTS_AVX2
+###############################################################
+# AVX2
+###############################################################
+libdpdk_plugin_avx2_la_SOURCES = $(dpdk_multiversioning_files)
+libdpdk_plugin_avx2_la_CFLAGS =                                        \
+       $(AM_CFLAGS)  @CPU_AVX2_FLAGS@                          \
+       -DCLIB_MULTIARCH_VARIANT=avx2
+noinst_LTLIBRARIES += libdpdk_plugin_avx2.la
+dpdk_plugin_la_LIBADD += libdpdk_plugin_avx2.la
+endif
+
+if CC_SUPPORTS_AVX512
+###############################################################
+# AVX512
+###############################################################
+libdpdk_plugin_avx512_la_SOURCES = $(dpdk_multiversioning_files)
+libdpdk_plugin_avx512_la_CFLAGS =                              \
+       $(AM_CFLAGS) @CPU_AVX512_FLAGS@                         \
+       -DCLIB_MULTIARCH_VARIANT=avx512
+noinst_LTLIBRARIES += libdpdk_plugin_avx512.la
+dpdk_plugin_la_LIBADD += libdpdk_plugin_avx512.la
+endif
+endif
+
 nobase_include_HEADERS +=                                      \
   dpdk/device/dpdk.h                                           \
-  dpdk/api/dpdk_all_api_h.h
-
-nobase_include_HEADERS +=                      \
- dpdk/ipsec/ipsec.h            \
- dpdk/ipsec/esp.h
+  dpdk/api/dpdk_all_api_h.h                                    \
+  dpdk/ipsec/ipsec.h
 
 dpdk_test_plugin_la_SOURCES =                                  \
   dpdk/api/dpdk_test.c dpdk/api/dpdk_plugin.api.h