#!/bin/sh # # Copyright {c} 2014-2021 Carsten Sonne Larsen # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES {INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION} # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT {INCLUDING NEGLIGENCE OR OTHERWISE} ARISING IN ANY WAY # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # set -e version="1.9.0" clang=false debugsym=false regtest=true openlibm=false stdlibm=false stdlibc=false useldconfig=false fpic=false prefix="/usr" pkgconfigdir="lib/pkgconfig" mandir="share/man" cflags="" cxxflags="" ldflags="" gcclib="-lstdc++" libm="" libc="" for arg in "$@"; do unknown=true case "$arg" in --prefix=*) prefix=`echo $arg | sed 's/--prefix=//'` unknown=false ;; --pkgconfig=*) pkgconfigdir=`echo $arg | sed 's/--pkgconfig=//'` unknown=false ;; --mandir=*) mandir=`echo $arg | sed 's/--mandir=//'` unknown=false ;; --man-dir=*) mandir=`echo $arg | sed 's/--mandir=//'` unknown=false ;; --doc-dir=*) unknown=false ;; --cross-compile=*) crosscompile=`echo $arg | sed 's/--cross-compile=//'` crosscompile="${crosscompile}-" unknown=false ;; CFLAGS=*) cflags=`echo $arg | sed 's/CFLAGS=//'` cflags="${cflags} " unknown=false ;; CXXFLAGS=*) cxxflags=`echo $arg | sed 's/CXXFLAGS=//'` cxxflags="${cxxflags} " unknown=false ;; LDFLAGS=*) ldflags=`echo $arg | sed 's/LDFLAGS=//'` ldflags="${ldflags} " unknown=false ;; --enable-clang) clang=true unknown=false ;; --disable-clang) clang=false unknown=false ;; --enable-ldconfig) useldconfig=true unknown=false ;; --disable-ldconfig) useldconfig=false unknown=false ;; --enable-pic) fpic=true unknown=false ;; --disable-pic) fpic=false unknown=false ;; --enable-debug) debugsym=true unknown=false ;; --disable-debug) debugsym=false unknown=false ;; --enable-test) regtest=true unknown=false ;; --disable-test) regtest=false unknown=false ;; --with-libm) stdlibm=true unknown=false ;; --without-libm) stdlibm=false unknown=false ;; --with-openlibm) openlibm=true unknown=false ;; --without-openlibm) openlibm=false unknown=false ;; --with-stdc++) gcclib="-lstdc++" unknown=false ;; --without-stdc++) gcclib="" unknown=false ;; --with-libc) stdlibc=true unknown=false ;; --without-libc) stdlibc=false unknown=false ;; --help) echo "amath configure script ${version}" echo echo 'usage: ./configure [options]' echo 'options:' echo ' --prefix=: installation prefix' echo ' --pkgconfig=: pkg-config path (without prefix)' echo ' --mandir=: manpage path (without prefix)' echo ' --cross-compile=: cross compiler prefix' echo ' --enable-debug: include debug symbols' echo ' --disable-debug: do not include debug symbols' echo ' --enable-test: build code with regression tests' echo ' --disable-test: do not include regression test' echo ' --enable-clang: build explicit with clang compiler' echo ' --disable-clang: do not explicit build with clang compiler' echo ' --enable-ldconfig: use ldconfig to registre libraries' echo ' --disable-ldconfig: do not use ldconfig to registre libraries' echo ' --enable-pic: build with Position Independent Code (-fPIC)' echo ' --disable-pic: do not build static libraries with Position Independent Code' echo ' --with-libm: link with libm library (-lm)' echo ' --without-libm: do not link with libm library' echo ' --with-openlibm: link with openlibm library (-lopenlibm)' echo ' --without-openlibm: do not link with openlibm library' echo ' --with-stdc++: link with stdc++ library (-lstdc++)' echo ' --without-stdc++: do not link with stdc++ library' echo ' --with-libc: explicit link with libc library (-lc)' echo ' --without-libc: do not link with libc library' echo echo ' CFLAGS=: additional compiler flags' echo ' CXXFLAGS=: additional compiler flags' echo ' LDFLAGS=: additional linker flags' echo exit 0 ;; esac if $unknown; then echo "Invalid option $arg" exit 1 fi done if $clang; then ccompiler="clang" cxxcompiler="clang++" else ccompiler="gcc" cxxcompiler="g++" fi if $regtest; then options=" -DWITHTEST" else options=" " fi if $debugsym; then appop="-O0 -g" libop="-O0 -g" exestrip="" debugflag="-DDEBUG " else appop="-O2" libop="-O3" exestrip="-s" debugflag="" fi dlibm=false mflags="" if $stdlibm; then libm="-lm " mflags="-DLIBM " dlibm=true fi if $openlibm; then libm="-lopenlibm " mflags="-DLIBM " dlibm=true fi if $useldconfig; then soverion=".${version}" else soverion="" fi if $stdlibc; then gcclib="${gcclib} -lc" libc="-lc" fi if $fpic; then fPIC=" -fPIC" else fPIC="" fi cflags="${cflags}${debugflag}${mflags}" cxxflags="${cflags} ${cxxflags}" APPSRCS=' evaluator.cpp functionlist.cpp fgrid.cpp lexer.cpp nodes.cpp operators.cpp optimizer.cpp parser.cpp token.cpp userfunction.cpp values.cpp viewer.cpp ' SYSSRCS=' amiga_arexx.cpp console.cpp console_amiga.cpp console_stdc.cpp console_termios.cpp console_windows.cpp filesystem_amiga.cpp filesystem_stdc.cpp language.cpp language_amiga.cpp language_stdc.cpp preferences.cpp preferences_amiga.cpp preferences_stdc.cpp program.cpp program_amiga.cpp program_haiku.cpp program_stdc.cpp program_test.cpp window_amiga.cpp window_haiku.cpp ' FUNCTIONSRC=' absolute.cpp aexcosecant.cpp aexsecant.cpp arcchord.cpp arccos.cpp arcsin.cpp arctan.cpp arccosecant.cpp arccotangent.cpp arcsecant.cpp arccovercosine.cpp arccoversine.cpp archacovercosine.cpp archacoversine.cpp archavercosine.cpp archaversine.cpp arcvercosine.cpp arcversine.cpp ceil.cpp chord.cpp cosecant.cpp cosine.cpp cotangent.cpp covercos.cpp coversin.cpp cube.cpp excosecant.cpp exsecant.cpp floor.cpp hacovercos.cpp hacoversin.cpp havercos.cpp haversin.cpp hyparccosecant.cpp hyparccosine.cpp hyparccotangent.cpp hyparcsecant.cpp hyparcsine.cpp hyparctangent.cpp hypcosecant.cpp hypcosine.cpp hypcotangent.cpp hypsecant.cpp hypsine.cpp hyptangent.cpp ln.cpp log10.cpp log2.cpp node.cpp round.cpp secant.cpp signum.cpp sine.cpp square.cpp tangent.cpp trunc.cpp user.cpp vercos.cpp versin.cpp ' STATEMENTSRCS=' about.cpp clear.cpp delete.cpp digits.cpp draw.cpp empty.cpp eval.cpp execute.cpp exit.cpp funcdef.cpp funclist.cpp help.cpp input.cpp license.cpp list.cpp load.cpp memory.cpp node.cpp output.cpp plot.cpp prefs.cpp prompt.cpp save.cpp show.cpp silent.cpp version.cpp ' LIBAPPSRCS=' aengine.cpp bigint.cpp charbuf.cpp cplex.cpp nnumb.cpp ntext.cpp ntextd.cpp ntextp.cpp real.cpp ' LIBREALSRCS=' acos.c acosh.c asin.c asinh.c atan.c atan2.c atanh.c cbrt.c ceil.c csign.c cos.c cosh.c exp.c expm1.c fabs.c floor.c fmod.c hypot.c kcos.c kremp2.c ksin.c ktan.c log.c log10.c log1p.c pow.c remp2.c round.c scalbn.c sin.c sinh.c sqrt.c tan.c tanh.c trunc.c ' LIBREAL2SRCS=' acot.c acoth.c acrd.c acsc.c acsch.c acvc.c acvs.c aexc.c aexs.c ahcc.c ahcv.c ahv.c ahvc.c asec.c asech.c avcs.c aver.c cot.c coth.c crd.c csc.c csch.c cvc.c cvs.c exc.c exs.c hcc.c hcv.c hv.c hvc.c log2i.c log2p.c sec.c sech.c vcs.c ver.c ' LIBCPLEXSRCS=' cacos.c cacosh.c casin.c casinh.c catan.c catanh.c ccos.c ccosh.c cexp.c clog.c cpow.c csin.c csinh.c csqrt.c ctan.c ctanh.c ' LIBCPLEX2SRCS=' cacot.c cacoth.c cacsc.c cacsch.c casec.c casech.c ccbrt.c ccot.c ccoth.c ccsc.c ccsch.c clogb.c clog10.c csec.c csech.c csgn.c prim.c ' LIBC1SRCS=' alloccpy.c mem.c memcpy.c memset.c strcmp.c strlen.c untag.c ' FLXSRCS=' asprintf.c createcat.c createcatsrc.c createct.c globals.c locale_other.c main.c openlibs.c readprefs.c scancd.c scanct.c scanpo.c showfuncs.c strptime.c swapfuncs.c utils.c vastubs.c ' if $dlibm; then LIBREALSRCS="${LIBREAL2SRCS}" else LIBREALSRCS="${LIBREALSRCS}${LIBREAL2SRCS}" fi if $dlibm; then LIBCPLEXSRCS="${LIBCPLEX2SRCS}" else LIBCPLEXSRCS="${LIBCPLEXSRCS}${LIBCPLEX2SRCS}" fi amathc="amathc" amath="amath" amathcplex="amathcplex" amathapp="amathapp" appmain="appmain" appfunction="functions" appstatement="statement" appsystem="appsystem" program="src/main" ldsysflags="-l${appsystem} -l${appfunction} -l${appstatement} -l${appmain} -l${appfunction} -l${appstatement} -l${appmain} " ldlibflags="-l${amathapp} ${libm}-l${amathcplex} ${libm}-l${amath} -l${amathc} ${gcclib}" ############################ Main Application ########################### { echo "CXX = ${crosscompile}${cxxcompiler}" echo "CXXFLAGS = ${appop}${options} ${cxxflags}${fPIC} -I. -I.. -Wall" echo "AR = ${crosscompile}ar" echo "RANLIB = ${crosscompile}ranlib" echo "DEL = rm -f" echo echo "all: lib" echo "static: lib" echo files="" for f in ${APPSRCS} do b=`basename $f .cpp` echo "${b}.o: ${f}" echo " \${CXX} \${CXXFLAGS} -c ${f}" echo files="${files} ${b}.o" done echo "lib: ${files}" echo " \${AR} rcs lib${appmain}.a ${files}" echo " \${RANLIB} lib${appmain}.a" echo echo "clean:" echo " \${DEL} lib${appmain}.a ${files}" echo } > src/main/Makefile ######################################################################### ########################### Functions Library ########################### { echo "CXX = ${crosscompile}${cxxcompiler}" echo "CXXFLAGS = ${appop}${options} ${cxxflags}${fPIC} -I. -I../.. -Wall" echo "AR = ${crosscompile}ar" echo "RANLIB = ${crosscompile}ranlib" echo "DEL = rm -f" echo echo "all: lib" echo "static: lib" echo files="" for f in ${FUNCTIONSRC} do b=`basename $f .cpp` echo "${b}.o: ${f}" echo " \${CXX} \${CXXFLAGS} -c ${f}" echo files="${files} ${b}.o" done echo "lib: ${files}" echo " \${AR} rcs lib${appfunction}.a ${files}" echo " \${RANLIB} lib${appfunction}.a" echo echo "clean:" echo " \${DEL} lib${appfunction}.a ${files}" echo } > src/main/function/Makefile ######################################################################### ########################### Statement Library ########################### { echo "CXX = ${crosscompile}${cxxcompiler}" echo "CXXFLAGS = ${appop}${options} ${cxxflags}${fPIC} -I. -I../.. -Wall" echo "AR = ${crosscompile}ar" echo "RANLIB = ${crosscompile}ranlib" echo "DEL = rm -f" echo echo "all: lib" echo "static: lib" echo files="" for f in ${STATEMENTSRCS} do b=`basename $f .cpp` echo "${b}.o: ${f}" echo " \${CXX} \${CXXFLAGS} -c ${f}" echo files="${files} ${b}.o" done echo "lib: ${files}" echo " \${AR} rcs lib${appstatement}.a ${files}" echo " \${RANLIB} lib${appstatement}.a" echo echo "clean:" echo " \${DEL} lib${appstatement}.a ${files}" echo } > src/main/statement/Makefile ######################################################################### ############################ System Library ############################# { echo "CXX = ${crosscompile}${cxxcompiler}" echo "CXXFLAGS = ${appop}${options} ${cxxflags}${fPIC} -I. -I.. -Wall" echo "AR = ${crosscompile}ar" echo "RANLIB = ${crosscompile}ranlib" echo "DEL = rm -f" echo echo "all: lib" echo "static: lib" echo files="" for f in ${SYSSRCS} do b=`basename $f .cpp` echo "${b}.o: ${f}" echo " \${CXX} \${CXXFLAGS} -c ${f}" echo files="${files} ${b}.o" done echo "lib: ${files}" echo " \${AR} rcs lib${appsystem}.a ${files}" echo " \${RANLIB} lib${appsystem}.a" echo echo "clean:" echo " \${DEL} lib${appsystem}.a ${files}" echo } > src/system/Makefile ######################################################################### ########################## Application Library ########################## { echo "CXX = ${crosscompile}${cxxcompiler}" echo "CXXFLAGS = ${libop}${options} ${cxxflags}-I. -I.. -Wall" echo "AR = ${crosscompile}ar" echo "RANLIB = ${crosscompile}ranlib" echo "MKDIR = mkdir -p" echo "RMDIR = rm -Rf" echo "DEL = rm -f" echo "INSTALL = install -m 0644" echo "LDCONFIG = ldconfig" echo "DOXYGEN = doxygen" echo "PREFIX = ${prefix}" echo "INSTDIR = \${DESTDIR}\${PREFIX}/lib/amath" echo "INSTDIRI = \${DESTDIR}\${PREFIX}/include/amath" echo "INSTDIRPC = \${DESTDIR}\${PREFIX}/${pkgconfigdir}" echo "alib = lib${amathapp}.a" echo "solib = lib${amathapp}.so" echo "pkgconfig = amatha.pc" echo echo "all: static shared" echo echo "static: \${alib}" echo echo "shared: \${solib}" echo files="" files2="" for f in ${LIBAPPSRCS} do b=`basename $f .cpp` echo "static/${b}.o: ${f}" echo " \${CXX} \${CXXFLAGS}${fPIC} -c ${f} -o static/${b}.o" echo echo "shared/${b}.o: ${f}" echo " \${CXX} \${CXXFLAGS} -fPIC -c ${f} -o shared/${b}.o" echo files="${files} static/${b}.o" files2="${files2} shared/${b}.o" done echo ".PHONY: build" echo "build:" echo " \${MKDIR} static" echo " \${MKDIR} shared" echo echo "\${solib}: build ${files2}" echo " \${CXX} \${CXXFLAGS} -shared ${exestrip} -fPIC -Wl,-soname,\${solib}${soverion} -o \${solib} ${files2}" echo echo "\${alib}: build ${files}" echo " \${AR} rcs static/\${alib} ${files}" echo " \${RANLIB} static/\${alib}" echo echo ".PHONY: doc" echo "doc:" echo " \${DOXYGEN} amatha.dox" echo echo ".PHONY: install" echo "install: \${alib} \${solib}" echo " \${MKDIR} \${INSTDIR}" echo " \${MKDIR} \${INSTDIRPC}" echo " \${MKDIR} \${INSTDIRI}" echo " \${INSTALL} static/\${alib} \${INSTDIR}/\${alib}" echo " \${INSTALL} \${solib} \${INSTDIR}/\${solib}" echo " \${INSTALL} \${pkgconfig} \${INSTDIRPC}/\${pkgconfig}" echo " \${INSTALL} aengine.h \${INSTDIRI}/aengine.h" echo " \${INSTALL} bigint.h \${INSTDIRI}/bigint.h" echo " \${INSTALL} charbuf.h \${INSTDIRI}/charbuf.h" echo " \${INSTALL} cplex.h \${INSTDIRI}/cplex.h" echo " \${INSTALL} nnumb.h \${INSTDIRI}/nnumb.h" echo " \${INSTALL} ntext.h \${INSTDIRI}/ntext.h" echo " \${INSTALL} ntext.h \${INSTDIRI}/ntextd.h" echo " \${INSTALL} ntext.h \${INSTDIRI}/ntextp.h" echo " \${INSTALL} numb.h \${INSTDIRI}/numb.h" echo " \${INSTALL} real.h \${INSTDIRI}/real.h" if ${useldconfig}; then echo " \${LDCONFIG} \${INSTDIR}" fi echo echo ".PHONY: uninstall" echo "uninstall:" echo " \${DEL} \${INSTDIR}/\${alib}" echo " \${DEL} \${INSTDIR}/\${solib}" echo " \${DEL} \${INSTDIRPC}/\${pkgconfig}" echo " \${DEL} \${INSTDIRI}/aengine.h" echo " \${DEL} \${INSTDIRI}/charbuf.h" echo " \${DEL} \${INSTDIRI}/cplex.h" echo " \${DEL} \${INSTDIRI}/integer.h" echo " \${DEL} \${INSTDIRI}/nnumb.h" echo " \${DEL} \${INSTDIRI}/ntext.h" echo " \${DEL} \${INSTDIRI}/numb.h" echo " \${DEL} \${INSTDIRI}/real.h" if ${useldconfig}; then echo " \${LDCONFIG}" fi echo echo "clean:" echo " \${DEL} static/\${alib} \${solib} ${files} ${files2}" echo echo "very-clean: clean" echo " \${DEL} doxygen.warn" echo " \${RMDIR} man" echo " \${RMDIR} static" echo " \${RMDIR} shared" echo } > src/lib/Makefile ######################################################################### ############################### C Library ############################### { echo "CC = ${crosscompile}${ccompiler}" echo "CFLAGS = -std=c9x ${libop}${options} ${cflags}-I. -I.. -Wall" echo "AR = ${crosscompile}ar" echo "RANLIB = ${crosscompile}ranlib" echo "MKDIR = mkdir -p" echo "RMDIR = rm -Rf" echo "DEL = rm -f" echo "INSTALL = install -m 0644" echo "LDCONFIG = ldconfig" echo "DOXYGEN = doxygen" echo "PREFIX = ${prefix}" echo "INSTDIR = \${DESTDIR}\${PREFIX}/lib/amath" echo "INSTDIRI = \${DESTDIR}\${PREFIX}/include/amath" echo "INSTDIRPC = \${DESTDIR}\${PREFIX}/${pkgconfigdir}" echo "INSTDIRM = \${DESTDIR}\${PREFIX}/${mandir}/man3" echo "alib = lib${amathc}.a" echo "solib = lib${amathc}.so" echo "pkgconfig = amathc.pc" echo "manpage = amathc.3" echo echo "all: static shared" echo echo "static: \${alib}" echo echo "shared: \${solib}" echo libc="" libcs="" for f in ${LIBC1SRCS} do b=`basename $f .c` echo "static/${b}.o: ${f}" echo " \${CC} \${CFLAGS}${fPIC} -fno-builtin -c ${f} -o static/${b}.o" echo echo "shared/${b}.o: ${f}" echo " \${CC} \${CFLAGS} -fPIC -fno-builtin -c ${f} -o shared/${b}.o" echo libc="${libc} static/${b}.o" libcs="${libcs} shared/${b}.o" done echo ".PHONY: build" echo "build:" echo " \${MKDIR} static" echo " \${MKDIR} shared" echo echo "\${solib}: build ${libcs}" echo " \${CC} \${CFLAGS} -shared ${exestrip} -fPIC -Wl,-soname,\${solib}${soverion} -o \${solib} ${libcs}" echo echo "\${alib}: build ${libc}" echo " \${AR} rcs static/\${alib} ${libc}" echo " \${RANLIB} static/\${alib}" echo echo ".PHONY: doc" echo "doc:" echo " \${DOXYGEN} amathc.dox" echo echo ".PHONY: install" echo "install: \${alib} \${solib}" echo " \${MKDIR} \${INSTDIR}" echo " \${MKDIR} \${INSTDIRPC}" echo " \${MKDIR} \${INSTDIRI}" echo " \${INSTALL} static/\${alib} \${INSTDIR}/\${alib}" echo " \${INSTALL} \${solib} \${INSTDIR}/\${solib}" echo " \${INSTALL} \${pkgconfig} \${INSTDIRPC}/\${pkgconfig}" echo " \${INSTALL} \${manpage} \${INSTDIRM}/\${manpage}" echo " \${INSTALL} ../amath.h \${INSTDIRI}" echo " \${INSTALL} ../amathc.h \${INSTDIRI}" if ${useldconfig}; then echo " \${LDCONFIG} \${INSTDIR}" fi echo echo ".PHONY: uninstall" echo "uninstall:" echo " \${DEL} \${INSTDIR}/\${alib}" echo " \${DEL} \${INSTDIR}/\${solib}" echo " \${DEL} \${INSTDIRPC}/\${pkgconfig}" echo " \${DEL} \${INSTDIRM}/\${manpage}" echo " \${DEL} \${INSTDIRI}/amath.h" echo " \${DEL} \${INSTDIRI}/amathc.h" if ${useldconfig}; then echo " \${LDCONFIG}" fi echo echo "clean:" echo " \${DEL} static/\${alib} \${solib} ${libc} ${libcs}" echo echo "very-clean: clean" echo " \${DEL} doxygen.warn" echo " \${RMDIR} man" echo " \${RMDIR} static" echo " \${RMDIR} shared" echo } > src/clib/Makefile ######################################################################### ############################# Real Numbers ############################## { echo "CC = ${crosscompile}${ccompiler}" echo "CFLAGS = -std=c9x ${libop}${options} ${cflags}-I. -I.. -Wall" echo "AR = ${crosscompile}ar" echo "RANLIB = ${crosscompile}ranlib" echo "MKDIR = mkdir -p" echo "RMDIR = rm -Rf" echo "DEL = rm -f" echo "INSTALL = install -m 0644" echo "LDCONFIG = ldconfig" echo "DOXYGEN = doxygen" echo "PREFIX = ${prefix}" echo "INSTDIR = \${DESTDIR}\${PREFIX}/lib/amath" echo "INSTDIRI = \${DESTDIR}\${PREFIX}/include/amath" echo "INSTDIRPC = \${DESTDIR}\${PREFIX}/${pkgconfigdir}" echo "INSTDIRM = \${DESTDIR}\${PREFIX}/${mandir}/man3" echo "alib = lib${amath}.a" echo "solib = lib${amath}.so" echo "pkgconfig = amathr.pc" echo "manpage = amathr.3" echo echo "all: static shared" echo echo "static: \${alib}" echo echo "shared: \${solib}" echo libamath="" libamaths="" for f in ${LIBREALSRCS} do b=`basename $f .c` echo "static/${b}.o: ${f}" echo " \${CC} \${CFLAGS}${fPIC} -fno-builtin -c ${f} -o static/${b}.o" echo echo "shared/${b}.o: ${f}" echo " \${CC} \${CFLAGS} -fPIC -fno-builtin -c ${f} -o shared/${b}.o" echo libamath="${libamath} static/${b}.o" libamaths="${libamaths} shared/${b}.o" done echo ".PHONY: build" echo "build:" echo " \${MKDIR} static" echo " \${MKDIR} shared" echo echo "\${solib}: build ${libamaths}" echo " \${CC} \${CFLAGS} -shared ${exestrip} -fPIC -Wl,-soname,\${solib}${soverion} -o \${solib} ${libamaths}" echo echo "\${alib}: build ${libamath}" echo " \${AR} rcs static/\${alib} ${libamath}" echo " \${RANLIB} static/\${alib}" echo echo ".PHONY: doc" echo "doc:" echo " \${DOXYGEN} amathr.dox" echo echo ".PHONY: install" echo "install: \${alib} \${solib}" echo " \${MKDIR} \${INSTDIR}" echo " \${MKDIR} \${INSTDIRPC}" echo " \${MKDIR} \${INSTDIRI}" echo " \${INSTALL} static/\${alib} \${INSTDIR}/\${alib}" echo " \${INSTALL} \${solib} \${INSTDIR}/\${solib}" echo " \${INSTALL} \${pkgconfig} \${INSTDIRPC}/\${pkgconfig}" echo " \${INSTALL} \${manpage} \${INSTDIRM}/\${manpage}" echo " \${INSTALL} ../mathr.h \${INSTDIRI}/mathr.h" if ${useldconfig}; then echo " \${LDCONFIG} \${INSTDIR}" fi echo echo ".PHONY: uninstall" echo "uninstall:" echo " \${DEL} \${INSTDIR}/\${alib}" echo " \${DEL} \${INSTDIR}/\${solib}" echo " \${DEL} \${INSTDIRPC}/\${pkgconfig}" echo " \${DEL} \${INSTDIRM}/\${manpage}" echo " \${DEL} \${INSTDIRI}/mathr.h" if ${useldconfig}; then echo " \${LDCONFIG}" fi echo echo "clean:" echo " \${DEL} static/\${alib} \${solib} ${libamath} ${libamaths}" echo echo "very-clean: clean" echo " \${DEL} doxygen.warn" echo " \${RMDIR} man" echo " \${RMDIR} static" echo " \${RMDIR} shared" echo } > src/real/Makefile ######################################################################### ############################ Complex Numbers ############################ { echo "CC = ${crosscompile}${ccompiler}" echo "CFLAGS = -std=c9x ${libop}${options} ${cxxflags}-I. -I.. -Wall" echo "AR = ${crosscompile}ar" echo "RANLIB = ${crosscompile}ranlib" echo "MKDIR = mkdir -p" echo "RMDIR = rm -Rf" echo "DEL = rm -f" echo "INSTALL = install -m 0644" echo "LDCONFIG = ldconfig" echo "DOXYGEN = doxygen" echo "PREFIX = ${prefix}" echo "INSTDIR = \${DESTDIR}\${PREFIX}/lib/amath" echo "INSTDIRI = \${DESTDIR}\${PREFIX}/include/amath" echo "INSTDIRPC = \${DESTDIR}\${PREFIX}/${pkgconfigdir}" echo "INSTDIRM = \${DESTDIR}\${PREFIX}/${mandir}/man3" echo "alib = lib${amathcplex}.a" echo "solib = lib${amathcplex}.so" echo "pkgconfig = amathi.pc" echo "manpage = amathi.3" echo echo "all: static shared" echo echo "static: \${alib}" echo echo "shared: \${solib}" echo libcomplex="" libcomplexs="" for f in ${LIBCPLEXSRCS} do b=`basename $f .c` echo "static/${b}.o: ${f}" echo " \${CC} \${CFLAGS}${fPIC} -fno-builtin -c ${f} -o static/${b}.o" echo echo "shared/${b}.o: ${f}" echo " \${CC} \${CFLAGS} -fPIC -fno-builtin -c ${f} -o shared/${b}.o" echo libcomplex="${libcomplex} static/${b}.o" libcomplexs="${libcomplexs} shared/${b}.o" done echo ".PHONY: build" echo "build:" echo " \${MKDIR} static" echo " \${MKDIR} shared" echo echo "\${solib}: build ${libcomplexs}" echo " \${CC} \${CFLAGS} -shared ${exestrip} -fPIC -Wl,-soname,\${solib}${soverion} -o \${solib} ${libcomplexs}" echo echo "\${alib}: build ${libcomplex}" echo " \${AR} rcs static/\${alib} ${libcomplex}" echo " \${RANLIB} static/\${alib}" echo echo ".PHONY: doc" echo "doc:" echo " \${DOXYGEN} amathi.dox" echo echo ".PHONY: install" echo "install: \${alib} \${solib}" echo " \${MKDIR} \${INSTDIR}" echo " \${MKDIR} \${INSTDIRPC}" echo " \${MKDIR} \${INSTDIRI}" echo " \${INSTALL} static/\${alib} \${INSTDIR}/\${alib}" echo " \${INSTALL} \${solib} \${INSTDIR}/\${solib}" echo " \${INSTALL} \${pkgconfig} \${INSTDIRPC}/\${pkgconfig}" echo " \${INSTALL} \${manpage} \${INSTDIRM}/\${manpage}" echo " \${INSTALL} ../mathi.h \${INSTDIRI}/mathi.h" if ${useldconfig}; then echo " \${LDCONFIG} \${INSTDIR}" fi echo echo ".PHONY: uninstall" echo "uninstall:" echo " \${DEL} \${INSTDIR}/\${alib}" echo " \${DEL} \${INSTDIR}/\${solib}" echo " \${DEL} \${INSTDIRPC}/\${pkgconfig}" echo " \${DEL} \${INSTDIRM}/\${manpage}" echo " \${DEL} \${INSTDIRPC}/amathi.pc" echo " \${DEL} \${INSTDIRI}/mathi.h" if ${useldconfig}; then echo " \${LDCONFIG}" fi echo echo "clean:" echo " \${DEL} static/\${alib} \${solib} ${libcomplex} ${libcomplexs}" echo echo "very-clean: clean" echo " \${DEL} doxygen.warn" echo " \${RMDIR} man" echo " \${RMDIR} static" echo " \${RMDIR} shared" echo } > src/cplex/Makefile ######################################################################### ################################# Main ################################## { echo echo "CC = ${crosscompile}${ccompiler}" echo "CXX = ${crosscompile}${cxxcompiler}" echo "CFLAGS = ${appop}${options} ${cflags}-Wall -Isrc -Isrc/main" echo "CXXFLAGS = ${appop}${options} ${cxxflags}-Wall -Isrc -Isrc/main" echo "AR = ${crosscompile}ar" echo "RANLIB = ${crosscompile}ranlib" echo "LFLAGS = ${ldflags}${ldsysflags}${ldlibflags}" echo "LPATH = -Lsrc/lib -Lsrc/clib -Lsrc/real -Lsrc/cplex -Lsrc/main/function -Lsrc/main/statement -Lsrc/main -Lsrc/system" echo "LPATHS = -Lsrc/lib/static -Lsrc/clib/static -Lsrc/real/static -Lsrc/cplex/static -Lsrc/main/function -Lsrc/main/statement -Lsrc/main -Lsrc/system" echo "FLXCAT = build/flexcat/flexcat" echo "MKDIR = mkdir -p" echo "DEL = rm -f" echo "INSTALLP = install -m 0755" echo "INSTALLM = install -m 0644" echo "PREFIX = ${prefix}" echo "INSTDIRP = \${DESTDIR}\${PREFIX}/bin" echo "INSTDIRM = \${DESTDIR}\${PREFIX}/${mandir}/man1" echo echo "all: shared-libs static-libs static-app" echo "amath: shared-libs static-libs shared-app" echo "static: static-app" echo "app: ${appmain} ${appfunction} ${appstatement} ${appsystem}" echo "libs: ${amathapp} ${amath} ${amathc} ${amathcplex}" echo echo "${program}.o: ${program}.cpp" echo " \${CXX} \${CXXFLAGS} -c ${program}.cpp -o ${program}.o" echo echo "${appmain}:" echo " cd src/main && \${MAKE}" echo echo "${appsystem}:" echo " cd src/system && \${MAKE}" echo echo "${appfunction}:" echo " cd src/main/function && \${MAKE}" echo echo "${appstatement}:" echo " cd src/main/statement && \${MAKE}" echo echo "${amathapp}:" echo " cd src/lib && \${MAKE}" echo echo "${amath}:" echo " cd src/real && \${MAKE}" echo echo "${amathc}:" echo " cd src/clib && \${MAKE}" echo echo "${amathcplex}:" echo " cd src/cplex && \${MAKE}" echo echo "locale:" echo " cd build/flexcat && \${MAKE}" echo " \${FLXCAT} text/keyword.cd src/loc/kword.h=text/keyword.sd" echo " \${FLXCAT} text/help.cd src/loc/help.h=text/help.sd" echo " \${FLXCAT} text/ident.cd src/loc/ident.h=text/ident.sd" echo " \${FLXCAT} text/text.cd src/loc/text.h=text/text.sd" echo echo "doc:" echo " cd src/clib && \${MAKE} doc" echo " cd src/real && \${MAKE} doc" echo " cd src/cplex && \${MAKE} doc" echo echo "catalogs:" echo " cd build/flexcat && \${MAKE}" echo " \${MKDIR} distcat/catalog/english" echo " \${FLXCAT} text/help.cd catalog/english/amath-help.ct CATALOG distcat/catalog/english/amath-help.catalog" echo " \${FLXCAT} text/ident.cd catalog/english/amath-ident.ct CATALOG distcat/catalog/english/amath-ident.catalog" echo " \${FLXCAT} text/text.cd catalog/english/amath-text.ct CATALOG distcat/catalog/english/amath-text.catalog" echo echo "shared-libs:" echo " cd src/lib && \${MAKE} shared" echo " cd src/clib && \${MAKE} shared" echo " cd src/real && \${MAKE} shared" echo " cd src/cplex && \${MAKE} shared" echo echo "static-libs:" echo " cd src/lib && \${MAKE} static" echo " cd src/clib && \${MAKE} static" echo " cd src/real && \${MAKE} static" echo " cd src/cplex && \${MAKE} static" echo echo "shared-app: app shared-libs ${program}.o" echo " \${CC} \${CFLAGS} ${exestrip} ${program}.o -o amath \${LPATH} \${LFLAGS}" echo echo "static-app: app static-libs ${program}.o" echo " \${CC} \${CFLAGS} ${exestrip} ${program}.o -o amath \${LPATHS} \${LFLAGS}" echo echo ".PHONY: test" echo "test: amath" echo " LD_LIBRARY_PATH=src/clib/:src/lib:src/cplex:scr/real" echo " ./amath --test" echo echo ".PHONY: install" echo "install:" echo " cd src/lib && \${MAKE} install" echo " cd src/clib && \${MAKE} install" echo " cd src/real && \${MAKE} install" echo " cd src/cplex && \${MAKE} install" echo " \${INSTALLP} amath \${INSTDIRP}/amath" echo " \${INSTALLM} amath.1 \${INSTDIRM}/amath.1" echo echo ".PHONY: uninstall" echo "uninstall:" echo " cd src/lib && \${MAKE} uninstall" echo " cd src/clib && \${MAKE} uninstall" echo " cd src/real && \${MAKE} uninstall" echo " cd src/cplex && \${MAKE} uninstall" echo " \${DEL} \${INSTDIRP}/amath" echo " \${DEL} \${INSTDIRM}/amath.1" echo echo ".PHONY: clean" echo "clean:" echo " cd src/lib && \${MAKE} clean" echo " cd src/clib && \${MAKE} clean" echo " cd src/real && \${MAKE} clean" echo " cd src/cplex && \${MAKE} clean" echo " cd src/main && \${MAKE} clean" echo " cd src/system && \${MAKE} clean" echo " cd src/main/function && \${MAKE} clean" echo " cd src/main/statement && \${MAKE} clean" echo " cd build/flexcat && \${MAKE} clean" echo " \${DEL} ${program}.o amath" echo echo ".PHONY: very-clean" echo "very-clean: clean" echo " cd src/lib && \${MAKE} very-clean" echo " cd src/clib && \${MAKE} very-clean" echo " cd src/real && \${MAKE} very-clean" echo " cd src/cplex && \${MAKE} very-clean" echo } > Makefile ######################################################################### ################################ Flexcat ################################ { echo 'all: flexcat' echo '' echo "CFLAGS += -I. -Wall" echo '' l="" for f in ${FLXSRCS} do b=`basename $f .c` echo "${b}.o: ${f}" echo " \${CC} \${CFLAGS} -c ${f}" echo l="${l} ${b}.o" done echo echo "flexcat: ${l}" echo " \${CC} \${CFLAGS} -o flexcat ${l} -lm" echo echo "clean:" echo " rm -f ${l} flexcat" echo } > build/flexcat/Makefile ######################################################################### echo "Makefile generated"