# This file replaces the original Makefile for ZChaff.

CC = g++
cc = gcc

CNF = ./cnf
HGR = ./hgr2bdt

CFLAGS = -DNDEBUG -O3 

#ifeq (solaris, $(OSTYPE))
	MFLAGS = -D_NEED_REDEFINE_RAND_MAX_
	HMETIS_LIB = $(HGR)/hmetis-solaris/libhmetis.a
#else
#	ifneq (linux, $(OSTYPE))
#    		echo "WARNING: This thing is not tested under os other than Linux and Solaris"
#  	endif
#  	HMETIS_LIB = $(HGR)/hmetis-1.5-linux/libhmetis.a
#endif

RANLIB = ranlib
AR = ar

.SUFFIXES: .o .cpp .c

HEADERS = asap_base.h asap_clsgen.h asap_common.h asap_dbase.h asap_solver.h dtree_solver.h 

SOLVER_SRCS = sat_solver.cpp 
SOLVER_OBJS = $(SOLVER_SRCS:.cpp=.o)

CNF_OBJS = $(CNF)/clause.o $(CNF)/cnf.o $(CNF)/dtree.o $(CNF)/list.o 
HGR_OBJS = $(HGR)/main.o $(HGR)/cnf2hgr.o $(HGR)/hgr2bdt.o $(HGR)/dman.o $(HGR)/dtree.o $(HGR)/elimorder.o $(HGR)/hypergraph.o 

LIB_SRCS =  asap_utils.cpp asap_solver.cpp asap_dbase.cpp asap_c_wrapper.cpp  asap_cpp_wrapper.cpp dtree_solver.cpp
LIB_OBJS = $(LIB_SRCS:.cpp=.o) 

TARGET:   $(SOLVER_OBJS) libsat.a
	$(CC) $(LINKFLAGS) $(CFLAGS) $(MFLAGS) -o asap $(SOLVER_OBJS) libsat.a $(HMETIS_LIB)
$(LIB_OBJS): $(HEADERS) Makefile

libsat.a:   $(LIB_OBJS) $(CNF_OBJS) $(HGR_OBJS)
	@rm -f libsat.a
	$(AR) cr libsat.a $(LIB_OBJS) $(CNF_OBJS) $(HGR_OBJS)
	$(RANLIB) libsat.a

clean:
	@rm *.o $(CNF)/*.o $(HGR)/*.o

.cpp.o:
	$(CC) $(CFLAGS) $(MFLAGS) -c $< -o $*.o
.cc.o:
	$(CC) $(CFLAGS) $(MFLAGS) -c $< -o $*.o



