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 11ex=../$examples_dir 12misc=../$misc_dir 13src=../$src_dir 14 15knone=$src/kernel/none 16kern0=$src/kernel/$kernlvl0 17kern1=$src/kernel/$kernlvl1 18 19if test -n "$add_funclist"; then 20 add_funclist=$src/funclist 21fi 22 23# 24# File lists 25# 26kernel="mpker mpinl" 27gp=`ls $src_dir/gp/*.c | sed 's,.*/\(.*\)\.c,\1,'` 28language=`ls $src_dir/language/*.c | sed 's,.*/\(.*\)\.c,\1,'` 29basemath=`ls $src_dir/basemath/*.c | sed 's,.*/\(.*\)\.c,\1,'` 30modules=`ls $src_dir/modules/*.c | sed 's,.*/\(.*\)\.c,\1,'` 31mt="mt $thread_engine" 32 33systems= 34if test -d "$src_dir/systems/$osname"; then 35 systems=`ls $src_dir/systems/$osname/*.c | sed 's,.*/\(.*\)\.c,\1,'` 36fi 37# remove paridecl: no general recompilation when only changing a prototype 38hlist=`ls $src_dir/headers/*.h | grep -v paridecl | grep -v paripriv |\ 39 sed 's,.*/\(.*\)\.h,\1,'` 40# for installation put paridecl back. Remove \n otherwise make will choke. 41headerlist="paridecl paripriv `echo $hlist| tr '\n' ' '`" 42 43#Add src/language/parse.c if it is not yet generated 44case $language in *parse*);; *) language="$language parse";; esac 45 46# special systems (OS/2 for now) 47shortlib_prefix=lib 48lib_prefix=lib 49dllib_prefix=lib 50case "$osname" in 51 os2) shortlib_prefix= # 8.3 filenames 52 dllib_prefix= # != lib_prefix to allow gp-dyn link with DLL 53 export_lib_create=emximp; export_lib='$(DLLIBPARI)$(_A)' 54 export_file=pari.def; export_create="emxexp -u" 55 # Actually, the build will fail until the switch to -Zomf 56 dlld_ignore=- ;; 57 mingw) 58 export_file='$(LIBPARI).def'; 59 export_exe='$(LIBPARI)_exe.def';; 60 darwin) 61 ld_install_name="-Wl,-install_name -Wl,\"$libdir\"/\$(LIBPARI_DYN)";; 62esac 63case "$osname" in 64 mingw|cygwin) 65 install_implib="\$(INSTALL_DATA) \$(LIBPARI_SO)\$(_A) \$(LIBDIR)/\$(LIBPARI_SO)\$(_A)";; 66 *) 67 install_implib="";; 68esac 69 70PLOTCFLAGS= 71PLOTLIBS= 72postconfig=: 73plotrunpath= 74case "$which_graphic_lib" in 75ps|svg|none) 76 graph=plot$which_graphic_lib;; 77Qt4) 78 PLOTCFLAGS="\$(QTINC)" 79 PLOTLIBS="\$(QTLIB) $QTLIBS" 80 graph=plotQt4;; 81fltk) 82 PLOTCFLAGS= 83 PLOTLIBS="$FLTK_LIBS" 84 postconfig='fltk-config --post ' 85 graph=plotfltk;; 86win32) 87 PLOTLIBS="-lgdi32" 88 graph=plotWin32;; 89X11) 90 PLOTCFLAGS="$PLOTCFLAGS $X11_INC" 91 PLOTLIBS="$PLOTLIBS $X11_LIBS" 92 plotrunpath=$X11 93 graph=plotX;; 94*) 95 echo >&2 "### Unrecognized graphic library '$which_graphic_lib'." 96 exit 1;; 97esac 98libgraph="plotport plottty" 99 100KERNOBJS= 101for f in $kernel; do 102 KERNOBJS="$KERNOBJS $f\$(_O)" 103done 104OBJS=$KERNOBJS 105for f in $basemath $language $modules $systems $mt $libgraph; do 106 OBJS="$OBJS $f\$(_O)" 107done 108OBJSGP= 109for f in $gp $graph; do 110 OBJSGP="$OBJSGP $f\$(_O)" 111done 112HEADERS="mpinl.h parimt.h" 113for f in $hlist; do 114 HEADERS="$HEADERS $src/headers/$f.h"; 115done 116 117graph="$graph $libgraph" 118 119# runpath 120tmp=$runpath 121for d in "$plotrunpath" "$gmp" "$readline"; do 122 case "$d" in 123 ""|yes) ;; 124 *) case "$tmp" in 125 $d|*$dir_sep$d|*$dir_sep$d$dir_sep*);; 126 *) tmp="$tmp$dir_sep$d";; 127 esac ;; 128 esac 129done 130RUNPTH_FINAL= 131RUNPTH= 132if test -n "$runpathprefix"; then 133 RUNPTH_FINAL=`$config_dir/ldflags "$LDneedsWl" $runpathprefix"$tmp"` 134 RUNPTH=`$config_dir/ldflags "$LDneedsWl" $runpathprefix\\\$\(TOPDIR\)/$objdir$dir_sep"$tmp"` 135fi 136 137if test -z "$DLLD"; then 138 exec="gp-sta$exe_suff"; static=y 139else 140 exec="gp-sta$exe_suff gp-dyn$exe_suff" 141fi 142case "$sizeof_long" in 143 4) numbits=32;; 144 8) numbits=64;; 145esac 146dotest="env \"RUNTEST=\$(RUNTEST)\" \"LD_LIBRARY_PATH=.$dir_sep\$\$LD_LIBRARY_PATH\" \$(SHELL) ../src/test/dotest $numbits \"$exe_suff\"" 147case "$static" in 148 n) dft=dyn; libdft=lib-dyn; dfttarget="gp-dyn gp-sta";; 149 y) dft=sta; libdft= ; dfttarget="gp-sta";; 150esac 151 152CPPFLAGS="-I. -I$src/headers" 153if test "$has_dlopen" = builtin; then 154 CPPFLAGS="$CPPFLAGS -I$src/systems/$osname" 155fi 156 157case "$ln_s" in 158 *cp*) ln_objdir=".";; 159 *) ln_objdir="$objdir" 160esac 161 162cat > $file << EOT 163# Makefile for Pari/GP -- $pretty 164# 165# This file was created by Configure. Any change made to it will be 166# lost when Configure is run. 167# 168TOPDIR="$TOP" 169 170SHELL = $make_sh 171PERL = $perl 172BISON = bison 173AR = ar 174RANLIB = ranlib 175 176SIZEOF_LONG= $sizeof_long 177 178CC_FLAVOR = 179CC = $CC \$(CC_FLAVOR) 180CPPFLAGS = $CPPFLAGS 181CFLAGS = $CFLAGS 182DLCFLAGS = $DLCFLAGS 183KERNELCFLAGS = $KERNELCFLAGS 184LD_FLAVOR = \$(CC_FLAVOR) 185LD = $LD \$(LD_FLAVOR) 186LDFLAGS = $LDFLAGS 187DLLD_FLAVOR = \$(LD_FLAVOR) 188DLLD = $DLLD \$(DLLD_FLAVOR) 189DLLDFLAGS = $DLLDFLAGS 190EXTRADLLDFLAGS = $EXTRADLLDFLAGS 191RUNTEST = $RUNTEST 192 193# HIGHLY EXPERIMENTAL (only tested with gmp-4.0 on ix86 and Ultra). 194# If you've configured and compiled GMP and would like to tune PARI using 195# the nice cycle counting functions in GMP, uncomment the 4 lines below 196# (correct the first one to the path to your gmp source tree). 197# 198#GMP = /some/directory/gmp-4.0/tune 199#GMPFLAGS= -DGMP_TIMER 200#GMPO1 = \$(GMP)/time.o \$(GMP)/freq.o 201#GMPOBJS=\$(GMPO1) \$(GMPO2) 202# 203#You may need to add a few object files to GMPOBJS. On UltraSparc, uncomment 204#the following line 205#GMPO2 = \$(GMP)/sparcv9.o 206 207_O = .o 208_A = .a 209LIB_PREFIX = $lib_prefix 210DLLIB_PREFIX = $dllib_prefix 211LIBPARI_BASE = $libpari_base 212LIBPARI = \$(LIB_PREFIX)pari 213DLLIBPARI = \$(DLLIB_PREFIX)pari 214LIBPARI_STA = \$(LIBPARI)\$(_A) 215LIBPARI_SO = \$(DLLIBPARI).$DLSUFFIX 216SOLIBPARI = \$(DLLIB_PREFIX)\$(LIBPARI_BASE).$DLSUFFIX 217LIBPARI_DYN = \$(SOLIBPARI)$sodest 218LIBPARI_SONAME= \$(SOLIBPARI)$soname 219DL_DFLT_NAME = $DL_DFLT_NAME 220 221LD_INSTALL_NAME = $ld_install_name 222 223EXPORT_FILE = $export_file 224EXPORT_EXE = $export_exe 225EXPORT_CREATE = $export_create 226EXPORT_LIB = $export_lib 227EXPORT_LIB_CREATE = $export_lib_create 228DLLD_IGNORE = $dlld_ignore 229DLLTOOL = $DLLTOOL 230 231RUNPTH = $RUNPTH 232RUNPTH_FINAL = $RUNPTH_FINAL 233LDDYN = $LDDYN 234LIBS = $LIBS 235GMPLIBS = $GMPLIBS 236MT_LIBS = $MT_LIBS 237RT_LIBS = $RT_LIBS 238DL_LIBS = $DL_LIBS 239DYN_LIBS = \$(GMPLIBS) \$(DL_LIBS) \$(RT_LIBS) \$(MT_LIBS) \$(LIBS) 240STA_LIBS = \$(GMPLIBS) \$(DL_LIBS) \$(RT_LIBS) \$(MT_LIBS) \$(LIBS) 241 242RM = rm -f 243MV = mv -f 244LN = $ln_s 245CP_F = cp -f 246STRIP = strip 247STRIPFLAGS = 248 249# Change these installation directories to suit your needs. 250# DESTDIR is used to install to a false hierachy (to build a Debian package) 251INCLUDEDIR= "\$(DESTDIR)$includedir" 252LIBDIR = "\$(DESTDIR)$libdir" 253BINDIR = "\$(DESTDIR)$bindir" 254MANDIR = "\$(DESTDIR)$mandir" 255DATADIR = "\$(DESTDIR)$datadir" 256SYSDATADIR= "\$(DESTDIR)$sysdatadir" 257 258EXDIR = \$(DATADIR)/examples 259MISCDIR = \$(DATADIR)/misc 260DOCDIR = \$(DATADIR)/doc 261 262INSTALL = $cfg/install 263INSTALL_PROGRAM = \$(INSTALL) 264INSTALL_DATA = \$(INSTALL) -m 644 265TAR = tar 266 267# Readline 268RLINCLUDE = $RLINCLUDE 269RLLIBS = $RLLIBS 270# GMP 271GMPINCLUDE = $GMPINCLUDE 272# Graphic library. 273QTMOC = $QTMOC 274QTINC = $QTINC 275QTLIB = $QTLIB 276PLOTCFLAGS = $PLOTCFLAGS 277PLOTLIBS = $PLOTLIBS 278CXX = g++ 279 280TOPLDDYN = "$TOP/$objdir" 281# Description system 282DESC = pari.desc 283DESC_HELP_GEN = $desc/gen_proto $desc/PARI/822.pm 284TMPSUF = $osname-$arch.tmp 285 286DOTEST=$dotest 287 288OBJS = $OBJS 289OBJSGP = $OBJSGP 290 291TESTS = $test_extra 292 293.PHONY: gp dft clean 294 295dft: $dfttarget ../gp$suffix$exe_suff $libdft 296 297gp: gp-$dft ../gp$suffix$exe_suff $libdft 298 299../gp$suffix$exe_suff: gp-$dft$exe_suff 300 -\$(RM) \$@ 301 -\$(LN) $ln_objdir/gp-$dft$exe_suff \$@ 302 303all: $exec lib-sta 304 305lib-sta: \$(LIBPARI_STA) 306lib-dyn: \$(LIBPARI_DYN) 307 308\$(LIBPARI_STA): $add_funclist \$(OBJS) 309 -\$(RM) \$@ 310 \$(AR) r \$@ \$(OBJS) 311 -\$(RANLIB) \$@ 312 313kerntest\$(_O): $src/test/kerntest.c 314 \$(CC) -c -I$src/language \$(CPPFLAGS) \$(CFLAGS) -o \$@ $src/test/kerntest.c 315 316dummy\$(_O): $src/test/dummy.c 317 \$(CC) -c \$(CPPFLAGS) \$(CFLAGS) -o \$@ $src/test/dummy.c 318 319kerntest: $KERNOBJS dummy\$(_O) kerntest\$(_O) 320 \$(CC) \$(CPPFLAGS) \$(CFLAGS) -o \$@ $KERNOBJS dummy\$(_O) kerntest\$(_O) \$(STA_LIBS) 321 322mpinl\$(_O): .headers parilvl0.h parilvl1.h $knone/mpinl.c 323 \$(CC) -c \$(CPPFLAGS) \$(CFLAGS) \$(DLCFLAGS) -o mpinl\$(_O) $knone/mpinl.c 324 325test-kernel:: kerntest 326 @./kerntest > gp.out;\ 327 diff -c gp.out $src/test/32/kernel > kern.dif;\ 328 if test -s kern.dif; then echo "KERNEL BUG"; else echo OK; fi 329 330tune\$(_O): .headers $src/test/tune.c 331 \$(CC) \$(GMPFLAGS) \$(CPPFLAGS) \$(CFLAGS) -o \$@ $src/test/tune.c -c 332 333tune: mpinl.h tune-sta 334 -\$(RM) tune ../tune 335 -\$(LN) tune-sta tune 336 -\$(LN) $ln_objdir/tune ../tune 337 338tune-dyn: tune\$(_O) \$(LIBPARI_DYN) 339 \$(LD) -L. \$(LDFLAGS) \$(RUNPTH) -o \$@ \$< \$(GMPOBJS) \$(LDDYN) \$(STA_LIBS) 340tune-sta: tune\$(_O) \$(LIBPARI_STA) 341 \$(LD) \$(LDFLAGS) \$(RUNPTH) -o \$@ \$< \$(GMPOBJS) ./\$(LIBPARI_STA) \$(STA_LIBS) 342 343gp-sta$exe_suff: $add_funclist \$(OBJS) \$(OBJSGP) \$(EXPORT_EXE) 344 \$(RM) \$@ 345 \$(LD) -o \$@ \$(LDFLAGS) \$(OBJS) \$(OBJSGP) \$(RUNPTH) \$(RLLIBS) \$(PLOTLIBS) \$(STA_LIBS) \$(EXPORT_EXE) 346 $postconfig gp-sta$exe_suff 347 348clean_pari_ps:: 349 @-\$(RM) pari.ps 350cleantest: 351 \$(RM) *.dif gp.out io-testfile pari.ps 352cleanobj: 353 -\$(RM) *\$(_O) mpker.c *.s parimt.h mpinl.h parilvl0.h parilvl1.h libpari* $exec kerntest 354 -\$(RM) gmon.out 355 -\$(RM) *.gcno *.gcda 356cleandesc: 357 -\$(RM) $desc/\$(DESC) *\$(TMPSUF) 358cleantune: 359 -\$(RM) tune tune-sta tune\$(_O) 360 361cleanall: cleanobj cleantune cleantest cleandesc 362 363clean: cleanall 364 365 366# Use this version to avoid problems with NFS and slightly out of synch 367# fileserver/host. We are recompiling everything anyway. Not on by default: 368# 3s is slower than the whole compilation on our development server :-) 369# .headers: $HEADERS 370# @sleep 3; touch \$@ 371.headers: $HEADERS 372 @touch \$@ 373 374install-nodata: install-lib-$dft install-include install-bin install-man install-misc install-examples install-cfg 375 376install: install-doc install-nodata install-data 377 378install-include: 379 -mkdir -p \$(INCLUDEDIR)/pari 380 -for i in paricfg.h mpinl.h parimt.h; do \\ 381 \$(INSTALL_DATA) \$\$i \$(INCLUDEDIR)/pari; done 382 -for i in $headerlist; do \\ 383 \$(INSTALL_DATA) $src/headers/\$\$i.h \$(INCLUDEDIR)/pari; done 384 -\$(RM) \$(INCLUDEDIR)/pari/genpari.h 385 -\$(LN) pari.h \$(INCLUDEDIR)/pari/genpari.h 386 387install-bin: install-bin-$dft 388 389install-bin-dyn: gp-dyn$exe_suff install-lib-dyn 390 -mkdir -p \$(BINDIR) 391 -\$(RM) \$(BINDIR)/gp-$version$exe_suff \$(BINDIR)/gp$exe_suff 392 \$(LD) -o \$(BINDIR)/gp-$version$exe_suff -L\$(LIBDIR) \$(LDFLAGS) \$(OBJSGP) \$(RUNPTH_FINAL) \$(LDDYN) \$(RLLIBS) \$(PLOTLIBS) \$(LIBS) 393 -\$(STRIP) \$(STRIPFLAGS) \$(BINDIR)/gp-$version$exe_suff 394 -cd \$(BINDIR); $postconfig gp-$version$exe_suff 395 -\$(LN) gp-$version$exe_suff \$(BINDIR)/gp$exe_suff 396 397install-bin-sta: gp-sta$exe_suff 398 -mkdir -p \$(BINDIR) 399 -\$(RM) \$(BINDIR)/gp-$version$exe_suff \$(BINDIR)/gp$exe_suff 400 \$(INSTALL_PROGRAM) gp-sta$exe_suff \$(BINDIR)/gp-$version$exe_suff 401 -\$(LN) gp-$version$exe_suff \$(BINDIR)/gp$exe_suff 402# Can't strip it if we want install() to work on OSF. 403# -\$(STRIP) \$(STRIPFLAGS) \$(BINDIR)/gp-$version 404 -cd \$(BINDIR); $postconfig gp-$version$exe_suff 405 406install-man:: 407 -mkdir -p \$(MANDIR) 408 -\$(RM) \$(MANDIR)/pari.1 \$(MANDIR)/gp.1 \$(MANDIR)/gp-$version.1 409 \$(INSTALL_DATA) $doc/gphelp.1 \$(MANDIR) 410 \$(INSTALL_DATA) $doc/gp.1 \$(MANDIR)/gp-$version.1 411 -\$(LN) gp.1 \$(MANDIR)/pari.1 412 -\$(LN) gp-$version.1 \$(MANDIR)/gp.1 413 414install-misc: 415 -mkdir -p \$(MISCDIR) \$(BINDIR) 416 \$(INSTALL_PROGRAM) $misc/tex2mail \$(BINDIR) 417 \$(INSTALL_DATA) $doc/tex2mail.1 \$(MANDIR) 418 \$(INSTALL_DATA) $misc/README \$(MISCDIR) 419 \$(INSTALL_DATA) $misc/color.dft \$(MISCDIR) 420 \$(INSTALL_DATA) $misc/gpalias \$(MISCDIR) 421 \$(INSTALL_PROGRAM) $misc/gpflog \$(MISCDIR) 422 \$(INSTALL_DATA) $misc/gprc.dft \$(MISCDIR) 423 \$(INSTALL_PROGRAM) $misc/xgp \$(MISCDIR) 424 425install-cfg:: 426 -mkdir -p \$(SYSDATADIR) 427 -\$(INSTALL_DATA) pari.cfg \$(SYSDATADIR) 428 -if test -n "$add_funclist"; then\ 429 mkdir -p \$(DATADIR)/PARI;\ 430 \$(INSTALL_DATA) $desc/PARI/822.pm \$(DATADIR)/PARI;\ 431 \$(INSTALL_DATA) $desc/\$(DESC) \$(DATADIR); fi 432 433install-doc: install-docdvi install-doctex 434 435install-doctex: 436 -mkdir -p \$(BINDIR) \$(DOCDIR) 437 -\$(INSTALL_DATA) $doc/translations \$(DOCDIR) 438 -\$(INSTALL_PROGRAM) $doc/gphelp \$(BINDIR) 439 -cd $doc; \$(MAKE) usersch3.tex 440 -\$(INSTALL_DATA) $doc/appa.tex \$(DOCDIR) 441 -\$(INSTALL_DATA) $doc/appb.tex \$(DOCDIR) 442 -\$(INSTALL_DATA) $doc/appd.tex \$(DOCDIR) 443 -\$(INSTALL_DATA) $doc/parimacro.tex \$(DOCDIR) 444 -\$(INSTALL_DATA) $doc/pdfmacs.tex \$(DOCDIR) 445 -\$(INSTALL_DATA) $doc/develop.tex \$(DOCDIR) 446 -\$(INSTALL_DATA) $doc/refcard.tex \$(DOCDIR) 447 -\$(INSTALL_DATA) $doc/tutorial.tex \$(DOCDIR) 448 -\$(INSTALL_DATA) $doc/tutorial-mf.tex \$(DOCDIR) 449 -\$(INSTALL_DATA) $doc/users.tex \$(DOCDIR) 450 -\$(INSTALL_DATA) $doc/usersch1.tex \$(DOCDIR) 451 -\$(INSTALL_DATA) $doc/usersch2.tex \$(DOCDIR) 452 -\$(INSTALL_DATA) $doc/usersch3.tex \$(DOCDIR) 453 -\$(INSTALL_DATA) $doc/usersch4.tex \$(DOCDIR) 454 -\$(INSTALL_DATA) $doc/usersch5.tex \$(DOCDIR) 455 -\$(INSTALL_DATA) $doc/usersch6.tex \$(DOCDIR) 456 -\$(INSTALL_DATA) $doc/usersch7.tex \$(DOCDIR) 457 -\$(INSTALL_DATA) $doc/usersch8.tex \$(DOCDIR) 458 -\$(INSTALL_DATA) $doc/paricfg.tex \$(DOCDIR) 459 460install-docdvi:: 461 -mkdir -p \$(DOCDIR) 462 -cd $doc; \$(MAKE) doc; for f in *.dvi; do \ 463 \$(INSTALL_DATA) \$\$f \$(DOCDIR); \ 464 done 465 466install-docpdf:: 467 -mkdir -p \$(DOCDIR) 468 -cd $doc; \$(MAKE) docpdf; for f in *.pdf; do \ 469 \$(INSTALL_DATA) \$\$f \$(DOCDIR); \ 470 done 471 472install-examples: 473 -mkdir -p \$(EXDIR) 474 -\$(INSTALL_DATA) $ex/EXPLAIN \$(EXDIR) 475 -\$(INSTALL_DATA) $ex/Inputrc \$(EXDIR) 476 -\$(INSTALL_DATA) Makefile.examples \$(EXDIR)/Makefile 477 -\$(INSTALL_DATA) $ex/bench.gp \$(EXDIR) 478 -\$(INSTALL_DATA) $ex/cl.gp \$(EXDIR) 479 -\$(INSTALL_DATA) $ex/classno.gp \$(EXDIR) 480 -\$(INSTALL_DATA) $ex/contfrac.gp \$(EXDIR) 481 -\$(INSTALL_DATA) $ex/lucas.gp \$(EXDIR) 482 -\$(INSTALL_DATA) $ex/extgcd.c \$(EXDIR) 483 -\$(INSTALL_DATA) $ex/rho.gp \$(EXDIR) 484 -\$(INSTALL_DATA) $ex/squfof.gp \$(EXDIR) 485 -\$(INSTALL_DATA) $ex/taylor.gp \$(EXDIR) 486 487install-data: 488 mkdir -p \$(DATADIR); \ 489 if test -d $data; then cd $data; \ 490 for d in \`ls\`; do \ 491 test -d "\$\$d" && (\$(TAR) c \$\$d | (cd \$(DATADIR) && \$(TAR) xo )); \ 492 done; \ 493 fi; 494 495link-data: 496 mkdir -p \$(DATADIR); \ 497 if test -d $data; then cd $data; \ 498 for d in \`ls\`; do \ 499 \$(LN) \$(TOPDIR)/$data_dir/\$\$d \$(DATADIR)/; \ 500 done; \ 501 fi; 502 503install-lib-sta: \$(LIBPARI_STA) 504 -mkdir -p \$(LIBDIR) 505 -\$(RM) \$(LIBDIR)/\$(LIBPARI_STA) 506 \$(INSTALL_DATA) \$(LIBPARI_STA) \$(LIBDIR)/\$(LIBPARI_STA) 507 508install-lib-dyn-base: 509 -mkdir -p \$(LIBDIR) 510 -\$(RM) \$(LIBDIR)/\$(LIBPARI_DYN) \$(LIBDIR)/\$(LIBPARI_SONAME) \$(LIBDIR)/\$(LIBPARI_SO) 511 \$(DLLD_IGNORE)\$(DLLD) -o \$(LIBDIR)/\$(LIBPARI_DYN) \$(DLLDFLAGS) \$(OBJS) \$(EXTRADLLDFLAGS) \$(DYN_LIBS) \$(EXPORT_FILE) \$(LD_INSTALL_NAME) 512 $install_implib 513 514install-lib-dyn-link: install-lib-dyn-base 515 -if test "\$(LIBPARI_DYN)" != "\$(LIBDIR)/\$(LIBPARI_SO)"; then \ 516 \$(LN) \$(LIBPARI_DYN) \$(LIBDIR)/\$(LIBPARI_SO); fi 517 -if test "\$(LIBPARI_SONAME)" != "\$(LIBPARI_SO)"; then \ 518 \$(LN) \$(LIBPARI_DYN) \$(LIBDIR)/\$(LIBPARI_SONAME); fi 519install-lib-dyn: \$(LIBPARI_DYN) install-lib-dyn-link 520 521nsis: gp 522 -cd $doc; \$(MAKE) docpdf 523 makensis pari.nsi 524 525parimt.h: $src/mt/$thread_engine.h 526 cat $src/mt/$thread_engine.h > parimt.h 527 528mpinl.h: parilvl0.h parilvl1.h 529 cat parilvl0.h parilvl1.h > mpinl.h 530 531bench: $exec clean_pari_ps 532 @\$(DOTEST) $test_basic 533dobench:: clean_pari_ps 534 @\$(DOTEST) $test_basic 535test-all: $exec clean_pari_ps 536 @\$(DOTEST) \$(TESTS) 537dotest-all:: clean_pari_ps 538 @\$(DOTEST) \$(TESTS) 539dyntest-all: gp-dyn$exe_suff clean_pari_ps 540 @env dotestSUF=dyn \$(DOTEST) \$(TESTS) 541statest-all: gp-sta$exe_suff clean_pari_ps 542 @env dotestSUF=sta \$(DOTEST) \$(TESTS) 543 544dotest-env:: 545 @export AAA=XXX BBB=YYY; \$(DOTEST) env 546EOT 547 548for i in $test_extra $test_extra_out $test_extra_OUT; do 549 echo "test-$i: $exec dotest-$i" >>$file 550done 551for i in $test_extra $test_extra_out; do 552 cat >> $file << EOT 553dotest-$i:: 554 @\$(DOTEST) $i 555EOT 556done 557 558if test "$optimization" = gcov; then 559 cat >> $file << EOT 560 561.PHONY: lcov-report lcov-reset 562LCOV_TRACE = lcov.info 563LCOV_REPORT= lcov-report 564LCOV_FLAGS= 565GENHTML_FLAGS= 566LCOV_TITLE="PARI/GP v$version.$patch lcov report ($status)" 567 568lcov-report: 569 \$(RM) \$(LCOV_TRACE) 570 rm -rf \$(LCOV_REPORT) 571 lcov -c \$(LCOV_FLAGS) -d . -b . -o \$(LCOV_TRACE) 572 genhtml \$(GENHTML_FLAGS) --legend -t \$(LCOV_TITLE) -o \$(LCOV_REPORT) \$(LCOV_TRACE) 573 574lcov-reset: 575 \$(RM) *.gcda 576EOT 577fi 578 579if test -n "$exe_suff"; then 580cat >> $file << EOT 581gp-sta: gp-sta$exe_suff 582gp-dyn: gp-dyn$exe_suff 583EOT 584fi 585 586if test -z "$DLLD"; then 587 cat >> $file << EOT 588 589\$(LIBPARI_DYN):: 590 @echo "Configure could not find a way to build a shared library on this machine" 591 592EOT 593else 594 if test -n "$export_file"; then 595 case "$osname" in 596 os2) 597 cat >> $file << EOT 598 599EXPORT_FILE_BASE = $src/systems/os2/pari.def.base 600VERSION_VERBOSE = $pari_release_verbose 601 602\$(EXPORT_FILE): \$(OBJS) \$(EXPORT_FILE_BASE) 603 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)/' > \$@ 604 \$(EXPORT_CREATE) \$(OBJS) >> \$@ 605 606\$(DLLIBPARI)\$(_A): \$(EXPORT_FILE) 607 \$(EXPORT_LIB_CREATE) -o \$@ \$(EXPORT_FILE) 608 609EOT 610 ;; 611 mingw) 612 cat >> $file << EOT 613 614\$(EXPORT_EXE): \$(OBJS) 615 \$(DLLTOOL) --export-all-symbols -k -z \$@.tmp \$(OBJS) 616 echo "NAME \$(LIBPARI)_exe" > \$@ && cat \$@.tmp >> \$@ 617 rm \$@.tmp 618 619\$(EXPORT_FILE): \$(OBJS) 620 \$(DLLTOOL) --export-all-symbols -k -z \$@.tmp \$(OBJS) 621 echo "LIBRARY \$(LIBPARI)" > \$@ && cat \$@.tmp >> \$@ 622 rm \$@.tmp 623EOT 624 ;; 625 esac 626 fi 627 cat >> $file << EOT 628 629gp-dyn$exe_suff: $add_funclist \$(OBJSGP) \$(LIBPARI_DYN) \$(EXPORT_LIB) 630 \$(RM) \$@ 631 \$(LD) -o \$@ -L\$(TOPLDDYN) \$(LDFLAGS) \$(OBJSGP) \$(RUNPTH) \$(RLLIBS) \$(LDDYN) \$(PLOTLIBS) \$(LIBS) 632 $postconfig gp-dyn$exe_suff 633 634\$(LIBPARI_DYN): $add_funclist \$(OBJS) \$(EXPORT_FILE) 635 -\$(RM) \$(LIBPARI_DYN) 636 \$(DLLD_IGNORE)\$(DLLD) -o \$(TOPLDDYN)/\$(LIBPARI_DYN) \$(DLLDFLAGS) \$(OBJS) \$(EXTRADLLDFLAGS) \$(DYN_LIBS) \$(EXPORT_FILE) 637 -if test "\$(LIBPARI_DYN)" != "\$(LIBPARI_SO)"; then \ 638 \$(RM) \$(LIBPARI_SO);\ 639 \$(LN) \$(LIBPARI_DYN) \$(LIBPARI_SO); fi 640 -if test "\$(LIBPARI_DYN)" != "\$(LIBPARI_SONAME)"; then \ 641 \$(RM) \$(LIBPARI_SONAME);\ 642 \$(LN) \$(LIBPARI_DYN) \$(LIBPARI_SONAME); fi 643EOT 644fi 645 646cat >> $file << EOT 647$src/language/parse.c $src/language/parse.h: $src/language/parse.y 648 \$(BISON) -d $src/language/parse.y -o $src/language/parse.c 649EOT 650 651if test -n "$add_funclist"; then 652# files generated using external scripts 653HUGELINE=" 654$src/funclist:: 655 @-$cfg/genfunclist $src/funclist $desc" 656suffix='$$$$-$(TMPSUF)' 657list="funclist init default gp_init" 658for name in $list; do 659 case $name in 660 funclist) 661 target="$desc/\$(DESC)" 662 depend="$src/funclist $desc/merge_822 $desc/PARI/822.pm" 663 script="merge_822 ../$src/funclist" 664 ;; 665 init) 666 target=$src/language/init.h 667 depend="$desc/\$(DESC) \$(DESC_HELP_GEN)" 668 script="gen_proto basic \$(DESC)" 669 ;; 670 default) 671 target=$src/language/default.h 672 depend="$desc/\$(DESC) \$(DESC_HELP_GEN)" 673 script="gen_proto default \$(DESC)" 674 ;; 675 gp_init) 676 target=$src/gp/gp_init.h 677 depend="$desc/\$(DESC) \$(DESC_HELP_GEN)" 678 script="gen_proto gp \$(DESC)" 679 ;; 680 esac 681HUGELINE="$HUGELINE 682$target: $depend 683 f=$name-$suffix; (cd $desc && \$(PERL) $script > \$\$f) && mv $desc/\$\$f \$@" 684done 685echo "$HUGELINE" >> $file 686 687fi 688 689# Level 0 690f=src/kernel/$kernlvl0/MakeLVL0.SH 691if test -s $f; then 692 . $f 693else 694 cat >> $file <<EOT 695L0MODS=$kern0/asm0.h $knone/addll.h $knone/mulll.h $knone/bfffo.h $knone/divll.h $knone/divll_pre.h 696parilvl0.h: \$(L0MODS) 697 $cfg/genkernel $src $kern0/asm0.h > parilvl0.h 698EOT 699fi 700 701if test -f "$TOP/.git/index"; then 702 vcfile="../.git/index" 703 cat >> $file <<EOT 704paricfg.h: $vcfile $cfg/version 705 -sh $cfg/setversion 706EOT 707fi 708 709# Level 1 710f=src/kernel/$kernlvl1/MakeLVL1.SH 711if test -s $f; then . $f; fi 712 713ANAL_H=$src/language/anal.h 714RECT_H=$src/graph/rect.h 715HUGELINE= 716for dir in basemath modules language gp graph systems mt; do 717 eval list='$'$dir 718 case "$dir" in 719 systems) SRC=$src/$dir/$osname;; 720 *) SRC=$src/$dir;; 721 esac 722 for f in $list; do 723 724 source="$SRC/$f.c" 725 f=`basename $f` 726 depend= 727 cflags="\$(CPPFLAGS)" 728 compile='$(CC)' 729 case "$f" in 730 gp) 731 cflags="$cflags -I$src/language -DDL_DFLT_NAME=\$(DL_DFLT_NAME)" 732 depend="$src/gp/gp.h $src/gp/gp_init.h" 733 ;; 734 gp_rl|texmacs) 735 cflags="$cflags -I$src/language \$(RLINCLUDE)" 736 depend="$src/gp/gp.h" 737 ;; 738 paricfg) 739 depend="./paricfg.h" 740 cflags="$cflags \$(DLCFLAGS)" 741 ;; 742 plotport) 743 cflags="$cflags \$(DLCFLAGS)" 744 depend="$RECT_H" 745 ;; 746 plotsvg|plotps) 747 ;; 748 plotQt4) 749 cflags="$cflags \$(PLOTCFLAGS)" 750 depend="$RECT_H" 751 compile="\$(QTMOC) \$(PLOTCFLAGS) -o plotQt4.moc.cpp $src/graph/plotQt4.c && \$(CXX)" 752 ;; 753 plotfltk) 754 cflags="$cflags \$(PLOTCFLAGS)" 755 depend="$RECT_H" 756 compile="\$(CXX)" 757 ;; 758 plotX) 759 cflags="$cflags \$(PLOTCFLAGS)" 760 depend="$RECT_H" 761 ;; 762 es) 763 cflags="$cflags \$(DLCFLAGS)" 764 depend="$ANAL_H" 765 ;; 766 whatnow) 767 depend="$src/gp/whatnow.h" 768 ;; 769 init) 770 depend="$ANAL_H $src/language/init.h $src/language/default.h" 771 cflags="$cflags \$(DLCFLAGS)" 772 ;; 773 anal) 774 depend="$ANAL_H $src/language/parse.h" 775 cflags="$cflags \$(DLCFLAGS)" 776 ;; 777 parse) 778 depend="$ANAL_H $src/language/parse.h $src/language/parsec.h $src/language/tree.h" 779 cflags="$cflags \$(DLCFLAGS)" 780 ;; 781 compile) 782 depend="$ANAL_H $src/language/tree.h $src/language/opcode.h" 783 cflags="$cflags \$(DLCFLAGS)" 784 ;; 785 eval) 786 depend="$ANAL_H $src/language/opcode.h" 787 cflags="$cflags \$(DLCFLAGS)" 788 ;; 789 mpqs) 790 depend="$src/modules/mpqs.h" 791 cflags="$cflags \$(DLCFLAGS)" 792 ;; 793 ratpoints) 794 cflags="$cflags \$(DLCFLAGS) \$(KERNELCFLAGS)" 795 ;; 796 *) 797 cflags="$cflags \$(DLCFLAGS)" 798 ;; 799 esac 800cflags="$cflags \$(CFLAGS)" 801HUGELINE="$HUGELINE 802$f\$(_O): .headers $depend $source 803 $compile -c $cflags -o $f\$(_O) $source" 804 done 805done 806# avoid execing too many "cat". MS-DOS can't handle it 807echo "$HUGELINE" >> $file 808