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

AUTOMAKE_OPTIONS = foreign subdir-objects

ACLOCAL_AMFLAGS = -I m4

AM_CPPFLAGS = -g -DMEMIF_DBG -DICMP_DBG

SRCS_C := $(shell find . -name "*.c" )
SRCS_H := $(shell find . -name "*.h" )

.PHONY: release
release:
	$(MAKE) AM_CPPFLAGS="-O3"

.PHONY: doc
doc:
	@echo Building doxygen documentation...
	doxygen doxygen.conf
	@echo Doxygen documentation built in docs directory.

.PHONY: fixstyle
fixstyle:
	@echo Fixing code style...
	indent $(SRCS_C) $(SRCS_H)
	@echo Code style fixed!

#
# unit_test
#
unit_test_SOURCES = test/unit_test.c \
                    test/main_test.c \
                    test/socket_test.c \
                    src/main.c \
                    src/socket.c
# macro MEMIF_UNIT_TEST -> compile functions without static keyword
# and declare them in header files, so they can be called from unit tests
unit_test_CPPFLAGS = $(AM_CPPFLAGS) -Itest -Isrc -DMEMIF_UNIT_TEST -g $(CHECK_CFLAGS)
unit_test_LDADD = $(CHECK_LIBS)

#
# main lib
#
libmemif_la_SOURCES = src/main.c src/socket.c
libmemif_la_CPPFLAGS = $(AM_CPPFLAGS) -Isrc

#
# ICMP responder example
#
icmpr_SOURCES = examples/icmp_responder/main.c examples/icmp_responder/icmp_proto.c
icmpr_LDADD = libmemif.la
icmpr_CPPFLAGS = $(AM_CPPFLAGS) -Isrc -Iexamples/icmp_responder

#
# ICMP responder libmemif event polling example
#
icmpr_epoll_SOURCES = examples/icmp_responder-epoll/main.c \
                    examples/icmp_responder/icmp_proto.c
icmpr_epoll_LDADD = libmemif.la
icmpr_epoll_CPPFLAGS = $(AM_CPPFLAGS) -Isrc -Iexamples/icmp_responder

#
# ICMP responder multi-thread example
#
icmpr_mt_SOURCES = examples/icmp_responder-mt/main.c \
                      examples/icmp_responder/icmp_proto.c
icmpr_mt_LDADD = libmemif.la -lpthread
icmpr_mt_CPPFLAGS = $(AM_CPPFLAGS) -Isrc -Iexamples/icmp_responder

noinst_PROGRAMS = icmpr icmpr-epoll icmpr-mt

check_PROGRAMS = unit_test

include_HEADERS = src/libmemif.h

lib_LTLIBRARIES = libmemif.la

TESTS = $(check_PROGRAMS)
