VERSION := 0.1.3
PROJNAME := pbc
CC=gcc
CFLAGS=-O3 -Wall -pipe -ffast-math -fomit-frame-pointer
ALLFILES := *.[ch] Makefile NEWS LICENSE README 159.txt 201.txt

.PHONY: target dist clean

BINARIES=testfi testbbs testbb testbls testibe testsig testmnt benchmark

target: $(BINARIES)

OBJS=curve.o fp.o fieldquadratic.o poly.o darray.o mnt.o mpc.o pairing.o parse.o get_time.o solinas.o

$(OBJS): %.o: %.c
	$(CC) $(CFLAGS) -c $^

bmsolinas: bmsolinas.c $(OBJS)
	$(CC) -o $@ $(CFLAGS) $^ -lgmp -lm

benchmark: benchmark.c $(OBJS)
	$(CC) -o $@ $(CFLAGS) $^ -lgmp -lm

testfi: testfi.c $(OBJS)
	$(CC) -o $@ $(CFLAGS) $^ -lgmp -lm

testbbs: bbs.c $(OBJS)
	$(CC) -o $@ $(CFLAGS) $^ -lgmp -lm

testbls: testbls.c $(OBJS) sig.c
	$(CC) -o $@ $(CFLAGS) $^ -lgmp -lm

testbb: testbb.c $(OBJS) sig.c
	$(CC) -o $@ $(CFLAGS) $^ -lgmp -lm

testsig: testsig.c $(OBJS)
	$(CC) -o $@ $(CFLAGS) $^ -lgmp -lm

testibe: testibe.c $(OBJS)
	$(CC) -o $@ $(CFLAGS) $^ -lgmp -lm

testpairing: testpairing.c $(OBJS)
	$(CC) -o $@ $(CFLAGS) $^ -lgmp -lm

testmnt: testmnt.c $(OBJS)
	$(CC) -o $@ $(CFLAGS) $^ -lgmp -lm

testpoly: testpoly.o poly.o darray.o fp.o
	$(CC) -o $@ $(CFLAGS) $^ -lgmp

DISTNAME := $(PROJNAME)-$(VERSION)

dist: $(ALLFILES) clean
	-rm -rf $(DISTNAME)
	mkdir $(DISTNAME)
	cp -rl --parents $(ALLFILES) $(DISTNAME)
	tar chfz $(DISTNAME).tgz $(DISTNAME)
	-rm -rf $(DISTNAME)

clean:
	-rm *.o $(BINARIES)
