# 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 libvlibapi.la libvlibmemoryclient.la \
	           libvlibsocket.la

libvlibmemory_la_DEPENDENCIES = libvppinfra.la libsvm.la libvlib.la
libvlibmemory_la_LIBADD = $(libvlibmemory_la_DEPENDENCIES) -lpthread
libvlibmemory_la_SOURCES =			\
	vlibmemory/api.h			\
	vlibmemory/memclnt.api			\
	vlibmemory/memory_shared.c		\
	vlibmemory/memory_vlib.c		\
	vlibmemory/vl_memory_api_h.h		\
	vlibmemory/vl_memory_msg_enum.h		\
	vlibmemory/unix_shared_memory_queue.c	\
	vlibmemory/unix_shared_memory_queue.h

libvlibapi_la_DEPENDENCIES = libvppinfra.la libvlib.la libvlibmemory.la
libvlibapi_la_LIBADD = $(libvlibapi_la_DEPENDENCIES)
libvlibapi_la_SOURCES = 			\
	vlibapi/api.h				\
        vlibapi/api_helper_macros.h		\
	vlibapi/api_shared.c			\
	vlibapi/node_serialize.c

nobase_include_HEADERS += vlibapi/api.h vlibapi/api_helper_macros.h

libvlibmemoryclient_la_DEPENDENCIES = libvppinfra.la libsvm.la libvlib.la libvlibmemory.la libvlibapi.la
libvlibmemoryclient_la_LIBADD = $(libvlibmemoryclient_la_DEPENDENCIES) -lpthread
libvlibmemoryclient_la_SOURCES = 		\
	vlibmemory/api.h			\
	vlibmemory/memclnt.api			\
	vlibmemory/memory_shared.c		\
	vlibmemory/memory_client.c		\
	vlibmemory/vl_memory_api_h.h		\
	vlibmemory/vl_memory_msg_enum.h		\
	vlibmemory/unix_shared_memory_queue.c	\
	vlibmemory/unix_shared_memory_queue.h

nobase_include_HEADERS +=			\
	vlibmemory/api.h			\
	vlibmemory/vl_memory_api_h.h		\
	vlibmemory/vl_memory_msg_enum.h		\
	vlibmemory/unix_shared_memory_queue.h 	\
	vlibmemory/memclnt.api.h

libvlibsocket_la_DEPENDENCIES = libvppinfra.la libvlib.la libvlibmemory.la libvlibapi.la
libvlibsocket_la_LIBADD = $(libvlibsocket_la_DEPENDENCIES)
libvlibsocket_la_SOURCES =			\
	vlibsocket/api.h			\
	vlibsocket/sockclnt.api			\
	vlibsocket/sockclnt_vlib.c		\
	vlibsocket/socksvr_vlib.c		\
	vlibsocket/vl_socket_api_h.h		\
	vlibsocket/vl_socket_msg_enum.h

nobase_include_HEADERS +=			\
	vlibsocket/api.h			\
	vlibsocket/vl_socket_api_h.h		\
	vlibsocket/vl_socket_msg_enum.h		\
	vlibsocket/sockclnt.api.h

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

API_FILES += vlibmemory/memclnt.api

# vi:syntax=automake
