## ## Makefile for Standard, Profile, Debug, and Release version of MiniSat ## CSRCS = $(wildcard *.c) CHDRS = $(wildcard *.h) COBJS = $(addsuffix .o, $(basename $(CSRCS))) PCOBJS = $(addsuffix p, $(COBJS)) DCOBJS = $(addsuffix d, $(COBJS)) RCOBJS = $(addsuffix r, $(COBJS)) EXEC = bc_minisat_all CC = gcc CFLAGS = -std=c99 -fPIC COPTIMIZE = -O3 -fomit-frame-pointer .PHONY : s p d r build clean depend lib libd all: r s: WAY=standard p: WAY=profile d: WAY=debug r: WAY=release rs: WAY=release static # The solver can not count a huge number of solutions beyond a cerntain threshold. # To count precisely, install the GNU MP bignum library and uncomment the following GMPFLAGS and define GMP in MYFLAGS. GMPFLAGS = #GMPFLAGS += -lgmp MYFLAGS = #MYFLAGS += -D SIMPLIFY # Simplification of satisyfying assignments #MYFLAGS += -D NONDISJOINT # Nondisjoint partial satisfying assignments #MYFLAGS += -D FIXEDORDER # Variable selection ordering is fixed MYFLAGS += -D CONTINUE # Continue search at the point where a solution is found. #MYFLAGS += -D GMP # GNU MP bignum library is used s: CFLAGS+=$(COPTIMIZE) -ggdb -D NDEBUG $(MYFLAGS) -D VERBOSEDEBUG p: CFLAGS+=$(COPTIMIZE) -pg -ggdb -D DEBUG $(MYFLAGS) d: CFLAGS+=-O0 -ggdb -D DEBUG $(MYFLAGS) r: CFLAGS+=$(COPTIMIZE) -D NDEBUG $(MYFLAGS) rs: CFLAGS+=$(COPTIMIZE) -D NDEBUG $(MYFLAGS) s: build $(EXEC) p: build $(EXEC)_profile d: build $(EXEC)_debug r: build $(EXEC)_release rs: build $(EXEC)_static build: @echo Building $(EXEC) "("$(WAY)")" clean: @rm -f $(EXEC) $(EXEC)_profile $(EXEC)_debug $(EXEC)_release $(EXEC)_static \ $(COBJS) $(PCOBJS) $(DCOBJS) $(RCOBJS) depend.mak ## Build rule %.o %.op %.od %.or: %.c @echo Compiling: $< @$(CC) $(CFLAGS) -c -o $@ $< ## Linking rules (standard/profile/debug/release) $(EXEC): $(COBJS) @echo Linking $(EXEC) @$(CC) $(COBJS) $(GMPFLAGS) -lz -lm -ggdb -Wall -o $@ $(EXEC)_profile: $(PCOBJS) @echo Linking $@ @$(CC) $(PCOBJS) $(GMPFLAGS) -lz -lm -ggdb -Wall -pg -o $@ $(EXEC)_debug: $(DCOBJS) @echo Linking $@ @$(CC) $(DCOBJS) $(GMPFLAGS) -lz -lm -ggdb -Wall -o $@ $(EXEC)_release: $(RCOBJS) @echo Linking $@ @$(CC) $(RCOBJS) $(GMPFLAGS) -lz -lm -Wall -o $@ $(EXEC)_static: $(RCOBJS) @echo Linking $@ @$(CC) --static $(RCOBJS) $(GMPFLAGS) -lz -lm -Wall -o $@ lib: libbc_minisat_all.a libd: libbc_minisatd_all.a libbc_minisat_all.a: solver.or csolver.or @echo Library: "$@ ( $^ )" @rm -f $@ @ar cq $@ $^ libbc_minisatd_all.a: solver.od csolver.od @echo Library: "$@ ( $^ )" @rm -f $@ @ar cq $@ $^ ## Make dependencies depend: depend.mak depend.mak: $(CSRCS) $(CHDRS) @echo Making dependencies ... @$(CC) -MM $(CSRCS) > depend.mak @cp depend.mak /tmp/depend.mak.tmp @sed "s/o:/op:/" /tmp/depend.mak.tmp >> depend.mak @sed "s/o:/od:/" /tmp/depend.mak.tmp >> depend.mak @sed "s/o:/or:/" /tmp/depend.mak.tmp >> depend.mak @rm /tmp/depend.mak.tmp include depend.mak ## Coding style indent: indent -kr -i2 -ncs -brf -l1000 -T FILE -T solver -T lit -T bool -T lbool -T uint64 -T stats -T clause -T veci -T vecp *.c *.h