updates to contrib scripts to match docs
[cvc5.git] / contrib / build-cudd-2.4.2-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=0: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 --- a/Makefile
65 +++ b/Makefile
66 @@ -221,11 +221,16 @@
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 @@ -319,4 +324,6 @@
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 --- a/cudd/Makefile
93 +++ b/cudd/Makefile
94 @@ -59,7 +59,7 @@
95 cuddZddPort.c cuddZddReord.c cuddZddSetop.c cuddZddSymm.c \
96 cuddZddUtil.c
97 PHDR = cudd.h cuddInt.h
98 -POBJ = $(PSRC:.c=.o)
99 +POBJ = $(PSRC:.c=.lo)
100 PUBJ = $(PSRC:.c=.u)
101 TARGET = test$(P)$(EXE)
102 TARGETu = test$(P)-u
103 @@ -71,12 +71,11 @@
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) $(DDDEBUG)
115 +%.lo: %.c
116 + $(CC) -c -o $@ $< -I$(INCLUDE) $(CFLAGS) $(DDDEBUG)
117
118 optimize_dec: lib$(P).b
119
120 @@ -116,9 +115,10 @@
121 programs: $(TARGET) $(TARGETu) lintpgm
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 .gdb_history *.qv *.qx
132 + rm -fr .libs
133 --- a/dddmp/Makefile
134 +++ b/dddmp/Makefile
135 @@ -148,7 +148,7 @@
136 dddmpStoreMisc.c dddmpUtil.c dddmpBinary.c dddmpConvert.c \
137 dddmpDbg.c
138 PHDR = dddmp.h dddmpInt.h $(INCLUDE)/cudd.h $(INCLUDE)/cuddInt.h
139 -POBJ = $(PSRC:.c=.o)
140 +POBJ = $(PSRC:.c=.lo)
141 PUBJ = $(PSRC:.c=.u)
142 TARGET = test$(P)$(EXE)
143 TARGETu = test$(P)-u
144 @@ -182,12 +182,11 @@
145 $(WHERE)/mtr/llib-lmtr.ln $(WHERE)/st/llib-lst.ln \
146 $(WHERE)/util/llib-lutil.ln
147
148 -lib$(P).a: $(POBJ)
149 - ar rv $@ $?
150 - $(RANLIB) $@
151 +lib$(P).la: $(POBJ)
152 + libtool --mode=link gcc -o $@ $?
153
154 -.c.o: $(PHDR)
155 - $(CC) -c $< -I$(INCLUDE) $(ICFLAGS) $(XCFLAGS) $(DDDEBUG) $(MTRDEBUG) $(DDDMPDEBUG) $(LDFLAGS)
156 +%.lo: %.c
157 + $(CC) -c -o $@ $< -I$(INCLUDE) $(ICFLAGS) $(XCFLAGS) $(DDDEBUG) $(MTRDEBUG) $(DDDMPDEBUG) $(LDFLAGS)
158
159 optimize_dec: lib$(P).b
160
161 @@ -231,12 +230,13 @@
162 #----------------------------------------------------------------------------#
163
164 clean:
165 - rm -f *.o *.u mon.out gmon.out *.pixie *.Addrs *.Counts mnem.* \
166 + rm -f *.o *.lo *.u mon.out gmon.out *.pixie *.Addrs *.Counts mnem.* \
167 .pure core *.warnings
168
169 distclean: clean
170 - rm -f $(TARGET) $(TARGETu) lib*.a lib$(P).b llib-l$(P).ln \
171 + rm -f $(TARGET) $(TARGETu) lib*.a lib*.la lib$(P).b llib-l$(P).ln \
172 *.bak *~ tags .gdb_history *.qv *.qx
173 + rm -fr .libs
174
175
176
177 --- a/epd/Makefile
178 +++ b/epd/Makefile
179 @@ -19,7 +19,7 @@
180 P = epd
181 PSRC = epd.c
182 PHDR = epd.h
183 -POBJ = $(PSRC:.c=.o)
184 +POBJ = $(PSRC:.c=.lo)
185 PUBJ = $(PSRC:.c=.u)
186
187 WHERE = ..
188 @@ -27,12 +27,11 @@
189
190 #---------------------------
191
192 -lib$(P).a: $(POBJ)
193 - ar rv $@ $?
194 - $(RANLIB) $@
195 +lib$(P).la: $(POBJ)
196 + libtool --mode=link gcc -o $@ $?
197
198 -.c.o: $(PSRC) $(PHDR)
199 - $(CC) -c $< -I$(INCLUDE) $(CFLAGS)
200 +%.lo: %.c
201 + $(CC) -c -o $@ $< -I$(INCLUDE) $(CFLAGS)
202
203 optimize_dec: lib$(P).b
204
205 @@ -58,7 +57,8 @@
206 all: lib$(P).a lib$(P).b llib-l$(P).ln tags
207
208 clean:
209 - rm -f *.o *.u .pure *.warnings
210 + rm -f *.o *.lo *.u .pure *.warnings
211
212 distclean: clean
213 - rm -f lib*.a lib$(P).b llib-l$(P).ln tags *~ *.bak *.qv *.qx
214 + rm -f lib*.a lib*.la lib$(P).b llib-l$(P).ln tags *~ *.bak *.qv *.qx
215 + rm -fr .libs
216 --- a/mtr/Makefile
217 +++ b/mtr/Makefile
218 @@ -30,7 +30,7 @@
219 P = mtr
220 PSRC = mtrBasic.c mtrGroup.c
221 PHDR = mtr.h
222 -POBJ = $(PSRC:.c=.o)
223 +POBJ = $(PSRC:.c=.lo)
224 PUBJ = $(PSRC:.c=.u)
225 SRC = test$(P).c
226 HDR =
227 @@ -49,12 +49,11 @@
228
229 #---------------------------
230
231 -lib$(P).a: $(POBJ)
232 - ar rv $@ $?
233 - $(RANLIB) $@
234 +lib$(P).la: $(POBJ)
235 + libtool --mode=link gcc -o $@ $?
236
237 -.c.o: $(PSRC) $(PHDR)
238 - $(CC) -c $< -I$(INCLUDE) $(CFLAGS) $(MTRDEBUG)
239 +%.lo: %.c
240 + $(CC) -c -o $@ $< -I$(INCLUDE) $(CFLAGS) $(MTRDEBUG)
241
242 optimize_dec: lib$(P).b
243
244 @@ -88,9 +87,10 @@
245 cc -O3 $(XCFLAGS) $(LDFLAGS) -o $@ $(UBJ) $(BLIBS) -lm
246
247 clean:
248 - rm -f *.o *.u mon.out gmon.out *.pixie *.Addrs *.Counts mnem.* \
249 + rm -f *.o *.lo *.u mon.out gmon.out *.pixie *.Addrs *.Counts mnem.* \
250 .pure core *.warnings
251
252 distclean: clean
253 - rm -f $(TARGET) $(TARGETu) lib*.a lib$(P).b llib-l$(P).ln \
254 + rm -f $(TARGET) $(TARGETu) lib*.a lib*.la lib$(P).b llib-l$(P).ln \
255 *.bak *~ tags *.qv *.qx
256 + rm -fr .libs
257 --- a/nanotrav/Makefile
258 +++ b/nanotrav/Makefile
259 @@ -19,9 +19,7 @@
260
261 INCLUDE = $(WHERE)/include
262
263 -LIBS = $(WHERE)/dddmp/libdddmp.a $(WHERE)/cudd/libcudd.a \
264 - $(WHERE)/mtr/libmtr.a $(WHERE)/st/libst.a $(WHERE)/util/libutil.a \
265 - $(WHERE)/epd/libepd.a
266 +LIBS = $(WHERE)/libcudd.la $(WHERE)/libdddmp.la
267
268 MNEMLIB =
269 #MNEMLIB = $(WHERE)/mnemosyne/libmnem.a
270 @@ -39,7 +37,7 @@
271 HDR = bnet.h ntr.h $(WHERE)/include/dddmp.h $(WHERE)/include/cudd.h \
272 $(WHERE)/include/cuddInt.h
273
274 -OBJ = $(SRC:.c=.o)
275 +OBJ = $(SRC:.c=.lo)
276 UBJ = $(SRC:.c=.u)
277
278 MFLAG =
279 @@ -61,10 +59,10 @@
280 #------------------------------------------------------
281
282 $(TARGET): $(SRC) $(OBJ) $(HDR) $(LIBS) $(MNEMLIB)
283 - $(PURE) $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(OBJ) $(LIBS) $(MNEMLIB) -lm
284 + libtool --mode=link gcc $(CFLAGS) $(LDFLAGS) -o $@ $(OBJ) $(LIBS) $(MNEMLIB) -lm
285
286 -.c.o: $(HDR)
287 - $(CC) -c $< -I$(INCLUDE) $(CFLAGS) $(DDDEBUG)
288 +%.lo: %.c
289 + $(CC) -c -o $@ $< -I$(INCLUDE) $(CFLAGS) $(DDDEBUG)
290
291 # if the header files change, recompile
292 $(OBJ): $(HDR)
293 @@ -91,8 +89,9 @@
294 pixie $(TARGETu)
295
296 clean:
297 - rm -f *.o *.u mon.out gmon.out *.pixie *.Addrs *.Counts mnem.* \
298 + rm -f *.o *.lo *.u mon.out gmon.out *.pixie *.Addrs *.Counts mnem.* \
299 .pure core *.warnings
300
301 distclean: clean
302 rm -f $(TARGET) $(TARGETu) *.bak *~ .gdb_history *.qv *.qx
303 + rm -fr .libs
304 --- a/obj/Makefile
305 +++ b/obj/Makefile
306 @@ -45,7 +45,7 @@
307 P = obj
308 PSRC = cuddObj.cc
309 PHDR = cuddObj.hh $(INCLUDE)/cudd.h
310 -POBJ = $(PSRC:.cc=.o)
311 +POBJ = $(PSRC:.cc=.lo)
312 PUBJ = $(PSRC:.cc=.u)
313 TARGET = test$(P)$(EXE)
314 TARGETu = test$(P)-u
315 @@ -57,12 +57,11 @@
316
317 #------------------------------------------------------
318
319 -lib$(P).a: $(POBJ)
320 - ar rv $@ $?
321 - $(RANLIB) $@
322 +lib$(P).la: $(POBJ)
323 + libtool --mode=link g++ -o $@ $?
324
325 -.cc.o: $(PHDR)
326 - $(CPP) -c $< -I$(INCLUDE) $(CFLAGS) $(DDDEBUG)
327 +%.lo: %.cc
328 + $(CPP) -c -o $@ $< -I$(INCLUDE) $(CFLAGS) $(DDDEBUG)
329
330 optimize_dec: lib$(P).b
331
332 @@ -102,9 +101,10 @@
333 programs: $(TARGET) $(TARGETu) lintpgm
334
335 clean:
336 - rm -f *.o *.u mon.out gmon.out *.pixie *.Addrs *.Counts mnem.* \
337 + rm -f *.o *.lo *.u mon.out gmon.out *.pixie *.Addrs *.Counts mnem.* \
338 .pure core *.warnings
339
340 distclean: clean
341 - rm -f $(TARGET) $(TARGETu) lib*.a lib$(P).b llib-l$(P).ln \
342 + rm -f $(TARGET) $(TARGETu) lib*.a lib*.la lib$(P).b llib-l$(P).ln \
343 *.bak *~ tags .gdb_history *.qv *.qx
344 + rm -fr .libs
345 --- a/st/Makefile
346 +++ b/st/Makefile
347 @@ -19,7 +19,7 @@
348 P = st
349 PSRC = st.c
350 PHDR = st.h
351 -POBJ = $(PSRC:.c=.o)
352 +POBJ = $(PSRC:.c=.lo)
353 PUBJ = $(PSRC:.c=.u)
354
355 WHERE = ..
356 @@ -27,12 +27,11 @@
357
358 #---------------------------
359
360 -lib$(P).a: $(POBJ)
361 - ar rv $@ $?
362 - $(RANLIB) $@
363 +lib$(P).la: $(POBJ)
364 + libtool --mode=link gcc -o $@ $?
365
366 -.c.o: $(PHDR)
367 - $(CC) -c $< -I$(INCLUDE) $(CFLAGS)
368 +%.lo: %.c
369 + $(CC) -c -o $@ $< -I$(INCLUDE) $(CFLAGS)
370
371 optimize_dec: lib$(P).b
372
373 @@ -58,7 +57,8 @@
374 all: lib$(P).a lib$(P).b llib-l$(P).ln tags
375
376 clean:
377 - rm -f *.o *.u .pure *.warnings
378 + rm -f *.o *.lo *.u .pure *.warnings
379
380 distclean: clean
381 - rm -f lib*.a lib$(P).b llib-l$(P).ln tags *~ *.bak *.qv *.qx
382 + rm -f lib*.a lib*.la lib$(P).b llib-l$(P).ln tags *~ *.bak *.qv *.qx
383 + rm -fr .libs
384 --- a/util/Makefile
385 +++ b/util/Makefile
386 @@ -21,19 +21,18 @@
387 PSRC = cpu_time.c cpu_stats.c getopt.c safe_mem.c strsav.c texpand.c \
388 ptime.c prtime.c pipefork.c pathsearch.c stub.c \
389 tmpfile.c datalimit.c
390 -POBJ = $(PSRC:.c=.o)
391 +POBJ = $(PSRC:.c=.lo)
392 PUBJ = $(PSRC:.c=.u)
393 PHDR = util.h
394
395 WHERE = ..
396 INCLUDE = $(WHERE)/include
397
398 -lib$(P).a: $(POBJ)
399 - ar rv $@ $?
400 - $(RANLIB) $@
401 +lib$(P).la: $(POBJ)
402 + libtool --mode=link gcc -o $@ $?
403
404 -.c.o: $(PHDR)
405 - $(CC) -c $< -I$(INCLUDE) $(FLAGS) $(CFLAGS)
406 +%.lo: %.c
407 + $(CC) -c -o $@ $< -I$(INCLUDE) $(FLAGS) $(CFLAGS)
408
409 optimize_dec: lib$(P).b
410
411 @@ -59,7 +58,8 @@
412 all: lib$(P).a lib$(P).b llib-l$(P).ln tags
413
414 clean:
415 - rm -f *.o *.u core *.warnings
416 + rm -f *.o *.lo *.u core *.warnings
417
418 distclean: clean
419 - rm -f lib$(P).a lib$(P).b llib-l$(P).ln tags *.bak *~ .pure
420 + rm -f lib$(P).a lib$(P).la lib$(P).b llib-l$(P).ln tags *.bak *~ .pure
421 + rm -fr .libs