# choose your C compiler.
#CC = cc
CC = gcc

#CFLAGS = -O3
CFLAGS = -O3 -ansi -lm

SRC = ./src
DST = ./
EXEC = ./bin

HEADER = $(SRC)/header.c $(SRC)/formulae.c $(SRC)/randgen.c 
INOUT= $(SRC)/inout.c


benchmarks: bound qbf qbf-S5n qbf-inv qbf-cpdl psat psat-inv

analysis:
	$(CC) $(CFLAGS) evaluate.c -o evaluate

clean:
	rm -f $(EXEC)/bound \
              $(EXEC)/qbf $(EXEC)/qbf-S5n $(EXEC)/qbf-inv $(EXEC)/qbf-cpdl \
              $(EXEC)/psat $(EXEC)/psat-inv

bound: 
	$(CC) $(CFLAGS) bound.c -o bound
	chmod a+x bound
	mv bound $(EXEC)
qbf:
	$(CC) $(CFLAGS) qbf.c -o qbf
	chmod a+x qbf
	mv qbf $(EXEC)

qbf-S5n:
	$(CC) $(CFLAGS) qbf-S5n.c -o qbf-S5n
	chmod a+x qbf-S5n
	mv qbf-S5n $(EXEC)

qbf-inv:
	$(CC) $(CFLAGS) qbf-inv.c -o qbf-inv
	chmod a+x qbf-inv
	mv qbf-inv $(EXEC)

qbf-cpdl:
	$(CC) $(CFLAGS) qbf-cpdl.c -o qbf-cpdl
	chmod a+x qbf-cpdl
	mv qbf-cpdl $(EXEC)

psat:	
	$(CC) $(CFLAGS) psat.c -o psat
	chmod a+x psat
	mv psat $(EXEC)

psat-inv:
	$(CC) $(CFLAGS) psat-inv.c -o psat-inv
	chmod a+x psat-inv
	mv psat-inv $(EXEC)


#################################################################

distrib: remove assembly

assembly: Abound Aqbf Aqbf-S5n Aqbf-inv Aqbf-cpdl Apsat Apsat-inv

remove: clean
	rm -f bound.c qbf.c qbf-S5n.c qbf-inv.c qbf-cpdl.c psat.c psat-inv.c

Abound: $(HEADER) $(INOUT) $(SRC)/modalizer.c \
        $(SRC)/bound-def.c $(SRC)/bound-gen.c $(SRC)/bound-main.c
	rm -f bound.c
	cat $(HEADER) $(SRC)/bound-def.c \
            $(SRC)/modalizer.c $(SRC)/bound-gen.c \
            $(INOUT) $(SRC)/bound-main.c > bound.c

Aqbf: $(HEADER) $(INOUT) $(SRC)/modalizer.c $(SRC)/qbf-fml.c \
	$(SRC)/qbf-def.c $(SRC)/qbf-gen.c $(SRC)/qbf-main.c
	rm -f qbf.c
	cat $(HEADER) $(SRC)/qbf-def.c $(SRC)/qbf-fml.c \
            $(SRC)/modalizer.c $(SRC)/qbf-gen.c \
            $(INOUT) $(SRC)/qbf-main.c > qbf.c

Aqbf-S5n: $(HEADER) $(INOUT) $(SRC)/multimod.c $(SRC)/qbf-fml.c \
	$(SRC)/qbf-S5n-def.c $(SRC)/qbf-S5n-gen.c $(SRC)/qbf-S5n-main.c
	rm -f qbf-S5n.c
	cat $(HEADER) $(SRC)/qbf-S5n-def.c $(SRC)/qbf-fml.c \
            $(SRC)/multimod.c $(SRC)/qbf-S5n-gen.c \
            $(INOUT) $(SRC)/qbf-S5n-main.c > qbf-S5n.c

Aqbf-inv: $(HEADER) $(INOUT) $(SRC)/modalinv.c $(SRC)/qbf-fml.c \
	$(SRC)/qbf-inv-def.c $(SRC)/qbf-inv-gen.c $(SRC)/qbf-inv-main.c
	rm -f qbf-inv.c
	cat $(HEADER) $(SRC)/qbf-inv-def.c $(SRC)/qbf-fml.c \
            $(SRC)/modalinv.c $(SRC)/qbf-inv-gen.c \
            $(INOUT) $(SRC)/qbf-inv-main.c > qbf-inv.c

Aqbf-cpdl: $(HEADER) $(INOUT) $(SRC)/modalcpdl.c $(SRC)/qbf-fml.c \
	$(SRC)/qbf-cpdl-def.c $(SRC)/qbf-cpdl-gen.c $(SRC)/qbf-cpdl-main.c
	rm -f qbf-cpdl.c
	cat $(HEADER) $(SRC)/qbf-cpdl-def.c $(SRC)/qbf-fml.c  \
            $(SRC)/modalcpdl.c $(SRC)/qbf-cpdl-gen.c \
            $(INOUT) $(SRC)/qbf-cpdl-main.c > qbf-cpdl.c

Apsat:	$(HEADER) $(INOUT) $(SRC)/modalizer.c \
	$(SRC)/psat-def.c $(SRC)/psat-gen.c $(SRC)/psat-main.c
	rm -f psat.c
	cat $(HEADER) $(SRC)/psat-def.c \
            $(SRC)/modalizer.c $(SRC)/psat-gen.c \
            $(INOUT) $(SRC)/psat-main.c > psat.c

Apsat-inv: $(HEADER) $(INOUT) $(SRC)/modalinv.c \
	$(SRC)/psat-inv-def.c $(SRC)/psat-inv-gen.c $(SRC)/psat-inv-main.c
	rm -f psat-inv.c
	cat $(HEADER) $(SRC)/psat-inv-def.c \
            $(SRC)/modalinv.c $(SRC)/psat-inv-gen.c \
            $(INOUT) $(SRC)/psat-inv-main.c > psat-inv.c


