1#!/bin/sh 2# 3# Copyright {c} 2014-2018 Carsten Sonne Larsen <cs@innolan.net> 4# All rights reserved. 5# 6# Redistribution and use in source and binary forms, with or without 7# modification, are permitted provided that the following conditions 8# are met: 9# 1. Redistributions of source code must retain the above copyright 10# notice, this list of conditions and the following disclaimer. 11# 2. Redistributions in binary form must reproduce the above copyright 12# notice, this list of conditions and the following disclaimer in the 13# documentation and/or other materials provided with the distribution. 14# 15# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 16# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18# ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE 19# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20# DAMAGES {INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION} 22# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23# LIABILITY, OR TORT {INCLUDING NEGLIGENCE OR OTHERWISE} ARISING IN ANY WAY 24# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25# SUCH DAMAGE. 26# 27 28set -e 29 30version="1.8.5" 31 32clang=false 33debugsym=false 34regtest=true 35openlibm=false 36stdlibm=false 37stdlibc=false 38useldconfig=false 39fpic=false 40 41prefix="/usr" 42pkgconfigdir="lib/pkgconfig" 43mandir="share/man" 44cflags="" 45cxxflags="" 46ldflags="" 47gcclib="-lstdc++" 48libm="" 49libc="" 50 51for arg in "$@"; do 52 unknown=true 53 case "$arg" in 54 --prefix=*) 55 prefix=`echo $arg | sed 's/--prefix=//'` 56 unknown=false 57 ;; 58 59 --pkgconfig=*) 60 pkgconfigdir=`echo $arg | sed 's/--pkgconfig=//'` 61 unknown=false 62 ;; 63 64 --mandir=*) 65 mandir=`echo $arg | sed 's/--mandir=//'` 66 unknown=false 67 ;; 68 69 --man-dir=*) 70 mandir=`echo $arg | sed 's/--mandir=//'` 71 unknown=false 72 ;; 73 74 --doc-dir=*) 75 unknown=false 76 ;; 77 78 --cross-compile=*) 79 crosscompile=`echo $arg | sed 's/--cross-compile=//'` 80 crosscompile="${crosscompile}-" 81 unknown=false 82 ;; 83 84 CFLAGS=*) 85 cflags=`echo $arg | sed 's/CFLAGS=//'` 86 cflags="${cflags} " 87 unknown=false 88 ;; 89 90 CXXFLAGS=*) 91 cxxflags=`echo $arg | sed 's/CXXFLAGS=//'` 92 cxxflags="${cxxflags} " 93 unknown=false 94 ;; 95 96 LDFLAGS=*) 97 ldflags=`echo $arg | sed 's/LDFLAGS=//'` 98 ldflags="${ldflags} " 99 unknown=false 100 ;; 101 102 --enable-clang) 103 clang=true 104 unknown=false 105 ;; 106 107 --disable-clang) 108 clang=false 109 unknown=false 110 ;; 111 112 --enable-ldconfig) 113 useldconfig=true 114 unknown=false 115 ;; 116 117 --disable-ldconfig) 118 useldconfig=false 119 unknown=false 120 ;; 121 122 --enable-pic) 123 fpic=true 124 unknown=false 125 ;; 126 127 --disable-pic) 128 fpic=false 129 unknown=false 130 ;; 131 132 --enable-debug) 133 debugsym=true 134 unknown=false 135 ;; 136 137 --disable-debug) 138 debugsym=false 139 unknown=false 140 ;; 141 142 --enable-test) 143 regtest=true 144 unknown=false 145 ;; 146 147 --disable-test) 148 regtest=false 149 unknown=false 150 ;; 151 152 --with-libm) 153 stdlibm=true 154 unknown=false 155 ;; 156 157 --without-libm) 158 stdlibm=false 159 unknown=false 160 ;; 161 162 --with-openlibm) 163 openlibm=true 164 unknown=false 165 ;; 166 167 --without-openlibm) 168 openlibm=false 169 unknown=false 170 ;; 171 172 --with-stdc++) 173 gcclib="-lstdc++" 174 unknown=false 175 ;; 176 177 --without-stdc++) 178 gcclib="" 179 unknown=false 180 ;; 181 182 --with-libc) 183 stdlibc=true 184 unknown=false 185 ;; 186 187 --without-libc) 188 stdlibc=false 189 unknown=false 190 ;; 191 192 --help) 193 echo "amath configure script ${version}" 194 echo 195 echo 'usage: ./configure [options]' 196 echo 'options:' 197 echo ' --prefix=<path>: installation prefix' 198 echo ' --pkgconfig=<path>: pkg-config path (without prefix)' 199 echo ' --mandir=<path>: manpage path (without prefix)' 200 echo ' --cross-compile=<prefix>: cross compiler prefix' 201 echo ' --enable-debug: include debug symbols' 202 echo ' --disable-debug: do not include debug symbols' 203 echo ' --enable-test: build code with regression tests' 204 echo ' --disable-test: do not include regression test' 205 echo ' --enable-clang: build explicit with clang compiler' 206 echo ' --disable-clang: do not explicit build with clang compiler' 207 echo ' --enable-ldconfig: use ldconfig to registre libraries' 208 echo ' --disable-ldconfig: do not use ldconfig to registre libraries' 209 echo ' --enable-pic: build with Position Independent Code (-fPIC)' 210 echo ' --disable-pic: do not build static libraries with Position Independent Code' 211 echo ' --with-libm: link with libm library (-lm)' 212 echo ' --without-libm: do not link with libm library' 213 echo ' --with-openlibm: link with openlibm library (-lopenlibm)' 214 echo ' --without-openlibm: do not link with openlibm library' 215 echo ' --with-stdc++: link with stdc++ library (-lstdc++)' 216 echo ' --without-stdc++: do not link with stdc++ library' 217 echo ' --with-libc: explicit link with libc library (-lc)' 218 echo ' --without-libc: do not link with libc library' 219 echo 220 echo ' CFLAGS=<flags>: additional compiler flags' 221 echo ' CXXFLAGS=<flags>: additional compiler flags' 222 echo ' LDFLAGS=<flags>: additional linker flags' 223 echo 224 exit 0 225 ;; 226 esac 227 228 if $unknown; then 229 echo "Invalid option $arg" 230 exit 1 231 fi 232done 233 234if $clang; then 235 ccompiler="clang" 236 cxxcompiler="clang++" 237else 238 ccompiler="gcc" 239 cxxcompiler="g++" 240fi 241 242if $regtest; then 243 options=" -DWITHTEST" 244else 245 options=" " 246fi 247 248if $debugsym; then 249 appop="-O0 -g" 250 libop="-O0 -g" 251 exestrip="" 252 debugflag="-DDEBUG " 253else 254 appop="-O2" 255 libop="-O3" 256 exestrip="-s" 257 debugflag="" 258fi 259 260dlibm=false 261mflags="" 262if $stdlibm; then 263 libm="-lm " 264 mflags="-DLIBM " 265 dlibm=true 266fi 267 268if $openlibm; then 269 libm="-lopenlibm " 270 mflags="-DLIBM " 271 dlibm=true 272fi 273 274if $useldconfig; then 275 soverion=".${version}" 276else 277 soverion="" 278fi 279 280if $stdlibc; then 281 gcclib="${gcclib} -lc" 282 libc="-lc" 283fi 284 285if $fpic; then 286 fPIC=" -fPIC" 287else 288 fPIC="" 289fi 290 291cflags="${cflags}${debugflag}${mflags}" 292cxxflags="${cflags} ${cxxflags}" 293 294APPSRCS=' 295evaluator.cpp 296functionlist.cpp 297fgrid.cpp 298lexer.cpp 299nodes.cpp 300operators.cpp 301optimizer.cpp 302parser.cpp 303token.cpp 304userfunction.cpp 305values.cpp 306viewer.cpp 307' 308SYSSRCS=' 309console.cpp 310console_amiga.cpp 311console_stdc.cpp 312console_termios.cpp 313console_windows.cpp 314filesystem_amiga.cpp 315filesystem_stdc.cpp 316language.cpp 317language_amiga.cpp 318language_stdc.cpp 319preferences.cpp 320preferences_amiga.cpp 321preferences_stdc.cpp 322program.cpp 323program_amiga.cpp 324program_haiku.cpp 325program_stdc.cpp 326program_test.cpp 327window_amiga.cpp 328window_haiku.cpp 329' 330FUNCTIONSRC=' 331absolute.cpp 332aexcosecant.cpp 333aexsecant.cpp 334arcchord.cpp 335arccos.cpp 336arcsin.cpp 337arctan.cpp 338arccosecant.cpp 339arccotangent.cpp 340arcsecant.cpp 341arccovercosine.cpp 342arccoversine.cpp 343archacovercosine.cpp 344archacoversine.cpp 345archavercosine.cpp 346archaversine.cpp 347arcvercosine.cpp 348arcversine.cpp 349ceil.cpp 350chord.cpp 351cosecant.cpp 352cosine.cpp 353cotangent.cpp 354covercos.cpp 355coversin.cpp 356cube.cpp 357excosecant.cpp 358exsecant.cpp 359floor.cpp 360hacovercos.cpp 361hacoversin.cpp 362havercos.cpp 363haversin.cpp 364hyparccosecant.cpp 365hyparccosine.cpp 366hyparccotangent.cpp 367hyparcsecant.cpp 368hyparcsine.cpp 369hyparctangent.cpp 370hypcosecant.cpp 371hypcosine.cpp 372hypcotangent.cpp 373hypsecant.cpp 374hypsine.cpp 375hyptangent.cpp 376ln.cpp 377log10.cpp 378log2.cpp 379node.cpp 380round.cpp 381secant.cpp 382signum.cpp 383sine.cpp 384square.cpp 385tangent.cpp 386trunc.cpp 387user.cpp 388vercos.cpp 389versin.cpp 390' 391STATEMENTSRCS=' 392about.cpp 393clear.cpp 394delete.cpp 395digits.cpp 396draw.cpp 397empty.cpp 398eval.cpp 399execute.cpp 400exit.cpp 401funcdef.cpp 402funclist.cpp 403help.cpp 404input.cpp 405license.cpp 406list.cpp 407load.cpp 408memory.cpp 409node.cpp 410output.cpp 411plot.cpp 412prefs.cpp 413prompt.cpp 414save.cpp 415show.cpp 416silent.cpp 417version.cpp 418' 419LIBAPPSRCS=' 420aengine.cpp 421bigint.cpp 422charbuf.cpp 423cplex.cpp 424nnumb.cpp 425ntext.cpp 426ntextd.cpp 427ntextp.cpp 428real.cpp 429' 430LIBREALSRCS=' 431acos.c 432acosh.c 433asin.c 434asinh.c 435atan.c 436atan2.c 437atanh.c 438cbrt.c 439ceil.c 440csign.c 441cos.c 442cosh.c 443exp.c 444expm1.c 445fabs.c 446floor.c 447fmod.c 448hypot.c 449kcos.c 450kremp2.c 451ksin.c 452ktan.c 453log.c 454log10.c 455log1p.c 456pow.c 457remp2.c 458round.c 459scalbn.c 460sin.c 461sinh.c 462sqrt.c 463tan.c 464tanh.c 465trunc.c 466' 467LIBREAL2SRCS=' 468acot.c 469acoth.c 470acrd.c 471acsc.c 472acsch.c 473acvc.c 474acvs.c 475aexc.c 476aexs.c 477ahcc.c 478ahcv.c 479ahv.c 480ahvc.c 481asec.c 482asech.c 483avcs.c 484aver.c 485cot.c 486coth.c 487crd.c 488csc.c 489csch.c 490cvc.c 491cvs.c 492exc.c 493exs.c 494hcc.c 495hcv.c 496hv.c 497hvc.c 498log2i.c 499log2p.c 500sec.c 501sech.c 502vcs.c 503ver.c 504' 505LIBCPLEXSRCS=' 506cacos.c 507cacosh.c 508casin.c 509casinh.c 510catan.c 511catanh.c 512ccos.c 513ccosh.c 514cexp.c 515csin.c 516csinh.c 517csqrt.c 518ctan.c 519ctanh.c 520' 521LIBCPLEX2SRCS=' 522cacot.c 523cacoth.c 524cacsc.c 525cacsch.c 526casec.c 527casech.c 528ccbrt.c 529ccot.c 530ccoth.c 531ccsc.c 532ccsch.c 533clog.c 534cpow.c 535clogb.c 536clog10.c 537csec.c 538csech.c 539csgn.c 540prim.c 541' 542LIBC1SRCS=' 543alloccpy.c 544mem.c 545memcpy.c 546memset.c 547strcmp.c 548strlen.c 549untag.c 550' 551FLXSRCS=' 552asprintf.c 553createcat.c 554createcatsrc.c 555createct.c 556globals.c 557locale_other.c 558main.c 559openlibs.c 560readprefs.c 561scancd.c 562scanct.c 563scanpo.c 564showfuncs.c 565strptime.c 566swapfuncs.c 567utils.c 568vastubs.c 569' 570 571if $dlibm; then 572 LIBREALSRCS="${LIBREAL2SRCS}" 573else 574 LIBREALSRCS="${LIBREALSRCS}${LIBREAL2SRCS}" 575fi 576 577if $dlibm; then 578 LIBCPLEXSRCS="${LIBCPLEX2SRCS}" 579else 580 LIBCPLEXSRCS="${LIBCPLEXSRCS}${LIBCPLEX2SRCS}" 581fi 582 583amathc="amathc" 584amath="amath" 585amathcplex="amathcplex" 586amathapp="amathapp" 587 588appmain="appmain" 589appfunction="functions" 590appstatement="statement" 591appsystem="appsystem" 592program="src/main" 593 594ldsysflags="-l${appsystem} -l${appfunction} -l${appstatement} -l${appmain} -l${appfunction} -l${appstatement} -l${appmain} " 595ldlibflags="-l${amathapp} ${libm}-l${amathcplex} ${libm}-l${amath} -l${amathc} ${gcclib}" 596 597############################ Main Application ########################### 598{ 599echo "CXX = ${crosscompile}${cxxcompiler}" 600echo "CXXFLAGS = ${appop}${options} ${cxxflags}${fPIC} -I. -I.. -Wall" 601echo "AR = ${crosscompile}ar" 602echo "RANLIB = ${crosscompile}ranlib" 603echo "DEL = rm -f" 604echo 605echo "all: lib" 606echo "static: lib" 607echo 608 609files="" 610for f in ${APPSRCS} 611do 612 b=`basename $f .cpp` 613 echo "${b}.o: ${f}" 614 echo " \${CXX} \${CXXFLAGS} -c ${f}" 615 echo 616 files="${files} ${b}.o" 617done 618 619echo "lib: ${files}" 620echo " \${AR} rcs lib${appmain}.a ${files}" 621echo " \${RANLIB} lib${appmain}.a" 622echo 623echo "clean:" 624echo " \${DEL} lib${appmain}.a ${files}" 625echo 626} > src/main/Makefile 627######################################################################### 628 629########################### Functions Library ########################### 630{ 631echo "CXX = ${crosscompile}${cxxcompiler}" 632echo "CXXFLAGS = ${appop}${options} ${cxxflags}${fPIC} -I. -I../.. -Wall" 633echo "AR = ${crosscompile}ar" 634echo "RANLIB = ${crosscompile}ranlib" 635echo "DEL = rm -f" 636echo 637echo "all: lib" 638echo "static: lib" 639echo 640 641files="" 642for f in ${FUNCTIONSRC} 643do 644 b=`basename $f .cpp` 645 echo "${b}.o: ${f}" 646 echo " \${CXX} \${CXXFLAGS} -c ${f}" 647 echo 648 files="${files} ${b}.o" 649done 650 651echo "lib: ${files}" 652echo " \${AR} rcs lib${appfunction}.a ${files}" 653echo " \${RANLIB} lib${appfunction}.a" 654echo 655echo "clean:" 656echo " \${DEL} lib${appfunction}.a ${files}" 657echo 658} > src/main/function/Makefile 659######################################################################### 660 661########################### Statement Library ########################### 662{ 663echo "CXX = ${crosscompile}${cxxcompiler}" 664echo "CXXFLAGS = ${appop}${options} ${cxxflags}${fPIC} -I. -I../.. -Wall" 665echo "AR = ${crosscompile}ar" 666echo "RANLIB = ${crosscompile}ranlib" 667echo "DEL = rm -f" 668echo 669echo "all: lib" 670echo "static: lib" 671echo 672 673files="" 674for f in ${STATEMENTSRCS} 675do 676 b=`basename $f .cpp` 677 echo "${b}.o: ${f}" 678 echo " \${CXX} \${CXXFLAGS} -c ${f}" 679 echo 680 files="${files} ${b}.o" 681done 682 683echo "lib: ${files}" 684echo " \${AR} rcs lib${appstatement}.a ${files}" 685echo " \${RANLIB} lib${appstatement}.a" 686echo 687echo "clean:" 688echo " \${DEL} lib${appstatement}.a ${files}" 689echo 690} > src/main/statement/Makefile 691######################################################################### 692 693############################ System Library ############################# 694{ 695echo "CXX = ${crosscompile}${cxxcompiler}" 696echo "CXXFLAGS = ${appop}${options} ${cxxflags}${fPIC} -I. -I.. -Wall" 697echo "AR = ${crosscompile}ar" 698echo "RANLIB = ${crosscompile}ranlib" 699echo "DEL = rm -f" 700echo 701echo "all: lib" 702echo "static: lib" 703echo 704 705files="" 706for f in ${SYSSRCS} 707do 708 b=`basename $f .cpp` 709 echo "${b}.o: ${f}" 710 echo " \${CXX} \${CXXFLAGS} -c ${f}" 711 echo 712 files="${files} ${b}.o" 713done 714 715echo "lib: ${files}" 716echo " \${AR} rcs lib${appsystem}.a ${files}" 717echo " \${RANLIB} lib${appsystem}.a" 718echo 719echo "clean:" 720echo " \${DEL} lib${appsystem}.a ${files}" 721echo 722} > src/system/Makefile 723######################################################################### 724 725########################## Application Library ########################## 726{ 727echo "CXX = ${crosscompile}${cxxcompiler}" 728echo "CXXFLAGS = ${libop}${options} ${cxxflags}-I. -I.. -Wall" 729echo "AR = ${crosscompile}ar" 730echo "RANLIB = ${crosscompile}ranlib" 731echo "MKDIR = mkdir -p" 732echo "RMDIR = rm -Rf" 733echo "DEL = rm -f" 734echo "INSTALL = install -m 0644" 735echo "LDCONFIG = ldconfig" 736echo "DOXYGEN = doxygen" 737echo "PREFIX = ${prefix}" 738echo "INSTDIR = \${DESTDIR}\${PREFIX}/lib/amath" 739echo "INSTDIRI = \${DESTDIR}\${PREFIX}/include/amath" 740echo "INSTDIRPC = \${DESTDIR}\${PREFIX}/${pkgconfigdir}" 741echo "alib = lib${amathapp}.a" 742echo "solib = lib${amathapp}.so" 743echo "pkgconfig = amatha.pc" 744echo 745echo "all: static shared" 746echo 747echo "static: \${alib}" 748echo 749echo "shared: \${solib}" 750echo 751 752files="" 753files2="" 754for f in ${LIBAPPSRCS} 755do 756 b=`basename $f .cpp` 757 echo "static/${b}.o: ${f}" 758 echo " \${CXX} \${CXXFLAGS}${fPIC} -c ${f} -o static/${b}.o" 759 echo 760 echo "shared/${b}.o: ${f}" 761 echo " \${CXX} \${CXXFLAGS} -fPIC -c ${f} -o shared/${b}.o" 762 echo 763 files="${files} static/${b}.o" 764 files2="${files2} shared/${b}.o" 765done 766 767echo ".PHONY: build" 768echo "build:" 769echo " \${MKDIR} static" 770echo " \${MKDIR} shared" 771echo 772echo "\${solib}: build ${files2}" 773echo " \${CXX} \${CXXFLAGS} -shared ${exestrip} -fPIC -Wl,-soname,\${solib}${soverion} -o \${solib} ${files2}" 774echo 775echo "\${alib}: build ${files}" 776echo " \${AR} rcs static/\${alib} ${files}" 777echo " \${RANLIB} static/\${alib}" 778echo 779echo ".PHONY: doc" 780echo "doc:" 781echo " \${DOXYGEN} amatha.dox" 782echo 783echo ".PHONY: install" 784echo "install:" 785echo " \${MKDIR} \${INSTDIR}" 786echo " \${MKDIR} \${INSTDIRPC}" 787echo " \${MKDIR} \${INSTDIRI}" 788echo " \${INSTALL} static/\${alib} \${INSTDIR}/\${alib}" 789echo " \${INSTALL} \${solib} \${INSTDIR}/\${solib}" 790echo " \${INSTALL} \${pkgconfig} \${INSTDIRPC}/\${pkgconfig}" 791echo " \${INSTALL} aengine.h \${INSTDIRI}/aengine.h" 792echo " \${INSTALL} bigint.h \${INSTDIRI}/bigint.h" 793echo " \${INSTALL} charbuf.h \${INSTDIRI}/charbuf.h" 794echo " \${INSTALL} cplex.h \${INSTDIRI}/cplex.h" 795echo " \${INSTALL} nnumb.h \${INSTDIRI}/nnumb.h" 796echo " \${INSTALL} ntext.h \${INSTDIRI}/ntext.h" 797echo " \${INSTALL} ntext.h \${INSTDIRI}/ntextd.h" 798echo " \${INSTALL} ntext.h \${INSTDIRI}/ntextp.h" 799echo " \${INSTALL} numb.h \${INSTDIRI}/numb.h" 800echo " \${INSTALL} real.h \${INSTDIRI}/real.h" 801if ${useldconfig}; then 802echo " \${LDCONFIG} \${INSTDIR}" 803fi 804echo 805echo ".PHONY: uninstall" 806echo "uninstall:" 807echo " \${DEL} \${INSTDIR}/\${alib}" 808echo " \${DEL} \${INSTDIR}/\${solib}" 809echo " \${DEL} \${INSTDIRPC}/\${pkgconfig}" 810echo " \${DEL} \${INSTDIRI}/aengine.h" 811echo " \${DEL} \${INSTDIRI}/charbuf.h" 812echo " \${DEL} \${INSTDIRI}/cplex.h" 813echo " \${DEL} \${INSTDIRI}/integer.h" 814echo " \${DEL} \${INSTDIRI}/nnumb.h" 815echo " \${DEL} \${INSTDIRI}/ntext.h" 816echo " \${DEL} \${INSTDIRI}/numb.h" 817echo " \${DEL} \${INSTDIRI}/real.h" 818if ${useldconfig}; then 819echo " \${LDCONFIG}" 820fi 821echo 822echo "clean:" 823echo " \${DEL} static/\${alib} \${solib} ${files} ${files2}" 824echo 825echo "very-clean: clean" 826echo " \${DEL} doxygen.warn" 827echo " \${RMDIR} man" 828echo " \${RMDIR} static" 829echo " \${RMDIR} shared" 830echo 831} > src/lib/Makefile 832######################################################################### 833 834############################### C Library ############################### 835{ 836echo "CC = ${crosscompile}${ccompiler}" 837echo "CFLAGS = -std=c9x ${libop}${options} ${cflags}-I. -I.. -Wall" 838echo "AR = ${crosscompile}ar" 839echo "RANLIB = ${crosscompile}ranlib" 840echo "MKDIR = mkdir -p" 841echo "RMDIR = rm -Rf" 842echo "DEL = rm -f" 843echo "INSTALL = install -m 0644" 844echo "LDCONFIG = ldconfig" 845echo "DOXYGEN = doxygen" 846echo "PREFIX = ${prefix}" 847echo "INSTDIR = \${DESTDIR}\${PREFIX}/lib/amath" 848echo "INSTDIRI = \${DESTDIR}\${PREFIX}/include/amath" 849echo "INSTDIRPC = \${DESTDIR}\${PREFIX}/${pkgconfigdir}" 850echo "INSTDIRM = \${DESTDIR}\${PREFIX}/${mandir}/man3" 851echo "alib = lib${amathc}.a" 852echo "solib = lib${amathc}.so" 853echo "pkgconfig = amathc.pc" 854echo "manpage = amathc.3" 855echo 856echo "all: static shared" 857echo 858echo "static: \${alib}" 859echo 860echo "shared: \${solib}" 861echo 862 863libc="" 864libcs="" 865for f in ${LIBC1SRCS} 866do 867 b=`basename $f .c` 868 echo "static/${b}.o: ${f}" 869 echo " \${CC} \${CFLAGS}${fPIC} -fno-builtin -c ${f} -o static/${b}.o" 870 echo 871 echo "shared/${b}.o: ${f}" 872 echo " \${CC} \${CFLAGS} -fPIC -fno-builtin -c ${f} -o shared/${b}.o" 873 echo 874 libc="${libc} static/${b}.o" 875 libcs="${libcs} shared/${b}.o" 876done 877 878echo ".PHONY: build" 879echo "build:" 880echo " \${MKDIR} static" 881echo " \${MKDIR} shared" 882echo 883echo "\${solib}: build ${libcs}" 884echo " \${CC} \${CFLAGS} -shared ${exestrip} -fPIC -Wl,-soname,\${solib}${soverion} -o \${solib} ${libcs}" 885echo 886echo "\${alib}: build ${libc}" 887echo " \${AR} rcs static/\${alib} ${libc}" 888echo " \${RANLIB} static/\${alib}" 889echo 890echo ".PHONY: doc" 891echo "doc:" 892echo " \${DOXYGEN} amathc.dox" 893echo 894echo ".PHONY: install" 895echo "install:" 896echo " \${MKDIR} \${INSTDIR}" 897echo " \${MKDIR} \${INSTDIRPC}" 898echo " \${MKDIR} \${INSTDIRI}" 899echo " \${INSTALL} static/\${alib} \${INSTDIR}/\${alib}" 900echo " \${INSTALL} \${solib} \${INSTDIR}/\${solib}" 901echo " \${INSTALL} \${pkgconfig} \${INSTDIRPC}/\${pkgconfig}" 902echo " \${INSTALL} \${manpage} \${INSTDIRM}/\${manpage}" 903echo " \${INSTALL} ../amath.h \${INSTDIRI}" 904echo " \${INSTALL} ../amathc.h \${INSTDIRI}" 905if ${useldconfig}; then 906echo " \${LDCONFIG} \${INSTDIR}" 907fi 908echo 909echo ".PHONY: uninstall" 910echo "uninstall:" 911echo " \${DEL} \${INSTDIR}/\${alib}" 912echo " \${DEL} \${INSTDIR}/\${solib}" 913echo " \${DEL} \${INSTDIRPC}/\${pkgconfig}" 914echo " \${DEL} \${INSTDIRM}/\${manpage}" 915echo " \${DEL} \${INSTDIRI}/amath.h" 916echo " \${DEL} \${INSTDIRI}/amathc.h" 917if ${useldconfig}; then 918echo " \${LDCONFIG}" 919fi 920echo 921echo "clean:" 922echo " \${DEL} static/\${alib} \${solib} ${libc} ${libcs}" 923echo 924echo "very-clean: clean" 925echo " \${DEL} doxygen.warn" 926echo " \${RMDIR} man" 927echo " \${RMDIR} static" 928echo " \${RMDIR} shared" 929echo 930} > src/clib/Makefile 931######################################################################### 932 933############################# Real Numbers ############################## 934{ 935echo "CC = ${crosscompile}${ccompiler}" 936echo "CFLAGS = -std=c9x ${libop}${options} ${cflags}-I. -I.. -Wall" 937echo "AR = ${crosscompile}ar" 938echo "RANLIB = ${crosscompile}ranlib" 939echo "MKDIR = mkdir -p" 940echo "RMDIR = rm -Rf" 941echo "DEL = rm -f" 942echo "INSTALL = install -m 0644" 943echo "LDCONFIG = ldconfig" 944echo "DOXYGEN = doxygen" 945echo "PREFIX = ${prefix}" 946echo "INSTDIR = \${DESTDIR}\${PREFIX}/lib/amath" 947echo "INSTDIRI = \${DESTDIR}\${PREFIX}/include/amath" 948echo "INSTDIRPC = \${DESTDIR}\${PREFIX}/${pkgconfigdir}" 949echo "INSTDIRM = \${DESTDIR}\${PREFIX}/${mandir}/man3" 950echo "alib = lib${amath}.a" 951echo "solib = lib${amath}.so" 952echo "pkgconfig = amathr.pc" 953echo "manpage = amathr.3" 954echo 955echo "all: static shared" 956echo 957echo "static: \${alib}" 958echo 959echo "shared: \${solib}" 960echo 961 962libamath="" 963libamaths="" 964for f in ${LIBREALSRCS} 965do 966 b=`basename $f .c` 967 echo "static/${b}.o: ${f}" 968 echo " \${CC} \${CFLAGS}${fPIC} -fno-builtin -c ${f} -o static/${b}.o" 969 echo 970 echo "shared/${b}.o: ${f}" 971 echo " \${CC} \${CFLAGS} -fPIC -fno-builtin -c ${f} -o shared/${b}.o" 972 echo 973 libamath="${libamath} static/${b}.o" 974 libamaths="${libamaths} shared/${b}.o" 975done 976 977echo ".PHONY: build" 978echo "build:" 979echo " \${MKDIR} static" 980echo " \${MKDIR} shared" 981echo 982echo "\${solib}: build ${libamaths}" 983echo " \${CC} \${CFLAGS} -shared ${exestrip} -fPIC -Wl,-soname,\${solib}${soverion} -o \${solib} ${libamaths}" 984echo 985echo "\${alib}: build ${libamath}" 986echo " \${AR} rcs static/\${alib} ${libamath}" 987echo " \${RANLIB} static/\${alib}" 988echo 989echo ".PHONY: doc" 990echo "doc:" 991echo " \${DOXYGEN} amathr.dox" 992echo 993echo ".PHONY: install" 994echo "install: \${solib}" 995echo " \${MKDIR} \${INSTDIR}" 996echo " \${MKDIR} \${INSTDIRPC}" 997echo " \${MKDIR} \${INSTDIRI}" 998echo " \${INSTALL} static/\${alib} \${INSTDIR}/\${alib}" 999echo " \${INSTALL} \${solib} \${INSTDIR}/\${solib}" 1000echo " \${INSTALL} \${pkgconfig} \${INSTDIRPC}/\${pkgconfig}" 1001echo " \${INSTALL} \${manpage} \${INSTDIRM}/\${manpage}" 1002echo " \${INSTALL} ../mathr.h \${INSTDIRI}/mathr.h" 1003if ${useldconfig}; then 1004echo " \${LDCONFIG} \${INSTDIR}" 1005fi 1006echo 1007echo ".PHONY: uninstall" 1008echo "uninstall:" 1009echo " \${DEL} \${INSTDIR}/\${alib}" 1010echo " \${DEL} \${INSTDIR}/\${solib}" 1011echo " \${DEL} \${INSTDIRPC}/\${pkgconfig}" 1012echo " \${DEL} \${INSTDIRM}/\${manpage}" 1013echo " \${DEL} \${INSTDIRI}/mathr.h" 1014if ${useldconfig}; then 1015echo " \${LDCONFIG}" 1016fi 1017echo 1018echo "clean:" 1019echo " \${DEL} static/\${alib} \${solib} ${libamath} ${libamaths}" 1020echo 1021echo "very-clean: clean" 1022echo " \${DEL} doxygen.warn" 1023echo " \${RMDIR} man" 1024echo " \${RMDIR} static" 1025echo " \${RMDIR} shared" 1026echo 1027} > src/real/Makefile 1028######################################################################### 1029 1030############################ Complex Numbers ############################ 1031{ 1032echo "CC = ${crosscompile}${ccompiler}" 1033echo "CFLAGS = -std=c9x ${libop}${options} ${cxxflags}-I. -I.. -Wall" 1034echo "AR = ${crosscompile}ar" 1035echo "RANLIB = ${crosscompile}ranlib" 1036echo "MKDIR = mkdir -p" 1037echo "RMDIR = rm -Rf" 1038echo "DEL = rm -f" 1039echo "INSTALL = install -m 0644" 1040echo "LDCONFIG = ldconfig" 1041echo "DOXYGEN = doxygen" 1042echo "PREFIX = ${prefix}" 1043echo "INSTDIR = \${DESTDIR}\${PREFIX}/lib/amath" 1044echo "INSTDIRI = \${DESTDIR}\${PREFIX}/include/amath" 1045echo "INSTDIRPC = \${DESTDIR}\${PREFIX}/${pkgconfigdir}" 1046echo "INSTDIRM = \${DESTDIR}\${PREFIX}/${mandir}/man3" 1047echo "alib = lib${amathcplex}.a" 1048echo "solib = lib${amathcplex}.so" 1049echo "pkgconfig = amathi.pc" 1050echo "manpage = amathi.3" 1051echo 1052echo "all: static shared" 1053echo 1054echo "static: \${alib}" 1055echo 1056echo "shared: \${solib}" 1057echo 1058 1059libcomplex="" 1060libcomplexs="" 1061for f in ${LIBCPLEXSRCS} 1062do 1063 b=`basename $f .c` 1064 echo "static/${b}.o: ${f}" 1065 echo " \${CC} \${CFLAGS}${fPIC} -fno-builtin -c ${f} -o static/${b}.o" 1066 echo 1067 echo "shared/${b}.o: ${f}" 1068 echo " \${CC} \${CFLAGS} -fPIC -fno-builtin -c ${f} -o shared/${b}.o" 1069 echo 1070 libcomplex="${libcomplex} static/${b}.o" 1071 libcomplexs="${libcomplexs} shared/${b}.o" 1072done 1073 1074echo ".PHONY: build" 1075echo "build:" 1076echo " \${MKDIR} static" 1077echo " \${MKDIR} shared" 1078echo 1079echo "\${solib}: build ${libcomplexs}" 1080echo " \${CC} \${CFLAGS} -shared ${exestrip} -fPIC -Wl,-soname,\${solib}${soverion} -o \${solib} ${libcomplexs}" 1081echo 1082echo "\${alib}: build ${libcomplex}" 1083echo " \${AR} rcs static/\${alib} ${libcomplex}" 1084echo " \${RANLIB} static/\${alib}" 1085echo 1086echo ".PHONY: doc" 1087echo "doc:" 1088echo " \${DOXYGEN} amathi.dox" 1089echo 1090echo ".PHONY: install" 1091echo "install:" 1092echo " \${MKDIR} \${INSTDIR}" 1093echo " \${MKDIR} \${INSTDIRPC}" 1094echo " \${MKDIR} \${INSTDIRI}" 1095echo " \${INSTALL} static/\${alib} \${INSTDIR}/\${alib}" 1096echo " \${INSTALL} \${solib} \${INSTDIR}/\${solib}" 1097echo " \${INSTALL} \${pkgconfig} \${INSTDIRPC}/\${pkgconfig}" 1098echo " \${INSTALL} \${manpage} \${INSTDIRM}/\${manpage}" 1099echo " \${INSTALL} ../mathi.h \${INSTDIRI}/mathi.h" 1100if ${useldconfig}; then 1101echo " \${LDCONFIG} \${INSTDIR}" 1102fi 1103echo 1104echo ".PHONY: uninstall" 1105echo "uninstall:" 1106echo " \${DEL} \${INSTDIR}/\${alib}" 1107echo " \${DEL} \${INSTDIR}/\${solib}" 1108echo " \${DEL} \${INSTDIRPC}/\${pkgconfig}" 1109echo " \${DEL} \${INSTDIRM}/\${manpage}" 1110echo " \${DEL} \${INSTDIRPC}/amathi.pc" 1111echo " \${DEL} \${INSTDIRI}/mathi.h" 1112if ${useldconfig}; then 1113echo " \${LDCONFIG}" 1114fi 1115echo 1116echo "clean:" 1117echo " \${DEL} static/\${alib} \${solib} ${libcomplex} ${libcomplexs}" 1118echo 1119echo "very-clean: clean" 1120echo " \${DEL} doxygen.warn" 1121echo " \${RMDIR} man" 1122echo " \${RMDIR} static" 1123echo " \${RMDIR} shared" 1124echo 1125} > src/cplex/Makefile 1126######################################################################### 1127 1128################################# Main ################################## 1129{ 1130echo 1131echo "CC = ${crosscompile}${ccompiler}" 1132echo "CXX = ${crosscompile}${cxxcompiler}" 1133echo "CFLAGS = ${appop}${options} ${cflags}-Wall -Isrc -Isrc/main" 1134echo "CXXFLAGS = ${appop}${options} ${cxxflags}-Wall -Isrc -Isrc/main" 1135echo "AR = ${crosscompile}ar" 1136echo "RANLIB = ${crosscompile}ranlib" 1137echo "LFLAGS = ${ldflags}${ldsysflags}${ldlibflags}" 1138echo "LPATH = -Lsrc/lib -Lsrc/clib -Lsrc/real -Lsrc/cplex -Lsrc/main/function -Lsrc/main/statement -Lsrc/main -Lsrc/system" 1139echo "LPATHS = -Lsrc/lib/static -Lsrc/clib/static -Lsrc/real/static -Lsrc/cplex/static -Lsrc/main/function -Lsrc/main/statement -Lsrc/main -Lsrc/system" 1140echo "FLXCAT = build/flexcat/flexcat" 1141echo "MKDIR = mkdir -p" 1142echo "DEL = rm -f" 1143echo "INSTALLP = install -m 0755" 1144echo "INSTALLM = install -m 0644" 1145echo "PREFIX = ${prefix}" 1146echo "INSTDIRP = \${DESTDIR}\${PREFIX}/bin" 1147echo "INSTDIRM = \${DESTDIR}\${PREFIX}/${mandir}/man1" 1148echo 1149echo "all: shared-libs static-libs static-app" 1150echo "amath: shared-libs static-libs shared-app" 1151echo "static: static-app" 1152echo "app: ${appmain} ${appfunction} ${appstatement} ${appsystem}" 1153echo "libs: ${amathapp} ${amath} ${amathc} ${amathcplex}" 1154echo 1155echo "${program}.o: ${program}.cpp" 1156echo " \${CXX} \${CXXFLAGS} -c ${program}.cpp -o ${program}.o" 1157echo 1158echo "${appmain}:" 1159echo " cd src/main && \${MAKE}" 1160echo 1161echo "${appsystem}:" 1162echo " cd src/system && \${MAKE}" 1163echo 1164echo "${appfunction}:" 1165echo " cd src/main/function && \${MAKE}" 1166echo 1167echo "${appstatement}:" 1168echo " cd src/main/statement && \${MAKE}" 1169echo 1170echo "${amathapp}:" 1171echo " cd src/lib && \${MAKE}" 1172echo 1173echo "${amath}:" 1174echo " cd src/real && \${MAKE}" 1175echo 1176echo "${amathc}:" 1177echo " cd src/clib && \${MAKE}" 1178echo 1179echo "${amathcplex}:" 1180echo " cd src/cplex && \${MAKE}" 1181echo 1182echo "locale:" 1183echo " cd build/flexcat && \${MAKE}" 1184echo " \${FLXCAT} text/keyword.cd src/loc/kword.h=text/keyword.sd" 1185echo " \${FLXCAT} text/help.cd src/loc/help.h=text/help.sd" 1186echo " \${FLXCAT} text/ident.cd src/loc/ident.h=text/ident.sd" 1187echo " \${FLXCAT} text/text.cd src/loc/text.h=text/text.sd" 1188echo 1189echo "doc:" 1190echo " cd src/clib && \${MAKE} doc" 1191echo " cd src/real && \${MAKE} doc" 1192echo " cd src/cplex && \${MAKE} doc" 1193echo 1194echo "catalogs:" 1195echo " cd build/flexcat && \${MAKE}" 1196echo " \${MKDIR} dist/catalog/english" 1197echo " \${FLXCAT} text/help.cd catalog/english/amath-help.ct CATALOG dist/catalog/english/amath-help.catalog" 1198echo " \${FLXCAT} text/ident.cd catalog/english/amath-ident.ct CATALOG dist/catalog/english/amath-ident.catalog" 1199echo " \${FLXCAT} text/text.cd catalog/english/amath-text.ct CATALOG dist/catalog/english/amath-text.catalog" 1200echo 1201echo "shared-libs:" 1202echo " cd src/lib && \${MAKE} shared" 1203echo " cd src/clib && \${MAKE} shared" 1204echo " cd src/real && \${MAKE} shared" 1205echo " cd src/cplex && \${MAKE} shared" 1206echo 1207echo "static-libs:" 1208echo " cd src/lib && \${MAKE} static" 1209echo " cd src/clib && \${MAKE} static" 1210echo " cd src/real && \${MAKE} static" 1211echo " cd src/cplex && \${MAKE} static" 1212echo 1213echo "shared-app: app shared-libs ${program}.o" 1214echo " \${CC} \${CFLAGS} ${exestrip} ${program}.o -o amath \${LPATH} \${LFLAGS}" 1215echo 1216echo "static-app: app static-libs ${program}.o" 1217echo " \${CC} \${CFLAGS} ${exestrip} ${program}.o -o amath \${LPATHS} \${LFLAGS}" 1218echo 1219echo ".PHONY: test" 1220echo "test: amath" 1221echo " LD_LIBRARY_PATH=src/clib/:src/lib:src/cplex:scr/real" 1222echo " ./amath --test" 1223echo 1224echo ".PHONY: install" 1225echo "install:" 1226echo " cd src/lib && \${MAKE} install" 1227echo " cd src/clib && \${MAKE} install" 1228echo " cd src/real && \${MAKE} install" 1229echo " cd src/cplex && \${MAKE} install" 1230echo " \${INSTALLP} amath \${INSTDIRP}/amath" 1231echo " \${INSTALLM} amath.1 \${INSTDIRM}/amath.1" 1232echo 1233echo ".PHONY: uninstall" 1234echo "uninstall:" 1235echo " cd src/lib && \${MAKE} uninstall" 1236echo " cd src/clib && \${MAKE} uninstall" 1237echo " cd src/real && \${MAKE} uninstall" 1238echo " cd src/cplex && \${MAKE} uninstall" 1239echo " \${DEL} \${INSTDIRP}/amath" 1240echo " \${DEL} \${INSTDIRM}/amath.1" 1241echo 1242echo ".PHONY: clean" 1243echo "clean:" 1244echo " cd src/lib && \${MAKE} clean" 1245echo " cd src/clib && \${MAKE} clean" 1246echo " cd src/real && \${MAKE} clean" 1247echo " cd src/cplex && \${MAKE} clean" 1248echo " cd src/main && \${MAKE} clean" 1249echo " cd src/system && \${MAKE} clean" 1250echo " cd src/main/function && \${MAKE} clean" 1251echo " cd src/main/statement && \${MAKE} clean" 1252echo " cd build/flexcat && \${MAKE} clean" 1253echo " \${DEL} ${program}.o amath" 1254echo 1255echo ".PHONY: very-clean" 1256echo "very-clean: clean" 1257echo " cd src/lib && \${MAKE} very-clean" 1258echo " cd src/clib && \${MAKE} very-clean" 1259echo " cd src/real && \${MAKE} very-clean" 1260echo " cd src/cplex && \${MAKE} very-clean" 1261echo 1262} > Makefile 1263######################################################################### 1264 1265################################ Flexcat ################################ 1266{ 1267echo 'all: flexcat' 1268echo '' 1269echo "CFLAGS += -I. -Wall" 1270echo '' 1271 1272l="" 1273for f in ${FLXSRCS} 1274do 1275 b=`basename $f .c` 1276 echo "${b}.o: ${f}" 1277 echo " \${CC} \${CFLAGS} -c ${f}" 1278 echo 1279 l="${l} ${b}.o" 1280done 1281 1282echo 1283echo "flexcat: ${l}" 1284echo " \${CC} \${CFLAGS} -o flexcat ${l} -lm" 1285echo 1286echo "clean:" 1287echo " rm -f ${l} flexcat" 1288echo 1289} > build/flexcat/Makefile 1290######################################################################### 1291 1292echo "Makefile generated" 1293