# Copyright (c) 2017 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.

vppplugins_LTLIBRARIES += memif_plugin.la
vppapitestplugins_LTLIBRARIES += memif_test_plugin.la

memif_plugin_la_LIBADD =
memif_plugin_la_SOURCES = memif/memif.c   \
	memif/memif_api.c                 \
	memif/cli.c                       \
	memif/node.c                      \
	memif/device.c                    \
	memif/socket.c                    \
	memif/memif_plugin.api.h

memif_test_plugin_la_SOURCES = \
  memif/memif_test.c memif/memif_plugin.api.h

noinst_HEADERS += memif/memif.h

nobase_apiinclude_HEADERS +=              \
		  memif/memif_all_api_h.h \
		  memif/memif_msg_enum.h  \
		  memif/memif.api.h

API_FILES += memif/memif.api

if CPU_X86_64
memif_multiversioning_files = 					\
	memif/node.c						\
	memif/device.c

if CC_SUPPORTS_AVX2
###############################################################
# AVX2
###############################################################
libmemif_plugin_avx2_la_SOURCES = $(memif_multiversioning_files)
libmemif_plugin_avx2_la_CFLAGS =				\
	$(AM_CFLAGS)  @CPU_AVX2_FLAGS@				\
	-DCLIB_MULTIARCH_VARIANT=avx2
noinst_LTLIBRARIES += libmemif_plugin_avx2.la
memif_plugin_la_LIBADD += libmemif_plugin_avx2.la
endif

if CC_SUPPORTS_AVX512
###############################################################
# AVX512
###############################################################
libmemif_plugin_avx512_la_SOURCES = $(memif_multiversioning_files)
libmemif_plugin_avx512_la_CFLAGS =				\
	$(AM_CFLAGS) @CPU_AVX512_FLAGS@				\
	-DCLIB_MULTIARCH_VARIANT=avx512
noinst_LTLIBRARIES += libmemif_plugin_avx512.la
memif_plugin_la_LIBADD += libmemif_plugin_avx512.la
endif
endif

# vi:syntax=automake
