# Copyright (c) 2015 Cisco and/or its affiliates.
# 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.

lib_LTLIBRARIES += libvlibmemory.la libvlibmemoryclient.la

libvlibmemory_la_DEPENDENCIES = libvppinfra.la libsvm.la libvlib.la
libvlibmemory_la_LIBADD = $(libvlibmemory_la_DEPENDENCIES) -lpthread
libvlibmemory_la_SOURCES =			\
	vlibapi/api.h				\
        vlibapi/api_helper_macros.h		\
	vlibapi/api_shared.c			\
	vlibapi/node_serialize.c		\
	vlibmemory/api.h			\
	vlibmemory/memclnt.api			\
	vlibmemory/memory_api.c			\
	vlibmemory/memory_shared.c		\
	vlibmemory/socket_api.c			\
	vlibmemory/vlib_api.c			\
	vlibmemory/vlib_api_cli.c		\
	vlibmemory/vl_memory_api_h.h		\
	vlibmemory/vl_memory_msg_enum.h

nobase_include_HEADERS += 			\
	vlibapi/api.h				\
	vlibapi/api_common.h			\
	vlibapi/api_helper_macros.h		\
	vlibapi/vat_helper_macros.h

libvlibmemoryclient_la_DEPENDENCIES = libvppinfra.la libsvm.la
libvlibmemoryclient_la_LIBADD = $(libvlibmemoryclient_la_DEPENDENCIES) -lpthread
libvlibmemoryclient_la_SOURCES = 		\
        vlibapi/api_helper_macros.h		\
	vlibapi/api_shared.c			\
	vlibapi/node_serialize.c		\
	vlibmemory/memclnt.api			\
	vlibmemory/memory_client.c		\
	vlibmemory/memory_shared.c		\
	vlibmemory/socket_client.c		\
	vlibmemory/vl_memory_api_h.h		\
	vlibmemory/vl_memory_msg_enum.h

nobase_include_HEADERS +=			\
	vlibmemory/api.h			\
	vlibmemory/memory_api.h			\
	vlibmemory/memory_shared.h		\
	vlibmemory/memory_client.h		\
	vlibmemory/socket_api.h			\
	vlibmemory/socket_client.h		\
	vlibmemory/vl_memory_api_h.h		\
	vlibmemory/vl_memory_msg_enum.h		\
	vlibmemory/memclnt.api.h

BUILT_SOURCES +=				\
	vlibmemory/memclnt.api.h		\
	vlibmemory/memclnt.api.json

noinst_PROGRAMS += sock_test

sock_test_SOURCES = vlibsocket/sock_test.c

API_FILES += vlibmemory/memclnt.api 

# vi:syntax=automake
