Merge branch '1.0.x'
[cvc5.git] / contrib / build-cudd-2.5.0-with-libtool.sh
1 #!/bin/bash
2 #
3 # Patch to cudd build system to build everything with libtool, supporting
4 # shared libraries. Also all libraries are combined into a single one.
5 #
6 # This script applies the patch, builds cudd, and, assuming there are no
7 # errors, reverses the patch.
8 #
9 # -- Morgan Deters <mdeters@cs.nyu.edu> Wed, 13 Jul 2011 18:03:11 -0400
10 #
11
12 cd "$(dirname "$0")"
13 if [ $# -ne 1 -o "$1" = -h -o "$1" = -help -o "$1" = --help ]; then
14 echo "usage: $(basename "$0") cudd-dir" >&2
15 exit 1
16 fi
17
18 patch="$(pwd)/$(basename "$0")"
19 if [ ! -r "$patch" ]; then
20 echo "error: can't read patch at \`$patch'" >&2
21 exit 1
22 fi
23 if ! expr "$1" : / &>/dev/null; then
24 echo "error: must specify an absolute path to cudd sources" >&2
25 exit 1
26 fi
27 cudd_dir="$1"
28
29 arch=$(../config/config.guess | cut -f1 -d-)
30 case "$arch" in
31 i?86) XCFLAGS='-mtune=pentium4 -malign-double -DHAVE_IEEE_754 -DBSD' ;;
32 x86_64) XCFLAGS='-mtune=native -DHAVE_IEEE_754 -DBSD -DSIZEOF_VOID_P=8 -DSIZEOF_LONG=8' ;;
33 *) XCFLAGS= ;;
34 esac
35
36 set -ex
37
38 XCFLAGS="$XCFLAGS"
39
40 version_info=1:0:0
41
42 prefix="$cudd_dir"
43 eprefix="$prefix"
44 bindir="$eprefix/bin"
45 datadir="$prefix/share"
46 includedir="$prefix/include"
47 libdir="$prefix/lib"
48 mandir="$datadir/man/man1"
49 docdir="$datadir/doc"
50
51 cd "$cudd_dir"
52 patch -p1 < "$patch"
53 make "XCFLAGS=$XCFLAGS" "CC=libtool --mode=compile gcc" "CPP=libtool --mode=compile g++" libdir="$libdir" version_info="$version_info" DDDEBUG= MTRDEBUG= ICFLAGS=-O2
54 mkdir -p "$libdir"
55 libtool --mode=install cp libcudd.la "$libdir/libcudd.la"
56 libtool --mode=install cp libcuddxx.la "$libdir/libcuddxx.la"
57 libtool --mode=install cp libdddmp.la "$libdir/libdddmp.la"
58 libtool --finish "$libdir"
59 patch -p1 -R < "$patch"
60 exit
61
62 # patch follows
63
64 --- cudd-2.5.0.orig/Makefile
65 +++ cudd-2.5.0/Makefile
66 @@ -220,11 +220,16 @@ DIRS = $(BDIRS) nanotrav
67
68 build:
69 sh ./setup.sh
70 - @for dir in $(DIRS); do \
71 + +@for dir in $(BDIRS) obj; do \
72 (cd $$dir; \
73 echo Making $$dir ...; \
74 - make CC=$(CC) RANLIB=$(RANLIB) MFLAG= MNEMLIB= ICFLAGS="$(ICFLAGS)" XCFLAGS="$(XCFLAGS)" DDDEBUG="$(DDDEBUG)" MTRDEBUG="$(MTRDEBUG)" LDFLAGS="$(LDFLAGS)" PURE="$(PURE)" EXE="$(EXE)" )\
75 + make CC="$(CC)" RANLIB="$(RANLIB)" MFLAG= MNEMLIB= ICFLAGS="$(ICFLAGS)" XCFLAGS="$(XCFLAGS)" DDDEBUG="$(DDDEBUG)" MTRDEBUG="$(MTRDEBUG)" LDFLAGS="$(LDFLAGS)" PURE="$(PURE)" EXE="$(EXE)" )\
76 done
77 + libtool --mode=link gcc -rpath "$(libdir)" -version-info "$(version_info)" -o libcudd.la cudd/libcudd.la mtr/libmtr.la epd/libepd.la util/libutil.la st/libst.la -lm
78 + libtool --mode=link gcc -rpath "${libdir}" -version-info "$(version_info)" -o libdddmp.la dddmp/libdddmp.la
79 + libtool --mode=link g++ -rpath "$(libdir)" -version-info "$(version_info)" -o libcuddxx.la obj/libobj.la -lcudd
80 + +@(cd nanotrav; \
81 + make CC="$(CC)" RANLIB="$(RANLIB)" MFLAG= MNEMLIB= ICFLAGS="$(ICFLAGS)" XCFLAGS="$(XCFLAGS)" DDDEBUG="$(DDDEBUG)" MTRDEBUG="$(MTRDEBUG)" LDFLAGS="$(LDFLAGS)" PURE="$(PURE)" EXE="$(EXE)" )
82
83 nanotrav: build
84
85 @@ -318,4 +323,6 @@ distclean:
86 echo Cleaning $$dir ...; \
87 make -s EXE="$(EXE)" distclean ) \
88 done
89 + rm -f libcudd* libdddmp*
90 + rm -fr .libs
91 sh ./shutdown.sh
92 --- cudd-2.5.0.orig/mtr/Makefile
93 +++ cudd-2.5.0/mtr/Makefile
94 @@ -30,7 +30,7 @@ INCLUDE = $(WHERE)/include
95 P = mtr
96 PSRC = mtrBasic.c mtrGroup.c
97 PHDR = mtr.h
98 -POBJ = $(PSRC:.c=.o)
99 +POBJ = $(PSRC:.c=.lo)
100 PUBJ = $(PSRC:.c=.u)
101 SRC = test$(P).c
102 HDR =
103 @@ -49,12 +49,11 @@ LINTLIBS = llib-l$(P).ln
104
105 #---------------------------
106
107 -lib$(P).a: $(POBJ)
108 - ar rv $@ $?
109 - $(RANLIB) $@
110 +lib$(P).la: $(POBJ)
111 + libtool --mode=link gcc -o $@ $?
112
113 -.c.o: $(PSRC) $(PHDR)
114 - $(CC) -c $< -I$(INCLUDE) $(CFLAGS) $(MTRDEBUG)
115 +%.lo: %.c
116 + $(CC) -c -o $@ $< -I$(INCLUDE) $(CFLAGS) $(MTRDEBUG)
117
118 optimize_dec: lib$(P).b
119
120 @@ -88,9 +87,10 @@ $(TARGETu): $(SRC) $(PSRC) $(PHDR) $(UBJ
121 cc -O3 $(XCFLAGS) $(LDFLAGS) -o $@ $(UBJ) $(BLIBS) -lm
122
123 clean:
124 - rm -f *.o *.u mon.out gmon.out *.pixie *.Addrs *.Counts mnem.* \
125 + rm -f *.o *.lo *.u mon.out gmon.out *.pixie *.Addrs *.Counts mnem.* \
126 .pure core *.warnings
127
128 distclean: clean
129 - rm -f $(TARGET) $(TARGETu) lib*.a lib$(P).b llib-l$(P).ln \
130 + rm -f $(TARGET) $(TARGETu) lib*.a lib*.la lib$(P).b llib-l$(P).ln \
131 *.bak *~ tags *.qv *.qx
132 + rm -fr .libs
133 --- cudd-2.5.0.orig/nanotrav/Makefile
134 +++ cudd-2.5.0/nanotrav/Makefile
135 @@ -19,9 +19,7 @@ WHERE = ..
136
137 INCLUDE = $(WHERE)/include
138
139 -LIBS = $(WHERE)/dddmp/libdddmp.a $(WHERE)/cudd/libcudd.a \
140 - $(WHERE)/mtr/libmtr.a $(WHERE)/st/libst.a $(WHERE)/util/libutil.a \
141 - $(WHERE)/epd/libepd.a
142 +LIBS = $(WHERE)/libcudd.la $(WHERE)/libdddmp.la
143
144 MNEMLIB =
145 #MNEMLIB = $(WHERE)/mnemosyne/libmnem.a
146 @@ -39,7 +37,7 @@ SRC = main.c bnet.c ntr.c ntrHeap.c ntrB
147 HDR = bnet.h ntr.h $(WHERE)/include/dddmp.h $(WHERE)/include/cudd.h \
148 $(WHERE)/include/cuddInt.h
149
150 -OBJ = $(SRC:.c=.o)
151 +OBJ = $(SRC:.c=.lo)
152 UBJ = $(SRC:.c=.u)
153
154 MFLAG =
155 @@ -61,10 +59,10 @@ LINTFLAGS = -u -n -DDD_STATS -DDD_CACHE_
156 #------------------------------------------------------
157
158 $(TARGET): $(SRC) $(OBJ) $(HDR) $(LIBS) $(MNEMLIB)
159 - $(PURE) $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(OBJ) $(LIBS) $(MNEMLIB) -lm
160 + libtool --mode=link gcc $(CFLAGS) $(LDFLAGS) -o $@ $(OBJ) $(LIBS) $(MNEMLIB) -lm
161
162 -.c.o: $(HDR)
163 - $(CC) -c $< -I$(INCLUDE) $(CFLAGS) $(DDDEBUG)
164 +%.lo: %.c
165 + $(CC) -c -o $@ $< -I$(INCLUDE) $(CFLAGS) $(DDDEBUG)
166
167 # if the header files change, recompile
168 $(OBJ): $(HDR)
169 @@ -91,8 +89,9 @@ pixie: $(TARGETu)
170 pixie $(TARGETu)
171
172 clean:
173 - rm -f *.o *.u mon.out gmon.out *.pixie *.Addrs *.Counts mnem.* \
174 + rm -f *.o *.lo *.u mon.out gmon.out *.pixie *.Addrs *.Counts mnem.* \
175 .pure core *.warnings
176
177 distclean: clean
178 rm -f $(TARGET) $(TARGETu) *.bak *~ .gdb_history *.qv *.qx
179 + rm -fr .libs
180 --- cudd-2.5.0.orig/dddmp/Makefile
181 +++ cudd-2.5.0/dddmp/Makefile
182 @@ -148,7 +148,7 @@ PSRC = dddmpStoreBdd.c dddmpStoreAdd.
183 dddmpStoreMisc.c dddmpUtil.c dddmpBinary.c dddmpConvert.c \
184 dddmpDbg.c
185 PHDR = dddmp.h dddmpInt.h $(INCLUDE)/cudd.h $(INCLUDE)/cuddInt.h
186 -POBJ = $(PSRC:.c=.o)
187 +POBJ = $(PSRC:.c=.lo)
188 PUBJ = $(PSRC:.c=.u)
189 TARGET = test$(P)$(EXE)
190 TARGETu = test$(P)-u
191 @@ -182,12 +182,11 @@ LINTLIBS = ./llib-ldddmp.ln $(WHERE)/cud
192 $(WHERE)/mtr/llib-lmtr.ln $(WHERE)/st/llib-lst.ln \
193 $(WHERE)/util/llib-lutil.ln
194
195 -lib$(P).a: $(POBJ)
196 - ar rv $@ $?
197 - $(RANLIB) $@
198 +lib$(P).la: $(POBJ)
199 + libtool --mode=link gcc -o $@ $?
200
201 -.c.o: $(PHDR)
202 - $(CC) -c $< -I$(INCLUDE) $(ICFLAGS) $(XCFLAGS) $(DDDEBUG) $(MTRDEBUG) $(DDDMPDEBUG) $(LDFLAGS)
203 +%.lo: %.c
204 + $(CC) -c -o $@ $< -I$(INCLUDE) $(ICFLAGS) $(XCFLAGS) $(DDDEBUG) $(MTRDEBUG) $(DDDMPDEBUG) $(LDFLAGS)
205
206 optimize_dec: lib$(P).b
207
208 @@ -231,12 +230,13 @@ programs: $(TARGET) $(TARGETu) lintpgm
209 #----------------------------------------------------------------------------#
210
211 clean:
212 - rm -f *.o *.u mon.out gmon.out *.pixie *.Addrs *.Counts mnem.* \
213 + rm -f *.o *.lo *.u mon.out gmon.out *.pixie *.Addrs *.Counts mnem.* \
214 .pure core *.warnings
215
216 distclean: clean
217 - rm -f $(TARGET) $(TARGETu) lib*.a lib$(P).b llib-l$(P).ln \
218 + rm -f $(TARGET) $(TARGETu) lib*.a lib*.la lib$(P).b llib-l$(P).ln \
219 *.bak *~ tags .gdb_history *.qv *.qx
220 + rm -fr .libs
221
222
223
224 --- cudd-2.5.0.orig/util/Makefile
225 +++ cudd-2.5.0/util/Makefile
226 @@ -20,19 +20,18 @@ LINTSWITCH = -o
227 P = util
228 PSRC = cpu_time.c cpu_stats.c safe_mem.c strsav.c texpand.c \
229 ptime.c prtime.c pipefork.c pathsearch.c stub.c datalimit.c
230 -POBJ = $(PSRC:.c=.o)
231 +POBJ = $(PSRC:.c=.lo)
232 PUBJ = $(PSRC:.c=.u)
233 PHDR = util.h
234
235 WHERE = ..
236 INCLUDE = $(WHERE)/include
237
238 -lib$(P).a: $(POBJ)
239 - ar rv $@ $?
240 - $(RANLIB) $@
241 +lib$(P).la: $(POBJ)
242 + libtool --mode=link gcc -o $@ $?
243
244 -.c.o: $(PHDR)
245 - $(CC) -c $< -I$(INCLUDE) $(FLAGS) $(CFLAGS)
246 +%.lo: %.c
247 + $(CC) -c -o $@ $< -I$(INCLUDE) $(FLAGS) $(CFLAGS)
248
249 optimize_dec: lib$(P).b
250
251 @@ -58,7 +57,8 @@ tags: $(PSRC) $(PHDR)
252 all: lib$(P).a lib$(P).b llib-l$(P).ln tags
253
254 clean:
255 - rm -f *.o *.u core *.warnings
256 + rm -f *.o *.lo *.u core *.warnings
257
258 distclean: clean
259 - rm -f lib$(P).a lib$(P).b llib-l$(P).ln tags *.bak *~ .pure
260 + rm -f lib$(P).a lib$(P).la lib$(P).b llib-l$(P).ln tags *.bak *~ .pure
261 + rm -fr .libs
262 --- cudd-2.5.0.orig/epd/Makefile
263 +++ cudd-2.5.0/epd/Makefile
264 @@ -19,7 +19,7 @@ LINTSWITCH = -o
265 P = epd
266 PSRC = epd.c
267 PHDR = epd.h
268 -POBJ = $(PSRC:.c=.o)
269 +POBJ = $(PSRC:.c=.lo)
270 PUBJ = $(PSRC:.c=.u)
271
272 WHERE = ..
273 @@ -27,12 +27,11 @@ INCLUDE = $(WHERE)/include
274
275 #---------------------------
276
277 -lib$(P).a: $(POBJ)
278 - ar rv $@ $?
279 - $(RANLIB) $@
280 +lib$(P).la: $(POBJ)
281 + libtool --mode=link gcc -o $@ $?
282
283 -.c.o: $(PSRC) $(PHDR)
284 - $(CC) -c $< -I$(INCLUDE) $(CFLAGS)
285 +%.lo: %.c
286 + $(CC) -c -o $@ $< -I$(INCLUDE) $(CFLAGS)
287
288 optimize_dec: lib$(P).b
289
290 @@ -58,7 +57,8 @@ tags: $(PSRC) $(PHDR)
291 all: lib$(P).a lib$(P).b llib-l$(P).ln tags
292
293 clean:
294 - rm -f *.o *.u .pure *.warnings
295 + rm -f *.o *.lo *.u .pure *.warnings
296
297 distclean: clean
298 - rm -f lib*.a lib$(P).b llib-l$(P).ln tags *~ *.bak *.qv *.qx
299 + rm -f lib*.a lib*.la lib$(P).b llib-l$(P).ln tags *~ *.bak *.qv *.qx
300 + rm -fr .libs
301 --- cudd-2.5.0.orig/obj/Makefile
302 +++ cudd-2.5.0/obj/Makefile
303 @@ -45,7 +45,7 @@ LDFLAGS =
304 P = obj
305 PSRC = cuddObj.cc
306 PHDR = cuddObj.hh $(INCLUDE)/cudd.h
307 -POBJ = $(PSRC:.cc=.o)
308 +POBJ = $(PSRC:.cc=.lo)
309 PUBJ = $(PSRC:.cc=.u)
310 TARGET = test$(P)$(EXE)
311 TARGETu = test$(P)-u
312 @@ -57,12 +57,11 @@ UBJ = $(SRC:.cc=.u)
313
314 #------------------------------------------------------
315
316 -lib$(P).a: $(POBJ)
317 - ar rv $@ $?
318 - $(RANLIB) $@
319 +lib$(P).la: $(POBJ)
320 + libtool --mode=link g++ -o $@ $?
321
322 -.cc.o: $(PHDR)
323 - $(CXX) -c $< -I$(INCLUDE) $(CFLAGS) $(DDDEBUG)
324 +%.lo: %.cc
325 + libtool --mode=compile $(CXX) -c -o $@ $< -I$(INCLUDE) $(CFLAGS) $(DDDEBUG)
326
327 optimize_dec: lib$(P).b
328
329 @@ -80,7 +79,7 @@ $(OBJ): $(PHDR)
330 $(UBJ): $(PHDR)
331
332 $(TARGET): $(SRC) $(OBJ) $(HDR) $(LIBS) $(MNEMLIB)
333 - $(PURE) $(CXX) $(CFLAGS) $(LDFLAGS) -o $@ $(OBJ) $(LIBS) $(MNEMLIB) -lm
334 + libtool --mode=compile $(PURE) $(CXX) $(CFLAGS) $(LDFLAGS) -o $@ $(OBJ) $(LIBS) $(MNEMLIB) -lm
335
336 # optimize (DECstations and Alphas only: uses u-code)
337 $(TARGETu): $(SRC) $(UBJ) $(HDR) $(LIBS:.a=.b)
338 @@ -102,9 +101,10 @@ all: lib$(P).a lib$(P).b llib-l$(P).ln t
339 programs: $(TARGET) $(TARGETu) lintpgm
340
341 clean:
342 - rm -f *.o *.u mon.out gmon.out *.pixie *.Addrs *.Counts mnem.* \
343 + rm -f *.o *.lo *.u mon.out gmon.out *.pixie *.Addrs *.Counts mnem.* \
344 .pure core *.warnings
345
346 distclean: clean
347 - rm -f $(TARGET) $(TARGETu) lib*.a lib$(P).b llib-l$(P).ln \
348 + rm -f $(TARGET) $(TARGETu) lib*.a lib*.la lib$(P).b llib-l$(P).ln \
349 *.bak *~ tags .gdb_history *.qv *.qx
350 + rm -fr .libs
351 --- cudd-2.5.0.orig/st/Makefile
352 +++ cudd-2.5.0/st/Makefile
353 @@ -19,7 +19,7 @@ LINTSWITCH = -o
354 P = st
355 PSRC = st.c
356 PHDR = st.h
357 -POBJ = $(PSRC:.c=.o)
358 +POBJ = $(PSRC:.c=.lo)
359 PUBJ = $(PSRC:.c=.u)
360
361 WHERE = ..
362 @@ -27,12 +27,11 @@ INCLUDE = $(WHERE)/include
363
364 #---------------------------
365
366 -lib$(P).a: $(POBJ)
367 - ar rv $@ $?
368 - $(RANLIB) $@
369 +lib$(P).la: $(POBJ)
370 + libtool --mode=link gcc -o $@ $?
371
372 -.c.o: $(PHDR)
373 - $(CC) -c $< -I$(INCLUDE) $(CFLAGS)
374 +%.lo: %.c
375 + $(CC) -c -o $@ $< -I$(INCLUDE) $(CFLAGS)
376
377 optimize_dec: lib$(P).b
378
379 @@ -58,7 +57,8 @@ tags: $(PSRC) $(PHDR)
380 all: lib$(P).a lib$(P).b llib-l$(P).ln tags
381
382 clean:
383 - rm -f *.o *.u .pure *.warnings
384 + rm -f *.o *.lo *.u .pure *.warnings
385
386 distclean: clean
387 - rm -f lib*.a lib$(P).b llib-l$(P).ln tags *~ *.bak *.qv *.qx
388 + rm -f lib*.a lib*.la lib$(P).b llib-l$(P).ln tags *~ *.bak *.qv *.qx
389 + rm -fr .libs
390 --- cudd-2.5.0.orig/cudd/Makefile
391 +++ cudd-2.5.0/cudd/Makefile
392 @@ -59,7 +59,7 @@ PSRC = cuddAPI.c cuddAddAbs.c cuddAddApp
393 cuddZddPort.c cuddZddReord.c cuddZddSetop.c cuddZddSymm.c \
394 cuddZddUtil.c
395 PHDR = cudd.h cuddInt.h
396 -POBJ = $(PSRC:.c=.o)
397 +POBJ = $(PSRC:.c=.lo)
398 PUBJ = $(PSRC:.c=.u)
399 TARGET = test$(P)$(EXE)
400 TARGETu = test$(P)-u
401 @@ -71,12 +71,11 @@ UBJ = $(SRC:.c=.u)
402
403 #------------------------------------------------------
404
405 -lib$(P).a: $(POBJ)
406 - ar rv $@ $?
407 - $(RANLIB) $@
408 +lib$(P).la: $(POBJ)
409 + libtool --mode=link gcc -o $@ $?
410
411 -.c.o: $(PSRC) $(PHDR)
412 - $(CC) -c $< -I$(INCLUDE) $(CFLAGS) $(DDDEBUG)
413 +%.lo: %.c
414 + $(CC) -c -o $@ $< -I$(INCLUDE) $(CFLAGS) $(DDDEBUG)
415
416 optimize_dec: lib$(P).b
417
418 @@ -116,9 +115,10 @@ all: lib$(P).a lib$(P).b llib-l$(P).ln t
419 programs: $(TARGET) $(TARGETu) lintpgm
420
421 clean:
422 - rm -f *.o *.u mon.out gmon.out *.pixie *.Addrs *.Counts mnem.* \
423 + rm -f *.o *.lo *.u mon.out gmon.out *.pixie *.Addrs *.Counts mnem.* \
424 .pure core *.warnings
425
426 distclean: clean
427 - rm -f $(TARGET) $(TARGETu) lib*.a lib$(P).b llib-l$(P).ln \
428 + rm -f $(TARGET) $(TARGETu) lib*.a lib*.la lib$(P).b llib-l$(P).ln \
429 *.bak *~ tags .gdb_history *.qv *.qx
430 + rm -fr .libs