########################################################################
# File: Makefile
#	(Extracted from
#	   "$Id: Makefile,v 1.8 2009/06/14 07:19:25 maoyam Exp maoyam $")
#
# Abstracts:
#	  This makefile is defined to build the 'sort_linked_list' API.
#	  And this makefile generates the unit test program for the API.
#
# Copyright (C) 2005-2007 Maoyam Tokyo, Japan (mailto:maoyam@mail.goo.ne.jp)
#
#  This program is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 2 of the License, or
#  (at your option) any later version.
#
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
#  You should have received a copy of the GNU General Public License
#  along with this program; if not, write to the Free Software
#  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
#
########################################################################

## CC=g++
## CC=gcc -ansi
CC=gcc -std=c99

PROG= unit_test
SIMPLE_UNIT_TEST= ./$(PROG) -Q 
SRCS= unit_test.c sort_linked_list.c
CFLAGS= -Wall -pedantic -Wshadow -Wredundant-decls -Werror -DUnitTest
SPLINTOPTS=+posix_lib -compmempass -immediatetrans		\
		-mustfreeonly -temptrans -nullpass -branchstate	\
		-type -mustfreefresh -exitarg -unrecog		\
		-compdestroy -nullstate -nullret

$(PROG): $(SRCS)
	$(CC) -g $(CFLAGS) -o $@ $(SRCS)

splint:
	-splint $(SPLINTOPTS) unit_test.c
	-splint $(SPLINTOPTS) sort_linked_list.c

utest:
	./unit_test.bash

valgrind:
	make clean;
	make;
	(date; uname -a; gcc --version ; echo ;					\
	valgrind -v --leak-check=full $(SIMPLE_UNIT_TEST) 100	\
	) > valgrind.out`date +'%Y%m%d'`.txt 2>&1

gprof:
	make clean;
	$(CC) -pg $(CFLAGS) -o $(PROG) $(SRCS)
	$(SIMPLE_UNIT_TEST) 10000 > /dev/null 2>&1
	(date; uname -a ; gcc --version; echo ;		\
	gprof --version ; gprof $(PROG) gmon.out	\
	) > gprof.out`date +'%Y%m%d'`.txt 2>&1;
	rm gmon.out
	make clean;

clean:
	rm -f $(PROG) unit_test.exe

rcs:
	ci						\
		GPL.txt				\
		Makefile			\
		index.html			\
		sort_linked_list.c	\
		sort_linked_list.h	\
		unit_test.bash		\
		unit_test.c
	co -l					\
		GPL.txt				\
		Makefile			\
		index.html			\
		sort_linked_list.c	\
		sort_linked_list.h	\
		unit_test.bash		\
		unit_test.c
	rlog					\
		GPL.txt				\
		Makefile			\
		index.html			\
		sort_linked_list.c	\
		sort_linked_list.h	\
		unit_test.bash		\
		unit_test.c			> ChangeLogs.txt

