Blob Blame History Raw
diff -dur cudd-2.4.1.ORIG/cudd/doc/node3.html cudd-2.4.1/cudd/doc/node3.html
--- cudd-2.4.1.ORIG/cudd/doc/node3.html	2005-05-17 23:20:29.000000000 -0600
+++ cudd-2.4.1/cudd/doc/node3.html	2009-01-22 09:19:03.000000000 -0700
@@ -153,16 +153,18 @@
 <P>
 To build an application that uses the CUDD package, you should add
 <PRE>
-#include "util.h"
-#include "cudd.h"
+#include &lt;util.h&gt;
+#include &lt;cudd.h&gt;
 </PRE>
 <A NAME="81"></A>
-to your source files, and should link
+to your source files, compile with <CODE>-I/usr/include/cudd</CODE>, and link
 <code>libcudd.a</code><A NAME="82"></A>,
 <code>libmtr.a</code><A NAME="83"></A>,
 <code>libst.a</code><A NAME="84"></A>, and
 <code>libutil.a</code><A NAME="85"></A> to your executable. (All these
-libraries are part of the distribution.) Some
+libraries are part of the distribution.)  Note that shared library equivalents
+are also available, and are linked to one another appropriately; i.e., it is
+sufficient to add <CODE>-lcudd</CODE> to your link command.  Some
 platforms require specific compiler and linker flags.  Refer to the
 <TT>Makefile<A NAME="86"></A></TT> in the top level directory of the
 distribution.
diff -dur cudd-2.4.1.ORIG/cudd/Makefile cudd-2.4.1/cudd/Makefile
--- cudd-2.4.1.ORIG/cudd/Makefile	1999-08-19 16:34:24.000000000 -0600
+++ cudd-2.4.1/cudd/Makefile	2009-01-22 09:46:31.000000000 -0700
@@ -27,6 +27,10 @@
 
 INCLUDE = $(WHERE)/include
 
+SHLINK	= -shared -Xlinker -soname -Xlinker lib$(P).so.2 \
+	-L$(WHERE)/mtr -L$(WHERE)/st -L$(WHERE)/util -L$(WHERE)/epd \
+	-lmtr -lcuddst -lcuddutil -lepd -lm
+
 LIBS	= ./libcudd.a $(WHERE)/mtr/libmtr.a \
 	$(WHERE)/st/libst.a $(WHERE)/util/libutil.a $(WHERE)/epd/libepd.a
 
@@ -71,6 +75,11 @@
 
 #------------------------------------------------------
 
+lib$(P).so.2.4.1: $(POBJ)
+	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(POBJ) $(SHLINK)
+	ln -s lib$(P).so.2.4.1 lib$(P).so.2
+	ln -s lib$(P).so.2 lib$(P).so
+
 lib$(P).a: $(POBJ)
 	ar rv $@ $?
 	$(RANLIB) $@
@@ -111,7 +120,9 @@
 tags: $(PSRC) $(PHDR)
 	ctags $(PSRC) $(PHDR)
 
-all: lib$(P).a lib$(P).b llib-l$(P).ln tags
+all: lib$(P).so.2.4.1 lib$(P).b llib-l$(P).ln tags
+
+static: lib$(P).a
 
 programs: $(TARGET) $(TARGETu) lintpgm
 
diff -dur cudd-2.4.1.ORIG/dddmp/Makefile cudd-2.4.1/dddmp/Makefile
--- cudd-2.4.1.ORIG/dddmp/Makefile	2004-02-20 09:13:24.000000000 -0700
+++ cudd-2.4.1/dddmp/Makefile	2009-01-22 09:46:18.000000000 -0700
@@ -170,6 +170,10 @@
 LINTFLAGS = -u -n
 LINTSWITCH = -o
 
+SHLINK	= -shared -Xlinker -soname -Xlinker lib$(P).so.2 \
+	-L$(WHERE)/cudd -L$(WHERE)/mtr -L$(WHERE)/st -L$(WHERE)/util \
+	-L$(WHERE)/epd -lcudd -lcuddst -lcuddutil
+
 LIBS	= ./libdddmp.a $(WHERE)/cudd/libcudd.a $(WHERE)/mtr/libmtr.a \
 	$(WHERE)/st/libst.a $(WHERE)/util/libutil.a $(WHERE)/epd/libepd.a
 
@@ -182,6 +186,11 @@
 	$(WHERE)/mtr/llib-lmtr.ln $(WHERE)/st/llib-lst.ln \
 	$(WHERE)/util/llib-lutil.ln
 
+lib$(P).so.2.4.1: $(POBJ)
+	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(POBJ) $(SHLINK)
+	ln -s lib$(P).so.2.4.1 lib$(P).so.2
+	ln -s lib$(P).so.2 lib$(P).so
+
 lib$(P).a: $(POBJ)
 	ar rv $@ $?
 	$(RANLIB) $@
@@ -222,7 +231,9 @@
 tags: $(PSRC) $(PHDR)
 	ctags $(PSRC) $(PHDR)
 
-all: lib$(P).a lib$(P).b llib-l$(P).ln tags
+all: lib$(P).so.2.4.1 lib$(P).b llib-l$(P).ln tags
+
+static: lib$(P).a
 
 programs: $(TARGET) $(TARGETu) lintpgm
 
diff -dur cudd-2.4.1.ORIG/epd/Makefile cudd-2.4.1/epd/Makefile
--- cudd-2.4.1.ORIG/epd/Makefile	2003-12-31 09:31:30.000000000 -0700
+++ cudd-2.4.1/epd/Makefile	2009-01-22 09:50:20.000000000 -0700
@@ -11,6 +11,9 @@
 ICFLAGS = -g -O6 -Wall
 CFLAGS  = $(ICFLAGS) $(MFLAG) $(XCFLAGS)
 
+SHLINK	= -shared -Xlinker -soname -Xlinker lib$(P).so.2 -L$(WHERE)/util \
+	-lcuddutil -lm
+
 LINTFLAGS = -u -n
 
 # this is to create the lint library
@@ -27,6 +30,11 @@
 
 #---------------------------
 
+lib$(P).so.2.4.1: $(POBJ)
+	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(POBJ) $(SHLINK)
+	ln -s lib$(P).so.2.4.1 lib$(P).so.2
+	ln -s lib$(P).so.2 lib$(P).so
+
 lib$(P).a: $(POBJ)
 	ar rv $@ $?
 	$(RANLIB) $@
@@ -55,7 +63,9 @@
 tags: $(PSRC) $(PHDR)
 	ctags $(PSRC) $(PHDR)
 
-all: lib$(P).a lib$(P).b llib-l$(P).ln tags
+all: lib$(P).so.2.4.1 lib$(P).b llib-l$(P).ln tags
+
+static: lib$(P).a
 
 clean:
 	rm -f *.o *.u .pure *.warnings
diff -dur cudd-2.4.1.ORIG/Makefile cudd-2.4.1/Makefile
--- cudd-2.4.1.ORIG/Makefile	2004-08-17 18:18:45.000000000 -0600
+++ cudd-2.4.1/Makefile	2009-01-22 13:10:24.000000000 -0700
@@ -194,7 +194,7 @@
 IDIR	= $(DDWDIR)/include
 INCLUDE = -I$(IDIR)
 
-BDIRS	= cudd dddmp mtr st util epd
+BDIRS	= util epd mtr st cudd dddmp
 DIRS	= $(BDIRS) nanotrav
 
 #------------------------------------------------------------------------
@@ -210,6 +210,7 @@
 .PHONY : testmtr
 .PHONY : lint
 .PHONY : all
+.PHONY : static
 .PHONY : clean
 .PHONY : distclean
 
@@ -219,17 +220,22 @@
 	@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)" )\
+		$(MAKE) CC=$(CC) RANLIB=$(RANLIB) MFLAG= MNEMLIB= ICFLAGS="$(ICFLAGS)" XCFLAGS="$(XCFLAGS)" DDDEBUG="$(DDDEBUG)" MTRDEBUG="$(MTRDEBUG)" LDFLAGS="$(LDFLAGS)" PURE="$(PURE)" EXE="$(EXE)" )\
 	done
 
-nanotrav: build
+cudd: mtr st util epd
+dddmp: cudd
+epd: util
+mtr: util
+nanotrav: dddmp
+st: util
 
 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)" )\
+		$(MAKE) CC=$(CC) RANLIB=$(RANLIB) MFLAG=$(MFLAG) MNEMLIB=$(MNEMLIB) ICFLAGS="$(ICFLAGS)" XCFLAGS="$(XCFLAGS)" DDDEBUG="$(DDDEBUG)" MTRDEBUG="$(MTRDEBUG)" LDFLAGS="$(LDFLAGS)" EXE="$(EXE)" )\
 	done
 
 optimize_dec:
@@ -237,7 +243,7 @@
 	@for dir in $(DIRS); do \
 		(cd $$dir; \
 		echo Making $$dir ...; \
-		make CC=$(CC) RANLIB=$(RANLIB) XCFLAGS="$(XCFLAGS)" LDFLAGS="$(LDFLAGS)" optimize_dec )\
+		$(MAKE) CC=$(CC) RANLIB=$(RANLIB) XCFLAGS="$(XCFLAGS)" LDFLAGS="$(LDFLAGS)" optimize_dec )\
 	done
 
 lint:
@@ -245,7 +251,7 @@
 	@for dir in $(DIRS) obj; do \
 		(cd $$dir; \
 		echo Making lint in $$dir ...; \
-		make CC=$(CC) lint )\
+		$(MAKE) CC=$(CC) lint )\
 	done
 
 tags:
@@ -253,7 +259,7 @@
 	@for dir in $(DIRS) obj; do \
 		(cd $$dir; \
 		echo Making tags in $$dir ...; \
-		make CC=$(CC) tags )\
+		$(MAKE) CC=$(CC) tags )\
 	done
 
 all:
@@ -261,7 +267,15 @@
 	@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 )\
+		$(MAKE) CC=$(CC) RANLIB=$(RANLIB) MFLAG= MNEMLIB= ICFLAGS="$(ICFLAGS)" XCFLAGS="$(XCFLAGS)" DDDEBUG="$(DDDEBUG)" MTRDEBUG="$(MTRDEBUG)" LDFLAGS="$(LDFLAGS)" PURE="$(PURE)" EXE="$(EXE)" all )\
+	done
+
+static:
+	sh ./setup.sh
+	@for dir in $(DIRS); do \
+		(cd $$dir; \
+		echo Making static in $$dir ...; \
+		$(MAKE) CC=$(CC) RANLIB=$(RANLIB) MFLAG= MNEMLIB= ICFLAGS="$(ICFLAGS)" XCFLAGS="$(XCFLAGS)" DDDEBUG="$(DDDEBUG)" MTRDEBUG="$(MTRDEBUG)" LDFLAGS="$(LDFLAGS)" PURE="$(PURE)" EXE="$(EXE)" static )\
 	done
 
 testcudd:
@@ -269,49 +283,49 @@
 	@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)" )\
+		$(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) )
+	$(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)" )\
+		$(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 CPP=$(CPP) CPPFLAGS=$(CPPFLAGS) RANLIB=$(RANLIB) MFLAG= MNEMLIB= ICFLAGS="$(ICFLAGS)" XCFLAGS="$(XCFLAGS)" DDDEBUG="$(DDDEBUG)" MTRDEBUG="$(MTRDEBUG)" LDFLAGS="$(LDFLAGS)" PURE="$(PURE)" EXE="$(EXE)" )
+	$(MAKE) CPP=$(CPP) CPPFLAGS=$(CPPFLAGS) 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 CPP=$(CPP) CPPFLAGS=$(CPPFLAGS) RANLIB=$(RANLIB) MFLAG= MNEMLIB= ICFLAGS="$(ICFLAGS)" XCFLAGS="$(XCFLAGS)" DDDEBUG="$(DDDEBUG)" MTRDEBUG="$(MTRDEBUG)" LDFLAGS="$(LDFLAGS)" PURE="$(PURE)" EXE="$(EXE)" testobj$(EXE) )
+	$(MAKE) CPP=$(CPP) CPPFLAGS=$(CPPFLAGS) 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) )
+	$(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) )
+	$(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	) \
+	     $(MAKE) -s clean	) \
 	done
 
 distclean:
 	@for dir in mnemosyne $(DIRS) obj; do	\
 	    (cd $$dir; 	\
 	     echo Cleaning $$dir ...; \
-	     make -s EXE="$(EXE)" distclean	) \
+	     $(MAKE) -s EXE="$(EXE)" distclean	) \
 	done
 	sh ./shutdown.sh
diff -dur cudd-2.4.1.ORIG/mnemosyne/Makefile cudd-2.4.1/mnemosyne/Makefile
--- cudd-2.4.1.ORIG/mnemosyne/Makefile	1996-07-23 14:33:34.000000000 -0600
+++ cudd-2.4.1/mnemosyne/Makefile	2009-01-22 10:04:31.000000000 -0700
@@ -8,8 +8,8 @@
 # define MALLOC_IS_VOIDSTAR if your system's malloc is declared as a (void *)
 # otherwise, it is assumed to be a (char *). a "mall_t" is typedeffed in
 # mnemconf.h and mnemosyne.h to implement this.
-#OPTNS	=	-DMALLOC_IS_VOIDSTAR
-OPTNS	=
+OPTNS	=	-DMALLOC_IS_VOIDSTAR
+#OPTNS	=
 
 CC	= cc
 RANLIB	= ranlib
@@ -19,14 +19,22 @@
 
 #loader flags
 LDFLGS	=
+SHLINK	= -shared -Xlinker -soname -Xlinker libmnem.so.2
 
 HDRS	=	mnemosyne.h mnemconf.h
 
-all: mnemalyse libmnem.a
+all: mnemalyse libmnem.so.2.4.1
+
+static: libmnem.a
 
 mnemalyse: mnemalyse.o
 	$(CC) $(LDFLGS) -o $@ mnemalyse.o
 
+libmnem.so.2.4.1: mnemosyne.o
+	$(CC) $(CFLAGS) $(LDFLAGS) $(SHLINK) -o $@ mnemosyne.o
+	ln -s libmnem.so.2.4.1 libmnem.so.2
+	ln -s libmnem.so.2 libmnem.so
+
 libmnem.a: mnemosyne.o
 	ar rcv $@ mnemosyne.o
 	$(RANLIB) $@
diff -dur cudd-2.4.1.ORIG/mtr/Makefile cudd-2.4.1/mtr/Makefile
--- cudd-2.4.1.ORIG/mtr/Makefile	2004-01-01 11:47:16.000000000 -0700
+++ cudd-2.4.1/mtr/Makefile	2009-01-22 10:08:45.000000000 -0700
@@ -39,6 +39,9 @@
 TARGET	= test$(P)$(EXE)
 TARGETu	= test$(P)-u
 
+SHLINK	= -shared -Xlinker -soname -Xlinker lib$(P).so.2 -L$(WHERE)/util \
+	-lcuddutil
+
 LIBS	= ./libmtr.a $(WHERE)/util/libutil.a
 
 BLIBS	= -kL. -klmtr -kL$(WHERE)/util -klutil
@@ -49,6 +52,11 @@
 
 #---------------------------
 
+lib$(P).so.2.4.1: $(POBJ)
+	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(POBJ) $(SHLINK)
+	ln -s lib$(P).so.2.4.1 lib$(P).so.2
+	ln -s lib$(P).so.2 lib$(P).so
+
 lib$(P).a: $(POBJ)
 	ar rv $@ $?
 	$(RANLIB) $@
@@ -79,7 +87,9 @@
 tags: $(PSRC) $(PHDR)
 	ctags $(PSRC) $(PHDR)
 
-all: lib$(P).a lib$(P).b llib-l$(P).ln tags
+all: lib$(P).so.2.4.1 lib$(P).b llib-l$(P).ln tags
+
+static: lib$(P).a
 
 $(TARGET): $(POBJ) $(OBJ) $(LIBS) $(MNEMLIB)
 	$(PURE) $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(OBJ) $(LIBS) $(MNEMLIB) -lm
diff -dur cudd-2.4.1.ORIG/nanotrav/Makefile cudd-2.4.1/nanotrav/Makefile
--- cudd-2.4.1.ORIG/nanotrav/Makefile	1999-08-31 13:12:55.000000000 -0600
+++ cudd-2.4.1/nanotrav/Makefile	2009-01-22 10:11:36.000000000 -0700
@@ -19,6 +19,14 @@
 
 INCLUDE = $(WHERE)/include
 
+SHLINK	= -L$(WHERE)/dddmp -L$(WHERE)/cudd -L$(WHERE)/mtr -L$(WHERE)/st \
+	-L$(WHERE)/util -L$(WHERE)/epd -ldddmp -lcudd -lmtr -lcuddst \
+	-lcuddutil -lepd
+
+SHLIBS	= $(WHERE)/dddmp/libdddmp.so.2.4.1 $(WHERE)/cudd/libcudd.so.2.4.1 \
+	$(WHERE)/mtr/libmtr.so.2.4.1 $(WHERE)/st/libcuddst.so.2.4.1 \
+	$(WHERE)/util/libcuddutil.so.2.4.1 $(WHERE)/epd/libepd.so.2.4.1
+
 LIBS	= $(WHERE)/dddmp/libdddmp.a $(WHERE)/cudd/libcudd.a \
 	$(WHERE)/mtr/libmtr.a $(WHERE)/st/libst.a $(WHERE)/util/libutil.a \
 	$(WHERE)/epd/libepd.a
@@ -60,8 +68,8 @@
 
 #------------------------------------------------------
 
-$(TARGET): $(SRC) $(OBJ) $(HDR) $(LIBS) $(MNEMLIB)
-	$(PURE) $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(OBJ) $(LIBS) $(MNEMLIB) -lm
+$(TARGET): $(SRC) $(OBJ) $(HDR) $(SHLIBS) $(MNEMLIB)
+	$(PURE) $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(OBJ) $(SHLINK) $(MNEMLIB) -lm
 
 .c.o: $(HDR)
 	$(CC) -c $< -I$(INCLUDE) $(CFLAGS) $(DDDEBUG)
@@ -87,6 +95,8 @@
 
 all: $(TARGET) $(TARGETu) lint tags
 
+static:
+
 pixie: $(TARGETu)
 	pixie $(TARGETu)
 
diff -dur cudd-2.4.1.ORIG/obj/Makefile cudd-2.4.1/obj/Makefile
--- cudd-2.4.1.ORIG/obj/Makefile	2001-03-19 00:35:09.000000000 -0700
+++ cudd-2.4.1/obj/Makefile	2009-01-22 12:58:56.000000000 -0700
@@ -27,6 +27,8 @@
 
 INCLUDE = $(WHERE)/include
 
+SHLINK	= -shared -Xlinker -soname -Xlinker lib$(P).so.2
+
 LIBS	= ./libobj.a $(WHERE)/cudd/libcudd.a $(WHERE)/mtr/libmtr.a \
 	$(WHERE)/st/libst.a $(WHERE)/util/libutil.a $(WHERE)/epd/libepd.a
 
@@ -57,6 +59,11 @@
 
 #------------------------------------------------------
 
+libs$(P).so.2.4.1: $(POBJ)
+	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(POBJ) $(SHLINK)
+	ln -s lib$(P).so.2.4.1 lib$(P).so.2
+	ln -s lib$(P).so.2 lib$(P).so
+
 lib$(P).a: $(POBJ)
 	ar rv $@ $?
 	$(RANLIB) $@
@@ -97,7 +104,9 @@
 tags: $(PSRC) $(PHDR)
 	ctags $(PSRC) $(PHDR)
 
-all: lib$(P).a lib$(P).b llib-l$(P).ln tags
+all: lib$(P).so.2.4.1 lib$(P).b llib-l$(P).ln tags
+
+static: lib$(P).a
 
 programs: $(TARGET) $(TARGETu) lintpgm
 
diff -dur cudd-2.4.1.ORIG/st/Makefile cudd-2.4.1/st/Makefile
--- cudd-2.4.1.ORIG/st/Makefile	2004-01-01 09:53:24.000000000 -0700
+++ cudd-2.4.1/st/Makefile	2009-01-22 13:02:29.000000000 -0700
@@ -11,6 +11,9 @@
 ICFLAGS = -g -O6 -Wall
 CFLAGS  = $(ICFLAGS) $(MFLAG) $(XCFLAGS)
 
+SHLINK	= -shared -Xlinker -soname -Xlinker libcudd$(P).so.2 -L$(WHERE)/util \
+	-lcuddutil
+
 LINTFLAGS = -u -n
 
 # this is to create the lint library
@@ -27,6 +30,11 @@
 
 #---------------------------
 
+libcudd$(P).so.2.4.1: $(POBJ)
+	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(POBJ) $(SHLINK)
+	ln -s libcudd$(P).so.2.4.1 libcudd$(P).so.2
+	ln -s libcudd$(P).so.2 libcudd$(P).so
+
 lib$(P).a: $(POBJ)
 	ar rv $@ $?
 	$(RANLIB) $@
@@ -55,7 +63,9 @@
 tags: $(PSRC) $(PHDR)
 	ctags $(PSRC) $(PHDR)
 
-all: lib$(P).a lib$(P).b llib-l$(P).ln tags
+all: libcudd$(P).so.2.4.1 lib$(P).b llib-l$(P).ln tags
+
+static: lib$(P).a
 
 clean:
 	rm -f *.o *.u .pure *.warnings
diff -dur cudd-2.4.1.ORIG/util/Makefile cudd-2.4.1/util/Makefile
--- cudd-2.4.1.ORIG/util/Makefile	2004-01-03 10:15:30.000000000 -0700
+++ cudd-2.4.1/util/Makefile	2009-01-22 13:04:48.000000000 -0700
@@ -12,6 +12,8 @@
 ICFLAGS = -g
 CFLAGS  = $(ICFLAGS) $(MFLAG) $(XCFLAGS)
 
+SHLINK	= -shared -Xlinker -soname -Xlinker libcudd$(P).so.2
+
 LINTFLAGS = -u -n
 
 # this is to create the lint library
@@ -28,6 +30,11 @@
 WHERE	= ..
 INCLUDE = $(WHERE)/include
 
+libcudd$(P).so.2.4.1: $(POBJ)
+	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(POBJ) $(SHLINK)
+	ln -s libcudd$(P).so.2.4.1 libcudd$(P).so.2
+	ln -s libcudd$(P).so.2 libcudd$(P).so
+
 lib$(P).a: $(POBJ)
 	ar rv $@ $?
 	$(RANLIB) $@
@@ -56,7 +63,9 @@
 tags: $(PSRC) $(PHDR)
 	ctags $(PSRC) $(PHDR)
 
-all: lib$(P).a lib$(P).b llib-l$(P).ln tags
+all: libcudd$(P).so.2.4.1 lib$(P).b llib-l$(P).ln tags
+
+static: lib$(P).a
 
 clean:
 	rm -f *.o *.u core *.warnings