1file=$objdir/Makefile
2
3echo Extracting $file
4rm -f $file
5
6# Path to directories
7cfg=../$config_dir
8data=../$data_dir
9doc=../$doc_dir
10desc=../$desc_dir
11emx=../$emacs_dir
12ex=../$examples_dir
13misc=../$misc_dir
14src=../$src_dir
15
16knone=$src/kernel/none
17kern0=$src/kernel/$kernlvl0
18kern1=$src/kernel/$kernlvl1
19
20#
21# File lists
22#
23kernel="mp mpinl"
24gp=`ls $src_dir/gp/*.c | sed 's,.*/\(.*\)\.c,\1,'`
25language=`ls $src_dir/language/*.c | sed 's,.*/\(.*\)\.c,\1,'`
26basemath=`ls $src_dir/basemath/*.c | sed 's,.*/\(.*\)\.c,\1,'`
27modules=`ls $src_dir/modules/*.c   | sed 's,.*/\(.*\)\.c,\1,'`
28systems=
29if test -d "$src_dir/systems/$osname"; then
30  systems=`ls $src_dir/systems/$osname/*.c | sed 's,.*/\(.*\)\.c,\1,'`
31fi
32# remove paridecl: no general recompilation when only changing a prototype
33hlist=`ls $src_dir/headers/*.h | grep -v paridecl | grep -v paripriv |\
34       sed 's,.*/\(.*\)\.h,\1,'`
35# for installation put paridecl back. Remove \n otherwise make will choke.
36headerlist="paridecl paripriv `echo $hlist| tr '\n' ' '`"
37
38# special systems (OS/2 for now)
39shortlib_prefix=lib
40lib_prefix=lib
41dllib_prefix=lib
42case "$osname" in
43  os2)  shortlib_prefix= # 8.3 filenames
44        dllib_prefix= # != lib_prefix to allow gp-dyn link with DLL
45	export_lib_create=emximp; export_lib='$(DLLIBPARI)$(_A)'
46	export_file=pari.def; export_create="emxexp -u"
47	# Actually, the build will fail until the switch to -Zomf
48	dlld_ignore=- ;;
49esac
50
51PLOTCFLAGS=
52PLOTLIBS=
53postconfig="@: "
54case "$which_graphic_lib" in
55none)
56  graph=plotnull;;
57qt)
58  PLOTCFLAGS='-D__FANCY_WIN__ -I$(QTDIR)/include'
59  PLOTLIBS="-L\$(QTDIR)/lib $QTLIB"
60  graph=plotQt;;
61fltk)
62  PLOTCFLAGS="-I\$(FLTKDIR)/include $X11_INC"
63  PLOTLIBS="-L\$(FLTKDIR)/lib -lfltk $FLTK_LIBS"
64  postconfig='-fltk-config --post '
65  graph=plotfltk;;
66esac
67graph="plotport $graph"
68
69plotrunpath=
70case "$which_graphic_lib" in
71  *X11*)
72    PLOTCFLAGS="$PLOTCFLAGS $X11_INC"
73    PLOTLIBS="$PLOTLIBS $X11_LIBS"
74    plotrunpath=$X11
75    graph="plotX $graph"
76  ;;
77esac
78
79KERNOBJS=
80for f in $kernel; do
81  KERNOBJS="$KERNOBJS $f\$(_O)"
82done
83OBJS=$KERNOBJS
84for f in $basemath $language $modules $systems; do
85  OBJS="$OBJS $f\$(_O)"
86done
87OBJSGP=
88for f in $gp $graph; do
89  OBJSGP="$OBJSGP $f\$(_O)"
90done
91HEADERS=pariinl.h
92for f in $hlist; do
93  HEADERS="$HEADERS $src/headers/$f.h";
94done
95
96# runpath
97tmp=$runpath
98for d in "$plotrunpath" "$gmp" "$readline" "/usr/lib"; do
99  if test -n "$d"; then
100    case "$tmp" in
101      $d|*$dir_sep$d|*$dir_sep$d$dir_sep*);;
102      *) tmp="$tmp$dir_sep$d";;
103    esac
104  fi
105done
106RUNPTH_FINAL=
107RUNPTH=
108if test -n "$runpathprefix"; then
109  RUNPTH_FINAL=`$config_dir/ldflags "$LDneedsWl" "$runpathprefix$tmp"`
110  RUNPTH=`$config_dir/ldflags "$LDneedsWl" "$runpathprefix$TOP/$objdir$dir_sep$tmp"`
111fi
112
113if test -z "$DLLD"; then
114  exec="gp-sta"; static=y
115else
116  exec="gp-sta gp-dyn"
117fi
118case "$sizeof_long" in
119  4) numbits=32;;
120  8) numbits=64;;
121esac
122dotest="env \"LD_LIBRARY_PATH=.$dir_sep\$\$LD_LIBRARY_PATH\" \$(SHELL) $src/test/dotest $numbits"
123if test -z "$emacs"; then
124  install_emacs_files=
125else
126  install_emacs_files=install_emacs_files
127fi
128case "$static" in
129  n) dft=dyn; libdft=lib-dyn;;
130  y) dft=sta; libdft= ;;
131esac
132
133CPPFLAGS="-I. -I$src/headers"
134if test "$has_dlopen" = builtin; then
135  CPPFLAGS="$CPPFLAGS -I$src/systems/$osname"
136fi
137
138case "$ln_s" in
139  *cp*) ln_objdir=".";;
140  *)    ln_objdir="$objdir"
141esac
142
143cat > $file << EOT
144# Makefile for Pari/GP -- $pretty
145#
146#  This file was created by Configure. Any change made to it will be
147#  lost when Configure is run.
148#
149SHELL      = $make_sh
150PERL       = $perl
151AR	   = ar
152
153SIZEOF_LONG= $sizeof_long
154
155CC_FLAVOR  =
156CC         = $CC \$(CC_FLAVOR)
157CPPFLAGS   = $CPPFLAGS
158CFLAGS     = $CFLAGS
159DLCFLAGS   = $DLCFLAGS
160LD_FLAVOR  = \$(CC_FLAVOR)
161LD         = $LD \$(LD_FLAVOR)
162LDFLAGS    = $LDFLAGS
163DLLD_FLAVOR  = \$(LD_FLAVOR)
164DLLD       = $DLLD \$(DLLD_FLAVOR)
165DLLDFLAGS  = $DLLDFLAGS
166EXTRADLLDFLAGS = $EXTRADLLDFLAGS
167
168# HIGHLY EXPERIMENTAL (only tested with gmp-4.0 on ix86 and Ultra).
169# If you've configured and compiled GMP and would like to tune PARI using
170# the nice cycle counting functions in GMP, uncomment the 4 lines below
171# (correct the first one to the path to your gmp source tree).
172#
173#GMP     = /some/directory/gmp-4.0/tune
174#GMPFLAGS= -DGMP_TIMER
175#GMPO1 = \$(GMP)/time.o \$(GMP)/freq.o
176#GMPOBJS=\$(GMPO1) \$(GMPO2)
177#
178#You may need to add a few object files to GMPOBJS. On UltraSparc, uncomment
179#the following line
180#GMPO2 = \$(GMP)/sparcv9.o
181
182_O	   = .o
183_A	   = .a
184LIB_PREFIX = $lib_prefix
185DLLIB_PREFIX = $dllib_prefix
186LIBPARI_BASE = $libpari_base
187LIBPARI      = \$(LIB_PREFIX)pari
188DLLIBPARI    = \$(DLLIB_PREFIX)pari
189LIBPARI_STA  = \$(LIBPARI)\$(_A)
190LIBPARI_SO   = \$(DLLIBPARI).$DLSUFFIX
191SOLIBPARI    = \$(DLLIB_PREFIX)\$(LIBPARI_BASE).$DLSUFFIX
192LIBPARI_DYN   = \$(SOLIBPARI)$sodest
193LIBPARI_SONAME= \$(SOLIBPARI)$soname
194DL_DFLT_NAME = $DL_DFLT_NAME
195
196EXPORT_FILE   = $export_file
197EXPORT_CREATE = $export_create
198EXPORT_LIB    = $export_lib
199EXPORT_LIB_CREATE = $export_lib_create
200DLLD_IGNORE   = $dlld_ignore
201
202RUNPTH       = $RUNPTH
203RUNPTH_FINAL = $RUNPTH_FINAL
204LDDYN        = $LDDYN
205LIBS         = $LIBS
206
207RM = rm -f
208MV = mv -f
209LN = $ln_s
210CP_F = cp -f
211STRIP      = strip
212STRIPFLAGS =
213
214# Change these installation directories to suit your needs.
215# DESTDIR is used to install to a false hierachy (to build a Debian package)
216INCLUDEDIR= "\$(DESTDIR)$includedir"
217LIBDIR    = "\$(DESTDIR)$libdir"
218BINDIR    = "\$(DESTDIR)$bindir"
219MANDIR    = "\$(DESTDIR)$mandir"
220EMACSDIR  = "\$(DESTDIR)$emacsdir"
221DATADIR   = "\$(DESTDIR)$datadir"
222SYSDATADIR= "\$(DESTDIR)$sysdatadir"
223
224EXDIR     = \$(DATADIR)/examples
225MISCDIR   = \$(DATADIR)/misc
226DOCDIR    = \$(DATADIR)/doc
227
228INSTALL = $cfg/install
229INSTALL_PROGRAM = \$(INSTALL)
230INSTALL_DATA = \$(INSTALL) -m 644
231
232# Readline
233RLINCLUDE = $RLINCLUDE
234RLLIBS    = $RLLIBS
235# GMP
236GMPINCLUDE = $GMPINCLUDE
237# Graphic library.
238QTDIR      = "$QTDIR"
239MOC        = \$(QTDIR)/bin/moc
240PLOTCFLAGS = $PLOTCFLAGS
241PLOTLIBS   = $PLOTLIBS
242CPLUSPLUS  = g++
243
244FLTKDIR    = "$FLTKDIR"
245
246TOPLDDYN   = -L"$TOP/$objdir" \$(RLLIBS)
247# Description system
248DESC          = pari.desc
249DESC_HELP_GEN = $desc/gen_proto $desc/PARI/822.pm
250TMPSUF        = -$osname-$arch-$$.tmp
251
252DOTEST=$dotest
253
254OBJS   = $OBJS
255OBJSGP = $OBJSGP
256
257gp: gp-$dft ../gp$suffix$exe_suff $libdft
258
259../gp$suffix$exe_suff: gp-$dft
260	-\$(RM) \$@
261	-\$(LN) $ln_objdir/gp-$dft$exe_suff \$@
262
263all: $exec lib-sta
264
265lib-sta: \$(LIBPARI_STA)
266lib-dyn: \$(LIBPARI_DYN)
267
268\$(LIBPARI_STA): $add_funclist \$(OBJS)
269	-\$(RM) \$@
270	\$(AR) r \$@ \$(OBJS)
271	-$ranlib \$@
272
273kerntest\$(_O): $src/test/kerntest.c
274	\$(CC) -c \$(CFLAGS) -I$src/language \$(CPPFLAGS) -o \$@ $src/test/kerntest.c
275
276kerntest: $KERNOBJS kerntest\$(_O)
277	\$(CC) \$(CFLAGS) \$(CPPFLAGS) -o \$@ $KERNOBJS kerntest\$(_O) \$(LIBS)
278
279mpinl\$(_O): .headers parilvl0.h parilvl1.h $knone/mpinl.c
280	\$(CC) -c \$(CFLAGS) \$(CPPFLAGS) \$(DLCFLAGS) -o mpinl\$(_O) $knone/mpinl.c
281
282test-kernel:: kerntest
283	@./kerntest > gp.out;\
284	diff -c gp.out $src/test/$numbits/kernel > kern.dif;\
285	if test -s kern.dif; then echo "KERNEL BUG"; else echo OK; fi
286
287tune.o: $src/test/tune.c
288	\$(CC) \$(CFLAGS) \$(GMPFLAGS) \$(CPPFLAGS) -o \$@ \$< -c
289
290tune: tune-sta
291	-\$(RM) tune ../tune
292	-\$(LN) tune-sta tune
293	-\$(LN) $ln_objdir/tune ../tune
294
295tune-dyn: tune.o \$(LIBPARI_DYN)
296	\$(LD) \$(LDFLAGS) \$(RUNPTH) -o \$@ \$< \$(GMPOBJS) -L. \$(LDDYN) \$(LIBS)
297tune-sta: tune.o \$(LIBPARI_STA)
298	\$(LD) \$(LDFLAGS) -o \$@ \$< \$(GMPOBJS) ./\$(LIBPARI_STA) \$(LIBS)
299
300gp-sta: $add_funclist \$(OBJS) \$(OBJSGP)
301	\$(RM) \$@
302	\$(LD) -o \$@ \$(LDFLAGS) \$(OBJS) \$(OBJSGP) \$(RUNPTH) \$(RLLIBS) \$(PLOTLIBS) \$(LIBS)
303	$postconfig gp-sta
304
305cleanemacs:
306	\$(RM) $emx/*.elc
307cleantest:
308	\$(RM) *.dif gp.out pari.ps
309cleanobj:
310	-\$(RM) *\$(_O) mp.c *.s pariinl.h parilvl0.h parilvl1.h libpari* tune* $exec
311cleandesc:
312	-\$(RM) $desc/\$(DESC) *\$(TMPSUF)
313
314clean: cleanobj cleantest cleanemacs cleandesc
315
316.headers: $HEADERS
317	@touch \$@
318
319install: install-lib-$dft install-include install-bin install-man install-misc install-doc install-examples install-cfg install-data
320
321install-include:
322	-mkdir -p \$(INCLUDEDIR)/pari
323	-for i in paricfg.h pariinl.h; do \\
324	  \$(INSTALL_DATA) \$\$i \$(INCLUDEDIR)/pari; done
325	-for i in $headerlist; do \\
326	   \$(INSTALL_DATA) $src/headers/\$\$i.h  \$(INCLUDEDIR)/pari; done
327	-\$(RM) \$(INCLUDEDIR)/pari/genpari.h
328	-\$(LN) pari.h \$(INCLUDEDIR)/pari/genpari.h
329
330install-bin: install-bin-$dft
331
332install-bin-dyn: gp-dyn
333	-mkdir -p \$(BINDIR)
334	-\$(RM) \$(BINDIR)/gp-$version$exe_suff \$(BINDIR)/gp$exe_suff
335	\$(LD) -o \$(BINDIR)/gp-$version$exe_suff \$(LDFLAGS) \$(OBJSGP) \$(RUNPTH_FINAL) \$(TOPLDDYN) \$(LDDYN) \$(PLOTLIBS) \$(LIBS)
336	-\$(STRIP) \$(STRIPFLAGS) \$(BINDIR)/gp-$version$exe_suff
337	$postconfig \$(BINDIR)/gp-$version$exe_suff
338	-\$(LN) gp-$version$exe_suff \$(BINDIR)/gp$exe_suff
339
340install-bin-sta: gp-sta
341	-mkdir -p \$(BINDIR)
342	-\$(RM) \$(BINDIR)/gp-$version$exe_suff \$(BINDIR)/gp$exe_suff
343	\$(INSTALL_PROGRAM) gp-sta$exe_suff \$(BINDIR)/gp-$version$exe_suff
344	-\$(LN) gp-$version$exe_suff \$(BINDIR)/gp$exe_suff
345# Can't strip it if we want install() to work on OSF.
346#	-\$(STRIP) \$(STRIPFLAGS)  \$(BINDIR)/gp-$version
347	$postconfig \$(BINDIR)/gp-$version$exe_suff
348
349install-man::
350	-mkdir -p \$(MANDIR)
351	-\$(RM) \$(MANDIR)/pari.1 \$(MANDIR)/gp.1 \$(MANDIR)/gp-$version.1
352	\$(INSTALL_DATA) $doc/gphelp.1 \$(MANDIR)
353	\$(INSTALL_DATA) $doc/gp.1 \$(MANDIR)/gp-$version.1
354	-\$(LN) gp.1 \$(MANDIR)/pari.1
355	-\$(LN) gp-$version.1 \$(MANDIR)/gp.1
356
357install-misc: $install_emacs_files
358	-mkdir -p \$(MISCDIR) \$(BINDIR)
359	\$(INSTALL_PROGRAM) $misc/tex2mail \$(BINDIR)
360	\$(INSTALL_DATA) $doc/tex2mail.1 \$(MANDIR)
361	\$(INSTALL_DATA) $misc/README    \$(MISCDIR)
362	\$(INSTALL_DATA) $misc/color.dft \$(MISCDIR)
363	\$(INSTALL_DATA) $misc/gpalias   \$(MISCDIR)
364	\$(INSTALL_PROGRAM) $misc/gpflog \$(MISCDIR)
365	\$(INSTALL_DATA) $misc/gprc.dft  \$(MISCDIR)
366	\$(INSTALL_DATA) $misc/new.dic   \$(MISCDIR)
367	\$(INSTALL_DATA) $misc/pari.xpm  \$(MISCDIR)
368	\$(INSTALL_PROGRAM) $misc/xgp    \$(MISCDIR)
369
370install-cfg::
371	-mkdir -p \$(SYSDATADIR)
372	-\$(INSTALL_DATA) pari.cfg \$(SYSDATADIR)
373	-if test -n "$add_funclist"; then\
374	   mkdir -p \$(DATADIR)/PARI;\
375	   \$(INSTALL_DATA) $desc/PARI/822.pm \$(DATADIR)/PARI;\
376	   \$(INSTALL_DATA) $desc/\$(DESC) \$(DATADIR); fi
377
378install-doc::
379	-mkdir -p \$(BINDIR) \$(DOCDIR)
380	-cd $doc; \$(MAKE) all
381	-\$(INSTALL_PROGRAM) $doc/gphelp    \$(BINDIR)
382	-\$(INSTALL_DATA) $doc/Makefile     \$(DOCDIR)
383	-\$(INSTALL_DATA) $doc/translations \$(DOCDIR)
384	-\$(INSTALL_DATA) $doc/appa.tex     \$(DOCDIR)
385	-\$(INSTALL_DATA) $doc/appb.tex     \$(DOCDIR)
386	-\$(INSTALL_DATA) $doc/appc.tex     \$(DOCDIR)
387	-\$(INSTALL_DATA) $doc/parimacro.tex \$(DOCDIR)
388	-\$(INSTALL_DATA) $doc/pdfmacs.tex  \$(DOCDIR)
389	-\$(INSTALL_DATA) $doc/refcard.tex  \$(DOCDIR)
390	-\$(INSTALL_DATA) $doc/tutorial.tex \$(DOCDIR)
391	-\$(INSTALL_DATA) $doc/users.tex    \$(DOCDIR)
392	-\$(INSTALL_DATA) $doc/usersch1.tex \$(DOCDIR)
393	-\$(INSTALL_DATA) $doc/usersch2.tex \$(DOCDIR)
394	-\$(INSTALL_DATA) $doc/usersch3.tex \$(DOCDIR)
395	-\$(INSTALL_DATA) $doc/usersch4.tex \$(DOCDIR)
396	-\$(INSTALL_DATA) $doc/usersch5.tex \$(DOCDIR)
397	-\$(INSTALL_DATA) $doc/paricfg.tex  \$(DOCDIR)
398	-\$(INSTALL_DATA) $doc/libpari.dvi    \$(DOCDIR)
399	-\$(INSTALL_DATA) $doc/users.dvi    \$(DOCDIR)
400	-\$(INSTALL_DATA) $doc/tutorial.dvi \$(DOCDIR)
401	-\$(INSTALL_DATA) $doc/refcard.dvi  \$(DOCDIR)
402	-\$(INSTALL_DATA) $doc/refcard.ps   \$(DOCDIR)
403
404install-examples:
405	-mkdir -p \$(EXDIR)
406	-\$(INSTALL_DATA) $ex/EXPLAIN     \$(EXDIR)
407	-\$(INSTALL_DATA) $ex/Inputrc     \$(EXDIR)
408	-\$(INSTALL_DATA) $ex/Makefile    \$(EXDIR)
409	-\$(INSTALL_DATA) $ex/bench.gp    \$(EXDIR)
410	-\$(INSTALL_DATA) $ex/cl.gp       \$(EXDIR)
411	-\$(INSTALL_DATA) $ex/classno.gp  \$(EXDIR)
412	-\$(INSTALL_DATA) $ex/contfrac.gp \$(EXDIR)
413	-\$(INSTALL_DATA) $ex/lucas.gp    \$(EXDIR)
414	-\$(INSTALL_DATA) $ex/extgcd.c    \$(EXDIR)
415	-\$(INSTALL_DATA) $ex/rho.gp      \$(EXDIR)
416	-\$(INSTALL_DATA) $ex/squfof.gp   \$(EXDIR)
417	-\$(INSTALL_DATA) $ex/taylor.gp   \$(EXDIR)
418
419install-data:
420	-if test -d $data; then cd $data; \
421	   for d in \`ls\`; do \
422	     mkdir -p \$(DATADIR)/\$\$d && \
423	     for f in \`ls \$\$d\`; do \
424	       \$(INSTALL_DATA) \$\$d/\$\$f \$(DATADIR)/\$\$d; \
425	     done >/dev/null;\
426	   done; \
427	 fi
428
429install-lib-sta: \$(LIBPARI_STA)
430	-mkdir -p \$(LIBDIR)
431	-\$(RM) \$(LIBDIR)/\$(LIBPARI_STA)
432	\$(INSTALL_DATA) \$(LIBPARI_STA) \$(LIBDIR)/\$(LIBPARI_STA)
433
434install-lib-dyn-base:
435	-mkdir -p \$(LIBDIR)
436	-\$(RM) \$(LIBDIR)/\$(LIBPARI_DYN) \$(LIBDIR)/\$(LIBPARI_SONAME) \$(LIBDIR)/\$(LIBPARI_SO)
437	\$(INSTALL_PROGRAM) \$(LIBPARI_DYN) \$(LIBDIR)/\$(LIBPARI_DYN)
438install-lib-dyn-link: install-lib-dyn-base
439	-if test "\$(LIBPARI_SONAME)" != "\$(LIBPARI_SO)"; then \
440	  \$(LN) \$(LIBPARI_DYN) \$(LIBDIR)/\$(LIBPARI_SONAME);\
441	  \$(LN) \$(LIBPARI_DYN) \$(LIBDIR)/\$(LIBPARI_SO); fi
442install-lib-dyn: \$(LIBPARI_DYN) install-lib-dyn-link
443
444pariinl.h: parilvl0.h parilvl1.h
445	cat parilvl0.h parilvl1.h > pariinl.h
446
447bench: $exec
448	@\$(DOTEST) $test_basic
449dobench::
450	@\$(DOTEST) $test_basic
451test-all: $exec
452	@\$(DOTEST) $test_basic $test_extra
453dotest-all::
454	@\$(DOTEST) $test_basic $test_extra
455EOT
456for i in $test_extra $test_extra_out; do
457  cat >> $file << EOT
458test-$i: $exec
459	@\$(DOTEST) $i
460dotest-$i::
461	@\$(DOTEST) $i
462EOT
463done
464
465if test -z "$DLLD"; then
466  cat >> $file << EOT
467
468\$(LIBPARI_DYN)::
469	@echo "Configure could not find a way to build a shared library on this machine"
470
471EOT
472else
473  if test -n "$export_file"; then
474    cat >> $file << EOT
475
476EXPORT_FILE_BASE = $src/systems/os2/pari.def.base
477VERSION_VERBOSE = $pari_release_verbose
478
479\$(EXPORT_FILE): \$(OBJS) \$(EXPORT_FILE_BASE)
480	cat \$(EXPORT_FILE_BASE) | sed 's/<DLL_BASE>/\$(DLLIBPARI)/' | sed 's/<VENDOR>/pari.math.u-bordeaux.fr\//' | sed 's/<VERSION>/\$(VERSION_VERBOSE)/' | sed 's/<DESCR>/GP\/PARI compiled with \$(CFLAGS)/' > \$@
481	\$(EXPORT_CREATE) \$(OBJS) >> \$@
482
483\$(DLLIBPARI)\$(_A): \$(EXPORT_FILE)
484	\$(EXPORT_LIB_CREATE) -o \$@ \$(EXPORT_FILE)
485
486EOT
487  fi
488  cat >> $file << EOT
489
490gp-dyn: $add_funclist \$(OBJSGP) \$(LIBPARI_DYN) \$(EXPORT_LIB)
491	\$(RM) \$@
492	\$(LD) -o \$@ \$(LDFLAGS) \$(OBJSGP) \$(RUNPTH) \$(TOPLDDYN) \$(LDDYN) \$(PLOTLIBS) \$(LIBS)
493	$postconfig gp-dyn
494
495\$(LIBPARI_DYN): $add_funclist \$(OBJS) \$(EXPORT_FILE)
496	-\$(RM) \$(LIBPARI_DYN)
497	\$(DLLD_IGNORE)\$(DLLD) -o \$(LIBPARI_DYN) \$(DLLDFLAGS) \$(OBJS) \$(EXTRADLLDFLAGS) \$(EXPORT_FILE)
498	-if test "\$(LIBPARI_DYN)" != "\$(LIBPARI_SO)"; then \
499	  \$(RM) \$(LIBPARI_SO);\
500	  \$(LN) \$(LIBPARI_DYN) \$(LIBPARI_SO); fi
501	-if test "\$(LIBPARI_DYN)" != "\$(LIBPARI_SONAME)"; then \
502	  \$(RM) \$(LIBPARI_SONAME);\
503	  \$(LN) \$(LIBPARI_DYN) \$(LIBPARI_SONAME); fi
504EOT
505fi
506
507if test -n "$emacs"; then
508  cat >> $file << EOT
509elc:
510	@echo "Byte-Compiling elisp files..."
511	-cd $emx; $emacs -batch \
512	   --eval '(setq load-path (append (list ".") load-path))' \
513	   -f batch-byte-compile *.el
514
515$install_emacs_files: elc
516	-mkdir -p \$(EMACSDIR)
517	-cd $emx; for f in *.elc *.el pariemacs.txt; do \
518	  \$(INSTALL_DATA) \$\$f \$(EMACSDIR); \
519	done
520EOT
521fi
522
523if test -n "$add_funclist"; then
524  cat >> $file << EOT
525desc:: $src/language/init.h $src/gp/gp_init.h $src/gp/highlvl.h $src/language/members.h
526
527$src/funclist::
528	@-cksum \`env LANG= ls -d $src/functions/*/* | grep -v CVS\` > funclist\$(TMPSUF)
529	@-sh $cfg/mv-if-diff funclist\$(TMPSUF) $src/funclist
530
531$desc/\$(DESC): $src/funclist $desc/merge_822 $desc/PARI/822.pm
532	cd $desc && \$(PERL) merge_822 ../functions/*/* > def\$(TMPSUF)
533	mv $desc/def\$(TMPSUF) \$@
534
535$src/language/members.h: $desc/\$(DESC) $desc/gen_member
536	cd $desc && \$(PERL) gen_member \$(DESC) > members\$(TMPSUF)
537	mv $desc/members\$(TMPSUF) \$@
538
539$src/language/init.h: $desc/\$(DESC) \$(DESC_HELP_GEN)
540	cd $desc && \$(PERL) gen_proto basic \$(DESC) > init\$(TMPSUF)
541	mv $desc/init\$(TMPSUF) \$@
542
543$src/gp/gp_init.h: $desc/\$(DESC) \$(DESC_HELP_GEN)
544	cd $desc && \$(PERL) gen_proto gp \$(DESC) > gp_init\$(TMPSUF)
545	mv $desc/gp_init\$(TMPSUF) \$@
546
547$src/gp/highlvl.h: $desc/\$(DESC) \$(DESC_HELP_GEN)
548	cd $desc && \$(PERL) gen_proto highlevel \$(DESC) > highlvl\$(TMPSUF)
549	mv $desc/highlvl\$(TMPSUF) \$@
550
551L0MODS=$kern0/asm0.h $knone/addll.h $knone/mulll.h $knone/bfffo.h $knone/divll.h
552EOT
553fi
554
555# Level 0
556f=$src_dir/kernel/$kernlvl0/MakeLVL0.SH
557if test -s $f; then
558  . $f
559else
560  cat >> $file <<EOT
561parilvl0.h: \$(L0MODS)
562	$cfg/genkernel $kern0/asm0.h > parilvl0.h
563EOT
564fi
565
566# Level 1
567f=$src_dir/kernel/$kernlvl1/MakeLVL1.SH
568if test -s $f; then . $f; fi
569
570HUGELINE=
571for dir in basemath modules language gp graph graphdyn systems; do
572  eval list='$'$dir
573  case "$dir" in
574    systems)  SRC=$src/$dir/$osname;;
575    *)        SRC=$src/$dir;;
576  esac
577  for f in $list; do
578
579  source="$SRC/$f.c"
580  f=`basename $f`
581  depend=
582  cflags="\$(CFLAGS) \$(CPPFLAGS)"
583  compile='$(CC)'
584  case "$f" in
585  gp|gp_rl)
586    cflags="$cflags -I$src/language \$(RLINCLUDE)"
587    depend="$src/language/anal.h $src/gp/gp.h ./paricfg.h"
588    ;;
589  gp_init)
590    cflags="$cflags -I$src/graph"
591    depend="$src/graph/rect.h $src/gp/gp_init.h"
592    ;;
593  default)
594    depend="$src/language/anal.h ./paricfg.h"
595    cflags="$cflags \$(DLCFLAGS)"
596    ;;
597  plotport)
598    cflags="$cflags -I$src/graph"
599    depend="$src/graph/rect.h"
600    ;;
601  highlvl)
602    cflags="$cflags -DDL_DFLT_NAME=\$(DL_DFLT_NAME)"
603    depend="$src/gp/highlvl.h"
604    ;;
605  plotQt)
606    cflags="$cflags \$(PLOTCFLAGS)"
607    depend="$src/graph/rect.h"
608    compile="\$(MOC) -o plotQt.moc.cpp $src/graph/plotQt.c && \$(CPLUSPLUS)"
609    ;;
610  plotfltk)
611    cflags="$cflags \$(PLOTCFLAGS)"
612    depend="$src/graph/rect.h"
613    compile="\$(CPLUSPLUS)"
614    ;;
615  plot*)
616    cflags="$cflags \$(PLOTCFLAGS)"
617    depend="$src/graph/rect.h"
618    ;;
619  es|sumiter)
620    depend="$src/language/anal.h"
621    cflags="$cflags \$(DLCFLAGS)"
622    ;;
623  whatnow);;
624  init)
625    depend="$src/language/anal.h $src/language/init.h"
626    cflags="$cflags \$(DLCFLAGS)"
627    ;;
628  anal)
629    depend="$src/language/anal.h $src/language/members.h"
630    cflags="$cflags \$(DLCFLAGS)"
631    ;;
632  *)
633    cflags="$cflags \$(DLCFLAGS)"
634    ;;
635  esac
636HUGELINE="$HUGELINE
637$f\$(_O): .headers $depend $source
638	$compile -c $cflags -o $f\$(_O) $source"
639  done
640done
641# avoid execing too many "cat". MS-DOS can't handle it
642echo "$HUGELINE" >> $file
643
644echo ".PHONY: gp dft clean"  >> $file
645