# Makefile for compiling and installing the Mathomatic Prime Number Tools
# under a Unix-like system.

CC		?= gcc
INSTALL		?= install

CFLAGS		+= -O3 -Wall -std=gnu99 # gcc specific flags; comment out for other C compilers.
#CFLAGS		+= -fomit-frame-pointer # Uncomment this line to optimize further with gcc.
LDLIBS		+= -lm

# Install directories follow, installs everything in /usr/local by default:
prefix		?= /usr/local
bindir		?= $(prefix)/bin
mandir		?= $(prefix)/share/man

# The executables to create:
TARGETS		= matho-primes matho-pascal matho-sumsq
# The man pages to install:
MAN1		= matho-primes.1 matho-pascal.1 matho-sumsq.1

all: $(TARGETS) # make these by default

matho-sumsq: matho-sumsq.o lsqrt.o

check test:
	time ./matho-primes 10000000000000 10000000300000 twin >test.out && diff -u twins.out test.out
	@rm test.out
	@echo Test passed.

bigtest:
	time ./matho-primes 100000000000000000 100000000000300000 twin >test.out && diff -u bigtwins.out test.out
	@rm test.out
	@echo Test passed.

install:
	$(INSTALL) -d $(bindir)
	$(INSTALL) -d $(mandir)/man1
	$(INSTALL) -m 0755 $(TARGETS) $(bindir)
	$(INSTALL) -m 0644 $(MAN1) $(mandir)/man1
	@echo The following utilities are now installed: $(TARGETS)

uninstall:
	cd $(bindir) && rm -f $(TARGETS)
	cd $(mandir)/man1 && rm -f $(MAN1)
	@echo Uninstall completed.

clean flush:
	rm -f *.o
	rm -f $(TARGETS)
	rm -f test.out
