#######################################################################
# File: Makefile
# 	(Extracted from
#	   "$Id: Makefile,v 1.6 2009/06/22 15:09:44 maoyam Exp maoyam $")
#
# Abstracts:
#  This make file generates the test program for "abacus.c".
#
# Copyright (C) 2006-2009 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=gcc -std=c99
PROG=abacus
SRCS= abacus_test.c abacus.c
CFLAGS= -Wall -pedantic -Wshadow -Wredundant-decls -Werror -DRET_CAST='int'
##for-64bit-architecture## CFLAGS= -Wall -pedantic -Wshadow -Wredundant-decls -Werror -DRET_CAST='long long'

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

splint:
	splint	+posixlib -usedef -nullassign -observertrans	\
													abacus_test.c
	splint	+posixlib -duplicatequals +ignorequals		\
		-nullret -nullstate -compdef -mustfreeonly		\
		-temptrans -immediatetrans -usereleased			\
		-mustfreefresh -branchstate -nullpass			\
		-exportlocal -mayaliasunique -unsignedcompare	\
		-compdestroy -unrecog							\
													abacus.c;

utest:
	./$(PROG) > $(PROG).out`date +'%Y%m%d'`.txt 2>&1 

valgrind:
	make clean;
	make;
	(date; uname -a; $(CC) --version; file ./$(PROG); echo; valgrind -v --read-var-info=yes --track-origins=yes --leak-check=full ./$(PROG) ) > valgrind.out`date +'%Y%m%d'`.txt 2>&1

gprof:
	make clean;
	$(CC) -pg $(CFLAGS) -o $(PROG) $(SRCS)
	./$(PROG) -P > /dev/null 2>&1;
	(date; uname -a; $(CC) --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 abacus abacus.exe

rcs:
	ci					\
		GPL.txt			\
		Makefile		\
		abacus.c		\
		abacus.h		\
		abacus_test.c	\
		index.html
	co -l				\
		GPL.txt			\
		Makefile		\
		abacus.c		\
		abacus.h		\
		abacus_test.c	\
		index.html
	rlog				\
		GPL.txt			\
		Makefile		\
		abacus.c		\
		abacus.h		\
		abacus_test.c	\
		index.html

