# Copyright (c) 2016 Cisco Systems, Inc.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at:
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

vppapitestplugins_LTLIBRARIES += dpdk_test_plugin.la
vppplugins_LTLIBRARIES += dpdk_plugin.la

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/main.c							\
  dpdk/buffer.c							\
  dpdk/thread.c							\
  dpdk/api/dpdk_api.c						\
  dpdk/device/cli.c						\
  dpdk/device/common.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					\
  dpdk/ipsec/esp_decrypt.c					\
  dpdk/ipsec/crypto_node.c					\
  dpdk/ipsec/cli.c						\
  dpdk/ipsec/ipsec.c						\
  dpdk/api/dpdk_plugin.api.h

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					\
  dpdk/ipsec/ipsec.h

dpdk_test_plugin_la_SOURCES = 					\
  dpdk/api/dpdk_test.c dpdk/api/dpdk_plugin.api.h

# vi:syntax=automake