mirror of https://gitlab.com/rnger/amath
399 lines
10 KiB
Bash
Executable File
399 lines
10 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# Copyright (c) 2015-2017 Carsten Sonne Larsen <cs@innolan.dk>
|
|
# 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
|
|
|
|
APPSRCS='
|
|
app/main/evaluator.cpp
|
|
app/main/functions.cpp
|
|
app/main/graphlist.cpp
|
|
app/main/lexer.cpp
|
|
app/main/nodes.cpp
|
|
app/main/operators.cpp
|
|
app/main/optimizer.cpp
|
|
app/main/parser.cpp
|
|
app/main/statements.cpp
|
|
app/main/token.cpp
|
|
app/main/values.cpp
|
|
app/main/viewer.cpp
|
|
app/system/console.cpp
|
|
app/system/console_amiga.cpp
|
|
app/system/console_stdc.cpp
|
|
app/system/filesystem_amiga.cpp
|
|
app/system/filesystem_stdc.cpp
|
|
app/system/graph.cpp
|
|
app/system/graph_amiga.cpp
|
|
app/system/graph_gtk.cpp
|
|
app/system/language.cpp
|
|
app/system/language_amiga.cpp
|
|
app/system/language_posix.cpp
|
|
app/system/language_stdc.cpp
|
|
app/system/preferences.cpp
|
|
app/system/preferences_amiga.cpp
|
|
app/system/preferences_stdc.cpp
|
|
app/system/proc_amiga.cpp
|
|
app/system/program.cpp
|
|
app/system/program_amiga.cpp
|
|
app/system/program_stdc.cpp
|
|
app/system/program_test.cpp
|
|
app/system/task_amiga.cpp
|
|
app/system/task_stdc.cpp
|
|
app/system/window_amiga.cpp
|
|
app/system/base/io.cpp
|
|
app/main.cpp
|
|
'
|
|
LIBAPPSRCS='
|
|
app/lib/aengine.cpp
|
|
app/lib/charbuf.cpp
|
|
app/lib/cplex.cpp
|
|
app/lib/fgrid.cpp
|
|
app/lib/ntext.cpp
|
|
app/lib/real.cpp
|
|
'
|
|
LIBREALSRCS='
|
|
lib/real/acos.c
|
|
lib/real/acosh.c
|
|
lib/real/asin.c
|
|
lib/real/asinh.c
|
|
lib/real/atan.c
|
|
lib/real/atan2.c
|
|
lib/real/atanh.c
|
|
lib/real/cbrt.c
|
|
lib/real/ceil.c
|
|
lib/real/copysign.c
|
|
lib/real/cos.c
|
|
lib/real/cosh.c
|
|
lib/real/exp.c
|
|
lib/real/expm1.c
|
|
lib/real/fabs.c
|
|
lib/real/finite.c
|
|
lib/real/floor.c
|
|
lib/real/fmod.c
|
|
lib/real/hypot.c
|
|
lib/real/isnan.c
|
|
lib/real/kcos.c
|
|
lib/real/kremp2.c
|
|
lib/real/ksin.c
|
|
lib/real/ktan.c
|
|
lib/real/log.c
|
|
lib/real/log10.c
|
|
lib/real/log1p.c
|
|
lib/real/pow.c
|
|
lib/real/remp2.c
|
|
lib/real/round.c
|
|
lib/real/scalbn.c
|
|
lib/real/sin.c
|
|
lib/real/sinh.c
|
|
lib/real/sqrt.c
|
|
lib/real/tan.c
|
|
lib/real/tanh.c
|
|
lib/real/trunc.c
|
|
'
|
|
LIBCPLEXSRCS='
|
|
lib/cplex/cacos.c
|
|
lib/cplex/cacosh.c
|
|
lib/cplex/cacot.c
|
|
lib/cplex/cacoth.c
|
|
lib/cplex/cacsc.c
|
|
lib/cplex/cacsch.c
|
|
lib/cplex/casec.c
|
|
lib/cplex/casech.c
|
|
lib/cplex/casin.c
|
|
lib/cplex/casinh.c
|
|
lib/cplex/catan.c
|
|
lib/cplex/catanh.c
|
|
lib/cplex/ccbrt.c
|
|
lib/cplex/ccos.c
|
|
lib/cplex/ccosh.c
|
|
lib/cplex/ccot.c
|
|
lib/cplex/ccoth.c
|
|
lib/cplex/ccsc.c
|
|
lib/cplex/ccsch.c
|
|
lib/cplex/cexp.c
|
|
lib/cplex/clog.c
|
|
lib/cplex/clog10.c
|
|
lib/cplex/clogb.c
|
|
lib/cplex/cpow.c
|
|
lib/cplex/csec.c
|
|
lib/cplex/csech.c
|
|
lib/cplex/csgn.c
|
|
lib/cplex/csin.c
|
|
lib/cplex/csinh.c
|
|
lib/cplex/csqrt.c
|
|
lib/cplex/ctan.c
|
|
lib/cplex/ctanh.c
|
|
lib/cplex/prim.c
|
|
'
|
|
LIBC1SRCS='
|
|
lib/clib/alloccpy.c
|
|
lib/clib/mem.c
|
|
lib/clib/memcpy.c
|
|
lib/clib/memset.c
|
|
lib/clib/strcmp.c
|
|
lib/clib/strlen.c
|
|
lib/clib/untag.c
|
|
'
|
|
|
|
LIBC2SRCS='
|
|
lib/dconv/dragon4.cpp
|
|
lib/dconv/dmath.cpp
|
|
lib/dconv/dprint.cpp
|
|
lib/clib/memoo.cpp
|
|
'
|
|
|
|
if make -v 2>&1 | grep GNU > /dev/null 2>&1 ; then
|
|
echo "make(1) is GNU make."
|
|
VALID=true
|
|
else
|
|
echo "make(1) is not GNU make."
|
|
VALID=true
|
|
fi
|
|
|
|
if $VALID ; then
|
|
if [ -n "$1" ];
|
|
then
|
|
ARCFLAG="$1 "
|
|
else
|
|
ARCFLAG=""
|
|
fi
|
|
|
|
if [ -n "$2" ];
|
|
then
|
|
CROSSCOMPILE="$2"
|
|
else
|
|
CROSSCOMPILE=""
|
|
fi
|
|
|
|
if [ -n "$3" ];
|
|
then
|
|
CROSSCOMPILEFLAGS="$3 "
|
|
else
|
|
CROSSCOMPILEFLAGS=""
|
|
fi
|
|
|
|
if [ -n "$GCC295" ];
|
|
then
|
|
if [ "$GCC295" = "y" ] || [ "$GCC295" = "Y" ];
|
|
then
|
|
gcclib="-lgcc"
|
|
fi
|
|
else
|
|
gcclib="-lstdc++"
|
|
fi
|
|
|
|
if [ -n "$REGTEST" ];
|
|
then
|
|
if [ "$REGTEST" = "n" ] || [ "$REGTEST" = "N" ];
|
|
then
|
|
options="${options}"
|
|
fi
|
|
else
|
|
options="${options} -DWITHTEST"
|
|
fi
|
|
|
|
if [ -n "$DEBUG" ];
|
|
then
|
|
if [ "$DEBUG" = "y" ] || [ "$DEBUG" = "Y" ];
|
|
then
|
|
appop="-O0 -g"
|
|
libop="-O0 -g"
|
|
exestrip=""
|
|
fi
|
|
else
|
|
appop="-O2"
|
|
libop="-O3"
|
|
exestrip="-s"
|
|
fi
|
|
|
|
# Use under certain circumstances when GCC is causing problems with FPU
|
|
#nff="-fno-strict-aliasing -ffloat-store "
|
|
nff=" "
|
|
|
|
(
|
|
echo
|
|
echo "CC = ${CROSSCOMPILE}gcc"
|
|
echo "CXX = ${CROSSCOMPILE}g++"
|
|
# echo "CC = ${CROSSCOMPILE}clang"
|
|
# echo "CXX = ${CROSSCOMPILE}clang++"
|
|
echo "AR = ${CROSSCOMPILE}ar"
|
|
echo "RANLIB = ${CROSSCOMPILE}ranlib"
|
|
echo "CFLAGS = ${ARCFLAG}$options ${CROSSCOMPILEFLAGS}"
|
|
echo "CXXFLAGS = ${ARCFLAG}$options ${CROSSCOMPILEFLAGS}-I."
|
|
# echo "CXXFLAGS = -Wno-inline-new-delete ${ARCFLAG}$options ${CROSSCOMPILEFLAGS}-I."
|
|
# echo "LFLAGS = $gcclib -lamathapp${outext} -lcamath${outext} -lcomplex${outext} -lamath${outext}"
|
|
echo "LFLAGS = -lamathapp${outext} -lcomplex${outext} -lamath${outext} -lcamath${outext} $gcclib"
|
|
echo
|
|
echo "FLXCAT = build/flexcat/flexcat"
|
|
echo "MKDIR = mkdir"
|
|
echo "COPY = cp"
|
|
echo "DEL = rm -f"
|
|
echo "DELREC = rm -Rf"
|
|
echo
|
|
echo "all: libs app"
|
|
echo
|
|
echo "libs: libamath libcomplex libcamath libamathapp"
|
|
echo
|
|
|
|
i=""
|
|
l=""
|
|
for f in ${APPSRCS}
|
|
do
|
|
b=`basename $f .cpp`
|
|
# i=`sed -n -e '/#include.*"/{
|
|
# s/"$//
|
|
# s/.*"//
|
|
# p
|
|
# }' $f | sort -u`
|
|
echo "${b}.o: ${f}" ${i}
|
|
echo " \${CXX} ${appop} \${CXXFLAGS} -Ilib -Iapp -Wall -Werror -c ${f}"
|
|
echo
|
|
l="${l} ${b}.o"
|
|
done
|
|
|
|
libapp=""
|
|
for f in ${LIBAPPSRCS}
|
|
do
|
|
b=`basename $f .cpp`
|
|
echo "${b}.o: ${f}"
|
|
echo " \${CC} ${appop} \${CXXFLAGS} -Ilib -Iapp -Wall -Werror -c ${f}"
|
|
echo
|
|
libapp="${libapp} ${b}.o"
|
|
done
|
|
|
|
libamath=""
|
|
for f in ${LIBREALSRCS}
|
|
do
|
|
b=`basename $f .c`
|
|
echo "${b}.o: ${f}"
|
|
echo " \${CC} ${libop} -std=c9x \${CLAGS} ${ARCFLAG}-fno-builtin ${nff}-Wall -Werror -Ilib -Ilib/real -c ${f}"
|
|
echo
|
|
libamath="${libamath} ${b}.o"
|
|
done
|
|
|
|
libcomplex=""
|
|
for f in ${LIBCPLEXSRCS}
|
|
do
|
|
b=`basename $f .c`
|
|
echo "${b}.o: ${f}"
|
|
echo " \${CC} ${libop} -std=c9x \${CFLAGS} ${ARCFLAG}-fno-builtin -Wall -Werror -Ilib -Ilib/cplex -c ${f}"
|
|
echo
|
|
libcomplex="${libcomplex} ${b}.o"
|
|
done
|
|
|
|
libc=""
|
|
for f in ${LIBC1SRCS}
|
|
do
|
|
b=`basename $f .c`
|
|
echo "${b}.o: ${f}"
|
|
echo " \${CC} ${libop} -std=c9x \${CFLAGS} ${ARCFLAG}${ansicon}-fno-builtin -Wall -Werror -Ilib -c ${f}"
|
|
echo
|
|
libc="${libc} ${b}.o"
|
|
done
|
|
|
|
for f in ${LIBC2SRCS}
|
|
do
|
|
b=`basename $f .cpp`
|
|
echo "${b}.o: ${f}"
|
|
echo " \${CXX} ${libop} \${CXXFLAGS} ${ARCFLAG}-fno-builtin -Wall -Werror -Ilib -Ilib/dconv -c ${f}"
|
|
echo
|
|
libc="${libc} ${b}.o"
|
|
done
|
|
|
|
echo "catalogsa:" # Application catalogs
|
|
echo " \${FLXCAT} text/keyword.cd app/localize/kword.h=text/keyword.sd"
|
|
echo " \${FLXCAT} text/help.cd app/localize/help.h=text/help.sd"
|
|
echo " \${FLXCAT} text/ident.cd app/localize/ident.h=text/ident.sd"
|
|
echo " \${FLXCAT} text/text.cd app/localize/text.h=text/text.sd"
|
|
echo
|
|
echo "catalogsu:" # Unix catalogs
|
|
echo " iconv -f ISO-8859-15 -t UTF-8 catalog/dansk/amath-help.ct >utext/dk-help.dict"
|
|
echo " iconv -f ISO-8859-15 -t UTF-8 catalog/dansk/amath-ident.ct >utext/dk-ident.dict"
|
|
echo " iconv -f ISO-8859-15 -t UTF-8 catalog/dansk/amath-text.ct >utext/dk-text.dict"
|
|
echo " iconv -f ISO-8859-15 -t UTF-8 catalog/dansk/amath-keyword.ct >utext/dk-keyword.dict"
|
|
echo
|
|
echo "catalogsw:" # Windows catalogs
|
|
echo " iconv -f ISO-8859-15 -t CP850 catalog/dansk/amath-help.ct >utext/dk-help.dict"
|
|
echo " iconv -f ISO-8859-15 -t CP850 catalog/dansk/amath-ident.ct >utext/dk-ident.dict"
|
|
echo " iconv -f ISO-8859-15 -t CP850 catalog/dansk/amath-text.ct >utext/dk-text.dict"
|
|
echo " iconv -f ISO-8859-15 -t CP850 catalog/dansk/amath-keyword.ct >utext/dk-keyword.dict"
|
|
echo
|
|
echo "libamathapp: ${libapp}"
|
|
echo " \${AR} rcs libamathapp${outext}.a ${libapp}"
|
|
echo " \${RANLIB} libamathapp${outext}.a"
|
|
echo
|
|
echo "libamath: ${libamath}"
|
|
echo " \${AR} rcs libamath${outext}.a ${libamath}"
|
|
echo " \${RANLIB} libamath${outext}.a"
|
|
echo
|
|
echo "libcomplex: ${libcomplex}"
|
|
echo " \${AR} rcs libcomplex${outext}.a ${libcomplex}"
|
|
echo " \${RANLIB} libcomplex${outext}.a"
|
|
echo
|
|
echo "libcamath: ${libc}"
|
|
echo " \${AR} rcs libcamath${outext}.a ${libc}"
|
|
echo " \${RANLIB} libcamath${outext}.a"
|
|
echo
|
|
echo "app: libs ${l}"
|
|
echo " \${CC} \${CFLAGS} ${ARCFLAG}${CROSSCOMPILEFLAGS}${exestrip} -L. -o amath${outext} ${l} \${LFLAGS}"
|
|
echo
|
|
echo "dist: app catalogs"
|
|
# echo " \${MKDIR} dist"
|
|
echo " \${COPY} amath dist/"
|
|
echo " \${COPY} LICENSE dist/"
|
|
echo " \${COPY} COPYRIGHT dist/"
|
|
echo
|
|
echo "amigacatalogs:"
|
|
# echo " \${MKDIR} dist"
|
|
echo " \${MKDIR} dist/catalog"
|
|
echo " \${MKDIR} dist/catalog/english"
|
|
echo " \${FLXCAT} text/help.cd catalog/english/amath-help.ct CATALOG dist/catalog/english/amath-help.catalog"
|
|
echo " \${FLXCAT} text/ident.cd catalog/english/amath-ident.ct CATALOG dist/catalog/english/amath-ident.catalog"
|
|
echo " \${FLXCAT} text/text.cd catalog/english/amath-text.ct CATALOG dist/catalog/english/amath-text.catalog"
|
|
echo " \${MKDIR} dist/catalog/dansk"
|
|
echo " \${FLXCAT} text/help.cd catalog/dansk/amath-help.ct CATALOG dist/catalog/dansk/amath-help.catalog"
|
|
echo " \${FLXCAT} text/ident.cd catalog/dansk/amath-ident.ct CATALOG dist/catalog/dansk/amath-ident.catalog"
|
|
echo " \${FLXCAT} text/text.cd catalog/dansk/amath-text.ct CATALOG dist/catalog/dansk/amath-text.catalog"
|
|
echo " \${FLXCAT} text/keyword.cd catalog/dansk/amath-keyword.ct CATALOG dist/catalog/dansk/amath-keyword.catalog"
|
|
echo
|
|
echo "clean:"
|
|
echo " \${DEL} ${libapp} ${libamath} ${libcomplex} ${libc} ${l} libamath${outext}.a libcamath${outext}.a libcomplex${outext}.a libamathapp${outext}.a amath${outext}"
|
|
echo
|
|
echo "distclean:"
|
|
echo " \${DEL} ${libapp} ${libamath} ${libcomplex} ${libc} ${l} libamath${outext}.a libcamath${outext}.a libcomplex${outext}.a libamathapp${outext}.a amath${outext}"
|
|
echo " \${DELREC} dist"
|
|
echo
|
|
echo "depend:"
|
|
echo " @echo Dependencies already done"
|
|
) > Makefile
|
|
|
|
echo "Makefile generated${msg}"
|
|
# echo
|
|
# echo "Build with debug symbols in csh:"
|
|
# echo "DEBUG=\"Y\" make"
|
|
echo
|
|
fi
|