You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							323 lines
						
					
					
						
							11 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							323 lines
						
					
					
						
							11 KiB
						
					
					
				
								# $Id$
							 | 
						|
								#
							 | 
						|
								# Makefile for the CUDD distribution kit
							 | 
						|
								#---------------------------------------------------------------------------
							 | 
						|
								
							 | 
						|
								# Beginning of the configuration section. These symbol definitions can
							 | 
						|
								# be overridden from the command line.
							 | 
						|
								
							 | 
						|
								# C++ compiler
							 | 
						|
								#CXX	= g++
							 | 
						|
								#CXX	= icpc
							 | 
						|
								#CXX	= ecpc
							 | 
						|
								#CXX	= CC
							 | 
						|
								#CXX	= /usr/local/opt/SUNWspro/bin/CC
							 | 
						|
								#CXX	= cxx
							 | 
						|
								CXX	= clang++
							 | 
						|
								
							 | 
						|
								# Specific options for compilation of C++ files.
							 | 
						|
								CXXFLAGS = -std=c++11 -stdlib=libc++
							 | 
						|
								# Stricter standard conformance for g++.
							 | 
						|
								#CXXFLAGS = -std=c++98
							 | 
						|
								# For Sun CC version 5, this invokes compatibility mode.
							 | 
						|
								#CXXFLAGS = -compat
							 | 
						|
								# On some versions of UP-UX, it is necessary to pass the option +a1
							 | 
						|
								# to CC for the C++ test program to compile successfully.
							 | 
						|
								#CXXFLAGS = +a1
							 | 
						|
								
							 | 
						|
								# C compiler used for all targets except optimize_dec, which always uses cc.
							 | 
						|
								#CC	= cc
							 | 
						|
								#CC	= /usr/local/opt/SUNWspro/bin/cc
							 | 
						|
								#CC	= gcc
							 | 
						|
								#CC	= icc
							 | 
						|
								#CC	= ecc
							 | 
						|
								#CC	= /usr/ucb/cc
							 | 
						|
								#CC	= c89
							 | 
						|
								#CC	= $(CXX)
							 | 
						|
								CC	= clang
							 | 
						|
								
							 | 
						|
								# On some machines ranlib is either non-existent or redundant.
							 | 
						|
								# Use the following definition if your machine has ranlib and you think
							 | 
						|
								# it is needed.
							 | 
						|
								RANLIB	= ranlib
							 | 
						|
								# Use the following definition if your machine either does not have
							 | 
						|
								# ranlib (e.g., SUN running solaris) or can do without it (e.g., DEC Alpha).
							 | 
						|
								#RANLIB	= :
							 | 
						|
								
							 | 
						|
								# Use ICFLAGS to specify machine-independent compilation flags.
							 | 
						|
								# These three are typical settings for cc.
							 | 
						|
								#ICFLAGS	= -g
							 | 
						|
								#ICFLAGS	= -O
							 | 
						|
								#ICFLAGS	=
							 | 
						|
								# These two are typical settings for optimized code with gcc.
							 | 
						|
								#ICFLAGS	= -g -O3 -Wall
							 | 
						|
								ICFLAGS	= -O4
							 | 
						|
								
							 | 
						|
								# Use XCFLAGS to specify machine-dependent compilation flags.
							 | 
						|
								# For some platforms no special flags are needed.
							 | 
						|
								#XCFLAGS	= -DHAVE_IEEE_754 -DBSD
							 | 
						|
								#
							 | 
						|
								#==========================
							 | 
						|
								#  Linux
							 | 
						|
								#
							 | 
						|
								# Gcc 4.2.4 or higher on i686.
							 | 
						|
								XCFLAGS	= -arch x86_64 -DHAVE_IEEE_754 -DBSD -DSIZEOF_VOID_P=8 -DSIZEOF_LONG=8
							 | 
						|
								# Gcc 3.2.2 or higher on i686.
							 | 
						|
								#XCFLAGS	= -mtune=pentium4 -malign-double -DHAVE_IEEE_754 -DBSD
							 | 
						|
								# Gcc 2.8.1 on i686.
							 | 
						|
								#XCFLAGS	= -mcpu=pentiumpro -malign-double -DHAVE_IEEE_754 -DBSD
							 | 
						|
								# Gcc 4.2.4 or higher on x86_64 (64-bit compilation)
							 | 
						|
								#XCFLAGS	= -mtune=native -DHAVE_IEEE_754 -DBSD -DSIZEOF_VOID_P=8 -DSIZEOF_LONG=8
							 | 
						|
								# Gcc 4.2.4 or higher on x86_64 (32-bit compilation)
							 | 
						|
								#XCFLAGS	= -m32 -mtune=native -malign-double -DHAVE_IEEE_754 -DBSD
							 | 
						|
								# Icc on i686 (older versions may not support -xHost).
							 | 
						|
								#XCFLAGS	= -ansi -xHost -align -ip -DHAVE_IEEE_754 -DBSD
							 | 
						|
								# Icc on x86_64 (64-bit compilation).
							 | 
						|
								#XCFLAGS	= -ansi -xHost -align -ip -DHAVE_IEEE_754 -DBSD -DSIZEOF_VOID_P=8 -DSIZEOF_LONG=8
							 | 
						|
								# Gcc on ia64.
							 | 
						|
								#XCFLAGS	= -DHAVE_IEEE_754 -DBSD -DSIZEOF_VOID_P=8 -DSIZEOF_LONG=8
							 | 
						|
								# Icc/ecc on ia64.
							 | 
						|
								#XCFLAGS = -ansi -DBSD -DHAVE_IEEE_754 -DSIZEOF_VOID_P=8 -DSIZEOF_LONG=8
							 | 
						|
								#
							 | 
						|
								#==========================
							 | 
						|
								#  Solaris
							 | 
						|
								#
							 | 
						|
								# For Solaris, BSD should not be replaced by UNIX100.
							 | 
						|
								#XCFLAGS	= -DHAVE_IEEE_754 -DUNIX100 -DEPD_BIG_ENDIAN
							 | 
						|
								# Gcc 2.8.1 or higher on Ultrasparc.
							 | 
						|
								#XCFLAGS	= -mcpu=ultrasparc -DHAVE_IEEE_754 -DUNIX100 -DEPD_BIG_ENDIAN
							 | 
						|
								# For Solaris 2.5 and higher, optimized code with /usr/bin/cc or CC.
							 | 
						|
								#XCFLAGS	= -DHAVE_IEEE_754 -DUNIX100 -xO5 -native -dalign -DEPD_BIG_ENDIAN
							 | 
						|
								# On IA platforms, -dalign is not supported and causes warnings.
							 | 
						|
								#XCFLAGS	= -DHAVE_IEEE_754 -DUNIX100 -xO5 -native
							 | 
						|
								# Recent Sun compilers won't let you use -native on old Ultras.
							 | 
						|
								#XCFLAGS	= -DHAVE_IEEE_754 -DUNIX100 -xO5 -dalign -xlibmil -DEPD_BIG_ENDIAN
							 | 
						|
								# For Solaris 2.4, optimized code with /usr/bin/cc.
							 | 
						|
								#XCFLAGS	= -DHAVE_IEEE_754 -DUNIX100 -xO4 -dalign -DEPD_BIG_ENDIAN
							 | 
						|
								# For Solaris 2.5 and higher, optimized code with /usr/ucb/cc.
							 | 
						|
								#XCFLAGS	= -DHAVE_IEEE_754 -DBSD -xO5 -native -dalign -DEPD_BIG_ENDIAN
							 | 
						|
								#XCFLAGS	= -DHAVE_IEEE_754 -DBSD -xO5 -dalign -xlibmil -DEPD_BIG_ENDIAN
							 | 
						|
								# For Solaris 2.4, optimized code with /usr/ucb/cc.
							 | 
						|
								#XCFLAGS	= -DHAVE_IEEE_754 -DBSD -xO4 -dalign -DEPD_BIG_ENDIAN
							 | 
						|
								#
							 | 
						|
								#==========================
							 | 
						|
								#  DEC Alphas running Digital Unix
							 | 
						|
								#
							 | 
						|
								# For DEC Alphas either -ieee_with_inexact or -ieee_with_no_inexact is
							 | 
						|
								# needed. If you use only BDDs, -ieee_with_no_inexact is enough.
							 | 
						|
								# In the following, we consider three different compilers:
							 | 
						|
								# - the old native compiler (the one of MIPS ancestry that produces u-code);
							 | 
						|
								# - the new native compiler;
							 | 
						|
								# - gcc
							 | 
						|
								# On the Alphas, gcc (as of release 2.7.2) does not support 32-bit pointers
							 | 
						|
								# and IEEE 754 floating point arithmetic. Therefore, for this architecture
							 | 
						|
								# only, the native compilers provide a substatial advantage.
							 | 
						|
								# With the native compilers, specify -xtaso for 32-bit pointers.
							 | 
						|
								# Do not use -xtaso_short because explicit reference to stdout and stderr
							 | 
						|
								# does not work with this option. (Among other things.)
							 | 
						|
								# Notice that -taso must be included in LDFLAGS for -xtaso to work.
							 | 
						|
								# Given the number of possible choices, only some typical configurations
							 | 
						|
								# are proposed here.
							 | 
						|
								#
							 | 
						|
								# Old native compiler for the Alphas; 64-bit pointers.
							 | 
						|
								#XCFLAGS	= -DBSD -DHAVE_IEEE_754 -ieee_with_no_inexact -tune host -DSIZEOF_VOID_P=8 -DSIZEOF_LONG=8
							 | 
						|
								# Old native compiler for the Alphas; 32-bit pointers.
							 | 
						|
								#XCFLAGS	= -DBSD -DHAVE_IEEE_754 -ieee_with_no_inexact -tune host -xtaso -DSIZEOF_LONG=8
							 | 
						|
								# 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
							 | 
						|
								# gcc for the Alphas: compile without HAVE_IEEE_754.
							 | 
						|
								#XCFLAGS	= -DBSD -DSIZEOF_VOID_P=8 -DSIZEOF_LONG=8
							 | 
						|
								#
							 | 
						|
								#==========================
							 | 
						|
								#
							 | 
						|
								#  IBM RS6000
							 | 
						|
								#
							 | 
						|
								# For the IBM RS6000 -qstrict is necessary when specifying -O3 with cc.
							 | 
						|
								#XCFLAGS	= -DBSD -DHAVE_IEEE_754 -DEPD_BIG_ENDIAN -O3 -qstrict
							 | 
						|
								#
							 | 
						|
								#==========================
							 | 
						|
								#
							 | 
						|
								#  HP-UX
							 | 
						|
								#
							 | 
						|
								# I haven't figured out how to enable IEEE 754 on the HPs I've tried...
							 | 
						|
								# For HP-UX using gcc.
							 | 
						|
								#XCFLAGS	= -DUNIX100 -DEPD_BIG_ENDIAN
							 | 
						|
								# For HP-UX using c89.
							 | 
						|
								#XCFLAGS	= +O3 -DUNIX100 -DEPD_BIG_ENDIAN
							 | 
						|
								#
							 | 
						|
								#==========================
							 | 
						|
								#
							 | 
						|
								#  Windows 95/98/NT/XP/Vista/7 with Cygwin tools
							 | 
						|
								#
							 | 
						|
								# The value of RLIMIT_DATA_DEFAULT should reflect the amount of
							 | 
						|
								# available memory (expressed in bytes).
							 | 
						|
								# Recent versions of cygwin have getrlimit, but the datasize limit
							 | 
						|
								# cannot be set.
							 | 
						|
								#XCFLAGS	= -mtune=native -malign-double -DHAVE_IEEE_754 -DHAVE_GETRLIMIT=0 -DRLIMIT_DATA_DEFAULT=268435456
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								# Define the level of self-checking and verbosity of the CUDD package.
							 | 
						|
								#DDDEBUG = -DDD_DEBUG -DDD_VERBOSE -DDD_STATS -DDD_CACHE_PROFILE -DDD_UNIQUE_PROFILE -DDD_COUNT
							 | 
						|
								DDDEBUG	=
							 | 
						|
								
							 | 
						|
								# Define the level of self-checking and verbosity of the MTR package.
							 | 
						|
								#MTRDEBUG = -DMTR_DEBUG
							 | 
						|
								MTRDEBUG =
							 | 
						|
								
							 | 
						|
								# 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 as purify to link with purify.
							 | 
						|
								# Define PURE as quantify to link with quantify.
							 | 
						|
								# Remember to compile with -g if you want line-by-line info with quantify.
							 | 
						|
								PURE =
							 | 
						|
								#PURE	= purify
							 | 
						|
								#PURE	= quantify
							 | 
						|
								
							 | 
						|
								# Define EXE as .exe for MS-DOS and derivatives.  Not required by recent
							 | 
						|
								# versions of cygwin.
							 | 
						|
								EXE	=
							 | 
						|
								#EXE	= .exe
							 | 
						|
								
							 | 
						|
								# End of the configuration section.
							 | 
						|
								#---------------------------------------------------------------------------
							 | 
						|
								
							 | 
						|
								MFLAG   = -DMNEMOSYNE
							 | 
						|
								MNEMLIB	= ../mnemosyne/libmnem.a
							 | 
						|
								
							 | 
						|
								DDWDIR	= .
							 | 
						|
								IDIR	= $(DDWDIR)/include
							 | 
						|
								INCLUDE = -I$(IDIR)
							 | 
						|
								
							 | 
						|
								BDIRS	= cudd dddmp mtr st util epd obj
							 | 
						|
								DIRS	= $(BDIRS)
							 | 
						|
								
							 | 
						|
								#------------------------------------------------------------------------
							 | 
						|
								
							 | 
						|
								.PHONY : build
							 | 
						|
								.PHONY : nanotrav
							 | 
						|
								.PHONY : check_leaks
							 | 
						|
								.PHONY : optimize_dec
							 | 
						|
								.PHONY : testcudd
							 | 
						|
								.PHONY : libobj
							 | 
						|
								.PHONY : testobj
							 | 
						|
								.PHONY : testdddmp
							 | 
						|
								.PHONY : testmtr
							 | 
						|
								.PHONY : lint
							 | 
						|
								.PHONY : all
							 | 
						|
								.PHONY : clean
							 | 
						|
								.PHONY : distclean
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								build:
							 | 
						|
									sh ./setup.sh
							 | 
						|
									@for dir in $(DIRS); do \
							 | 
						|
										(cd $$dir; \
							 | 
						|
										echo Making $$dir ...; \
							 | 
						|
										make CC=$(CC) RANLIB=$(RANLIB) MFLAG= MNEMLIB= ICFLAGS="$(ICFLAGS)" XCFLAGS="$(XCFLAGS)" DDDEBUG="$(DDDEBUG)" MTRDEBUG="$(MTRDEBUG)" LDFLAGS="$(LDFLAGS)" PURE="$(PURE)" EXE="$(EXE)" )\
							 | 
						|
									done
							 | 
						|
								
							 | 
						|
								nanotrav: build
							 | 
						|
								
							 | 
						|
								check_leaks:
							 | 
						|
									sh ./setup.sh
							 | 
						|
									@for dir in mnemosyne $(DIRS); do \
							 | 
						|
										(cd $$dir; \
							 | 
						|
										echo Making $$dir ...; \
							 | 
						|
										make CC=$(CC) RANLIB=$(RANLIB) MFLAG=$(MFLAG) MNEMLIB=$(MNEMLIB) ICFLAGS="$(ICFLAGS)" XCFLAGS="$(XCFLAGS)" DDDEBUG="$(DDDEBUG)" MTRDEBUG="$(MTRDEBUG)" LDFLAGS="$(LDFLAGS)" EXE="$(EXE)" )\
							 | 
						|
									done
							 | 
						|
								
							 | 
						|
								optimize_dec:
							 | 
						|
									sh ./setup.sh
							 | 
						|
									@for dir in $(DIRS); do \
							 | 
						|
										(cd $$dir; \
							 | 
						|
										echo Making $$dir ...; \
							 | 
						|
										make CC=$(CC) RANLIB=$(RANLIB) XCFLAGS="$(XCFLAGS)" LDFLAGS="$(LDFLAGS)" optimize_dec )\
							 | 
						|
									done
							 | 
						|
								
							 | 
						|
								lint:
							 | 
						|
									sh ./setup.sh
							 | 
						|
									@for dir in $(DIRS) obj; do \
							 | 
						|
										(cd $$dir; \
							 | 
						|
										echo Making lint in $$dir ...; \
							 | 
						|
										make CC=$(CC) lint )\
							 | 
						|
									done
							 | 
						|
								
							 | 
						|
								tags:
							 | 
						|
									sh ./setup.sh
							 | 
						|
									@for dir in $(DIRS) obj; do \
							 | 
						|
										(cd $$dir; \
							 | 
						|
										echo Making tags in $$dir ...; \
							 | 
						|
										make CC=$(CC) tags )\
							 | 
						|
									done
							 | 
						|
								
							 | 
						|
								all:
							 | 
						|
									sh ./setup.sh
							 | 
						|
									@for dir in $(DIRS); do \
							 | 
						|
										(cd $$dir; \
							 | 
						|
										echo Making all in $$dir ...; \
							 | 
						|
										make CC=$(CC) RANLIB=$(RANLIB) MFLAG= MNEMLIB= ICFLAGS="$(ICFLAGS)" XCFLAGS="$(XCFLAGS)" DDDEBUG="$(DDDEBUG)" MTRDEBUG="$(MTRDEBUG)" LDFLAGS="$(LDFLAGS)" PURE="$(PURE)" EXE="$(EXE)" all )\
							 | 
						|
									done
							 | 
						|
								
							 | 
						|
								testcudd:
							 | 
						|
									sh ./setup.sh
							 | 
						|
									@for dir in util st mtr epd; do \
							 | 
						|
										(cd $$dir; \
							 | 
						|
										echo Making $$dir ...; \
							 | 
						|
										make CC=$(CC) RANLIB=$(RANLIB) MFLAG= MNEMLIB= ICFLAGS="$(ICFLAGS)" XCFLAGS="$(XCFLAGS)" DDDEBUG="$(DDDEBUG)" MTRDEBUG="$(MTRDEBUG)" LDFLAGS="$(LDFLAGS)" PURE="$(PURE)" EXE="$(EXE)" )\
							 | 
						|
									done
							 | 
						|
									@(cd cudd; \
							 | 
						|
									echo Making testcudd ...; \
							 | 
						|
									make CC=$(CC) RANLIB=$(RANLIB) MFLAG= MNEMLIB= ICFLAGS="$(ICFLAGS)" XCFLAGS="$(XCFLAGS)" DDDEBUG="$(DDDEBUG)" MTRDEBUG="$(MTRDEBUG)" LDFLAGS="$(LDFLAGS)" PURE="$(PURE)" EXE="$(EXE)" testcudd$(EXE) )
							 | 
						|
								
							 | 
						|
								objlib:
							 | 
						|
									sh ./setup.sh
							 | 
						|
									@for dir in $(BDIRS); do \
							 | 
						|
										(cd $$dir; \
							 | 
						|
										echo Making $$dir ...; \
							 | 
						|
										make CC=$(CC) RANLIB=$(RANLIB) MFLAG= MNEMLIB= ICFLAGS="$(ICFLAGS)" XCFLAGS="$(XCFLAGS)" DDDEBUG="$(DDDEBUG)" MTRDEBUG="$(MTRDEBUG)" LDFLAGS="$(LDFLAGS)" PURE="$(PURE)" EXE="$(EXE)" )\
							 | 
						|
									done
							 | 
						|
									@(cd obj; \
							 | 
						|
									echo Making obj ...; \
							 | 
						|
									make CXX=$(CXX) CXXFLAGS=$(CXXFLAGS) RANLIB=$(RANLIB) MFLAG= MNEMLIB= ICFLAGS="$(ICFLAGS)" XCFLAGS="$(XCFLAGS)" DDDEBUG="$(DDDEBUG)" MTRDEBUG="$(MTRDEBUG)" LDFLAGS="$(LDFLAGS)" PURE="$(PURE)" EXE="$(EXE)" )
							 | 
						|
								
							 | 
						|
								testobj: objlib
							 | 
						|
									@(cd obj; \
							 | 
						|
									echo Making testobj ...; \
							 | 
						|
									make CXX=$(CXX) CXXFLAGS=$(CXXFLAGS) RANLIB=$(RANLIB) MFLAG= MNEMLIB= ICFLAGS="$(ICFLAGS)" XCFLAGS="$(XCFLAGS)" DDDEBUG="$(DDDEBUG)" MTRDEBUG="$(MTRDEBUG)" LDFLAGS="$(LDFLAGS)" PURE="$(PURE)" EXE="$(EXE)" testobj$(EXE) )
							 | 
						|
								
							 | 
						|
								testdddmp: build
							 | 
						|
									@(cd dddmp; \
							 | 
						|
									echo Making testdddmp ...; \
							 | 
						|
									make CC=$(CC) RANLIB=$(RANLIB) MFLAG= MNEMLIB= ICFLAGS="$(ICFLAGS)" XCFLAGS="$(XCFLAGS)" DDDEBUG="$(DDDEBUG)" MTRDEBUG="$(MTRDEBUG)" LDFLAGS="$(LDFLAGS)" PURE="$(PURE)" EXE="$(EXE)" testdddmp$(EXE) )
							 | 
						|
								
							 | 
						|
								testmtr: build
							 | 
						|
									@(cd mtr; \
							 | 
						|
									echo Making testmtr ...; \
							 | 
						|
									make CC=$(CC) RANLIB=$(RANLIB) MFLAG= MNEMLIB= ICFLAGS="$(ICFLAGS)" XCFLAGS="$(XCFLAGS)" DDDEBUG="$(DDDEBUG)" MTRDEBUG="$(MTRDEBUG)" LDFLAGS="$(LDFLAGS)" PURE="$(PURE)" EXE="$(EXE)" testmtr$(EXE) )
							 | 
						|
								
							 | 
						|
								clean:
							 | 
						|
									@for dir in mnemosyne $(DIRS) obj; do	\
							 | 
						|
									    (cd $$dir;	\
							 | 
						|
									     echo Cleaning $$dir ...; \
							 | 
						|
									     make -s clean	) \
							 | 
						|
									done
							 | 
						|
								
							 | 
						|
								distclean:
							 | 
						|
									@for dir in mnemosyne $(DIRS) obj; do	\
							 | 
						|
									    (cd $$dir;	\
							 | 
						|
									     echo Cleaning $$dir ...; \
							 | 
						|
									     make -s EXE="$(EXE)" distclean	) \
							 | 
						|
									done
							 | 
						|
									sh ./shutdown.sh
							 |