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
|