# Copyright (c) 1999-2009, 2013-2017, 2020-2022 Paul Mattes.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#     * Redistributions of source code must retain the above copyright
#       notice, this list of conditions and the following disclaimer.
#     * Redistributions in binary form must reproduce the above copyright
#       notice, this list of conditions and the following disclaimer in the
#       documentation and/or other materials provided with the distribution.
#     * Neither the names of Paul Mattes nor the names of his contributors
#       may be used to endorse or promote products derived from this software
#       without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
# EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#

# Makefile for 32xx emulation library testing

RM = rm -f
CC = @CC@

all: test

BASE64_OBJS = base64_test.o base64.o sa_malloc.o
XPOPEN_OBJS = xpopen_test.o xpopen.o llist.o sa_malloc.o
OBJS = $(BASE64_OBJS) $(XPOPEN_OBJS)

CCOPTIONS = @CCOPTIONS@
XCPPFLAGS = -I$(THIS) -I$(THIS)/../include/unix -I$(THIS)/../include -I$(TOP)/include @CPPFLAGS@
CFLAGS = $(CCOPTIONS) $(CDEBUGFLAGS) $(XCPPFLAGS) -fprofile-arcs -ftest-coverage @CFLAGS@

test: base64_test xpopen_test
	$(RM) base64_test.gcda
	./base64_test $(TESTOPTIONS)
	$(RM) xpopen_test.gcda
	./xpopen_test $(TESTOPTIONS)

base64_test: $(BASE64_OBJS)
	$(CC) $(CFLAGS) -o $@ $(BASE64_OBJS)

xpopen_test: $(XPOPEN_OBJS)
	$(CC) $(CFLAGS) -o $@ $(XPOPEN_OBJS)

coverage: base64_coverage xpopen_coverage

base64_coverage: base64_test
	./base64_test
	gcov -k base64.c

xpopen_coverage: xpopen_test
	./xpopen_test
	gcov -k xpopen.c

clean:
	$(RM) *.o *.gcda *.gcno *.gcov

clobber: clean
	$(RM) base64_test xpopen_test

-include $(OBJS:.o=.d)
