#----------------------------------------------------------------------------# # Makefile for the dddmp distribution kit # # dddmp: Decision Diagram DuMP # # (storage and retrieval of BDDs, ADDs and CNF formulas) # # Revision: Version 2.0.2, February 01, 2004 # #----------------------------------------------------------------------------# # Commands Available: # make # it makes the library libdddmp.a # make testdddmp # it makes the testdddmp program, which allows to test the dddmp # package # make clean # it cleans dddmp # make distclean # it cleans dddmp (as clean) with libraries and executable # files #----------------------------------------------------------------------------# # Configuration Section # # uncomment the desired options/sections # #----------------------------------------------------------------------------# #--------------------# # Define Directories # #--------------------# # Cudd directory WHERE = .. #WHERE = ../cudd-2.4.0 # Include directory (Cudd include files) INCLUDE = $(WHERE)/include #------------------------# # Define C Compiler Used # #------------------------# CC = gcc #CC = g++ #CC = cc #CC = icc #CC = ecc #CC = /usr/ucb/cc #CC = c89 .SUFFIXES: .o .c .u #---------------# # Define ranlib # #---------------# # For machines with ranlib and you think it is needed RANLIB = ranlib # For machines which either do not have ranlib or can do without it #RANLIB = : #----------------------------------# # Define Machine Independent Flags # #----------------------------------# # Settings for cc #ICFLAGS = #ICFLAGS = -g #ICFLAGS = -O # Settings for optimized code with gcc #ICFLAGS = -g -Wall #ICFLAGS = -g -O3 -Wall ICFLAGS = -g -O6 -Wall #--------------------------------# # Define Machine Dependent Flags # #--------------------------------# # When no special flags are needed #XCFLAGS = -DHAVE_IEEE_754 -DBSD # Linux with Gcc 2.8.1 or higher on i686. #XCFLAGS = -mcpu=pentiumpro -malign-double -DHAVE_IEEE_754 -DBSD # Gcc 3.3.2 or higher on i686. XCFLAGS = -mcpu=pentium4 -malign-double -DHAVE_IEEE_754 -DBSD # For Solaris, BSD should not be replaced by UNIX100. #XCFLAGS = -DHAVE_IEEE_754 -DUNIX100 -DEPD_BIG_ENDIAN # New native compiler for the Alphas; 64-bit pointers. #XCFLAGS = -g3 -O4 -std -DBSD -DHAVE_IEEE_754 -ieee_with_no_inexact -tune host -DSIZEOF_VOID_P=8 -DSIZEOF_LONG=8 # New native compiler for the Alphas; 32-bit pointers. #XCFLAGS = -g3 -O4 -std -DBSD -DHAVE_IEEE_754 -ieee_with_no_inexact -tune host -xtaso -DSIZEOF_LONG=8 # Windows95/98/NT/XP with Cygwin tools #XCFLAGS = -mcpu=pentiumpro -malign-double -DHAVE_IEEE_754 -DHAVE_GETRLIMIT=0 -DRLIMIT_DATA_DEFAULT=67108864 #---------------------------------------------# # Define Level of Self-Checking and Verbosity # #---------------------------------------------# # ... for the CUDD package #DDDEBUG = -DDD_DEBUG -DDD_VERBOSE -DDD_STATS -DDD_CACHE_PROFILE -DDD_UNIQUE_PROFILE -DDD_COUNT DDDEBUG = # ... for the MTR package #MTRDEBUG = -DMTR_DEBUG MTRDEBUG = # ... for the DDDMP package #DDDMPDEBUG = -DDDDMP_DEBUG DDDMPDEBUG = #-----------------------# # Define Loader Options # #-----------------------# LDFLAGS = # This may produce faster code on the DECstations. #LDFLAGS = -jmpopt -Olimit 1000 # This may be necessary under some old versions of Linux. #LDFLAGS = -static # This normally makes the program faster on the DEC Alphas. #LDFLAGS = -non_shared -om # This is for 32-bit pointers on the DEC Alphas. #LDFLAGS = -non_shared -om -taso #LDFLAGS = -non_shared -taso #-------------# # Define PURE # #-------------# PURE = # ... as purify to link with purify. #PURE = purify # ... as quantify to link with quantify. #PURE = quantify #------------# # Define EXE # #------------# EXE = # ... as .exe for MS-DOS and derivatives. #EXE = .exe #----------------------------------------------------------------------------# # Files for the Package # #----------------------------------------------------------------------------# P = dddmp PSRC = dddmpStoreBdd.c dddmpStoreAdd.c dddmpStoreCnf.c \ dddmpLoad.c dddmpLoadCnf.c \ dddmpNodeBdd.c dddmpNodeAdd.c dddmpNodeCnf.c \ dddmpStoreMisc.c dddmpUtil.c dddmpBinary.c dddmpConvert.c \ dddmpDbg.c PHDR = dddmp.h dddmpInt.h $(INCLUDE)/cudd.h $(INCLUDE)/cuddInt.h POBJ = $(PSRC:.c=.o) PUBJ = $(PSRC:.c=.u) TARGET = test$(P)$(EXE) TARGETu = test$(P)-u # files for the test program SRC = test$(P).c OBJ = $(SRC:.c=.o) UBJ = $(SRC:.c=.u) #----------------------------------------------------------------------------# # Rules to compile and build libraries and executables # #----------------------------------------------------------------------------# #MFLAG = MFLAG = -DMNEMOSYNE MNEMLIB = ../mnemosyne/libmnem.a # This is to create the lint library LINTFLAGS = -u -n LINTSWITCH = -o LIBS = ./libdddmp.a $(WHERE)/cudd/libcudd.a $(WHERE)/mtr/libmtr.a \ $(WHERE)/st/libst.a $(WHERE)/util/libutil.a $(WHERE)/epd/libepd.a MNEMLIB = BLIBS = -kL. -kldddmp -kL$(WHERE)/cudd -klcudd -kL$(WHERE)/mtr -klmtr \ -kL$(WHERE)/st -klst -kL$(WHERE)/util -klutil LINTLIBS = ./llib-ldddmp.ln $(WHERE)/cudd/llib-lcudd.ln \ $(WHERE)/mtr/llib-lmtr.ln $(WHERE)/st/llib-lst.ln \ $(WHERE)/util/llib-lutil.ln lib$(P).a: $(POBJ) ar rv $@ $? $(RANLIB) $@ .c.o: $(PHDR) $(CC) -c $< -I$(INCLUDE) $(ICFLAGS) $(XCFLAGS) $(DDDEBUG) $(MTRDEBUG) $(DDDMPDEBUG) $(LDFLAGS) optimize_dec: lib$(P).b lib$(P).b: $(PUBJ) ar rv $@ $? $(RANLIB) $@ .c.u: $(PHDR) cc -c $< -I$(INCLUDE) $(CFLAGS) # if the header files change, recompile $(POBJ): $(PHDR) $(PUBJ): $(PHDR) $(OBJ): $(PHDR) $(UBJ): $(PHDR) $(TARGET): $(SRC) $(OBJ) $(PHDR) $(LIBS) $(MNEMLIB) $(PURE) $(CC) $(ICFLAGS) $(XCFLAGS) $(DDDEBUG) $(MTRDEBUG) $(DDDMPDEBUG) $(LDFLAGS) -o $@ $(OBJ) $(LIBS) $(MNEMLIB) -lm # optimize (DECstations and Alphas only: uses u-code) $(TARGETu): $(SRC) $(UBJ) $(PHDR) $(LIBS:.a=.b) cc -O3 -Olimit 1000 $(XCFLAGS) $(LDFLAGS) -o $@ $(UBJ) $(BLIBS) -lm lint: llib-l$(P).ln llib-l$(P).ln: $(PSRC) $(PHDR) lint $(LINTFLAGS) $(LINTSWITCH)$(P) -I$(INCLUDE) $(PSRC) lintpgm: lint lint $(LINTFLAGS) -I$(INCLUDE) $(SRC) $(LINTLIBS) tags: $(PSRC) $(PHDR) ctags $(PSRC) $(PHDR) all: lib$(P).a lib$(P).b llib-l$(P).ln tags programs: $(TARGET) $(TARGETu) lintpgm #----------------------------------------------------------------------------# # Clean the Package # #----------------------------------------------------------------------------# clean: rm -f *.o *.u mon.out gmon.out *.pixie *.Addrs *.Counts mnem.* \ .pure core *.warnings distclean: clean rm -f $(TARGET) $(TARGETu) lib*.a lib$(P).b llib-l$(P).ln \ *.bak *~ tags .gdb_history *.qv *.qx