# 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 += libvlib.la
libvlib_la_LIBADD = libvppinfra.la -ldl -lpthread
libvlib_la_DEPENDENCIES = libvppinfra.la

BUILT_SOURCES += vlib/config.h

vlib/config.h:
	@echo "#define __PRE_DATA_SIZE" @PRE_DATA_SIZE@ > $@

libvlib_la_SOURCES =				\
  vlib/buffer.c					\
  vlib/buffer_serialize.c			\
  vlib/cli.c					\
  vlib/cli.h					\
  vlib/config.h					\
  vlib/counter.c				\
  vlib/error.c					\
  vlib/format.c					\
  vlib/i2c.c					\
  vlib/init.c					\
  vlib/linux/pci.c				\
  vlib/linux/physmem.c				\
  vlib/main.c					\
  vlib/mc.c					\
  vlib/node.c					\
  vlib/node_cli.c				\
  vlib/node_format.c				\
  vlib/pci/pci.c				\
  vlib/threads.c				\
  vlib/threads_cli.c				\
  vlib/trace.c

nobase_include_HEADERS +=			\
  vlib/buffer_funcs.h				\
  vlib/buffer_node.h				\
  vlib/buffer.h					\
  vlib/cli.h					\
  vlib/cli_funcs.h				\
  vlib/config.h					\
  vlib/counter.h				\
  vlib/defs.h					\
  vlib/error_funcs.h				\
  vlib/error.h					\
  vlib/format_funcs.h				\
  vlib/global_funcs.h				\
  vlib/i2c.h					\
  vlib/init.h					\
  vlib/main.h					\
  vlib/mc.h					\
  vlib/node_funcs.h				\
  vlib/node.h					\
  vlib/physmem.h				\
  vlib/pci/pci.h				\
  vlib/pci/pci_config.h				\
  vlib/physmem_funcs.h				\
  vlib/threads.h				\
  vlib/trace_funcs.h				\
  vlib/trace.h					\
  vlib/vlib.h

libvlib_la_SOURCES +=				\
  vlib/unix/cj.c				\
  vlib/unix/cli.c				\
  vlib/unix/input.c				\
  vlib/unix/main.c				\
  vlib/unix/mc_socket.c				\
  vlib/unix/plugin.c				\
  vlib/unix/plugin.h				\
  vlib/unix/util.c

nobase_include_HEADERS +=			\
  vlib/unix/cj.h				\
  vlib/unix/mc_socket.h				\
  vlib/unix/plugin.h				\
  vlib/unix/unix.h

noinst_PROGRAMS += vlib_unix

vlib_unix_SOURCES =				\
  examples/vlib/main_stub.c			\
  examples/vlib/mc_test.c

vlib_unix_LDADD = libvlib.la \
	          libvppinfra.la -lpthread -lm -ldl -lrt

# vi:syntax=automake
