xref: /freebsd/contrib/bc/configure.sh (revision 7e5c51e523ae2a0b4f00cf5d6b9168e053d8eed1)
13aa99676SStefan Eßer#! /bin/sh
23aa99676SStefan Eßer#
33aa99676SStefan Eßer# SPDX-License-Identifier: BSD-2-Clause
43aa99676SStefan Eßer#
510328f8bSStefan Eßer# Copyright (c) 2018-2021 Gavin D. Howard and contributors.
63aa99676SStefan Eßer#
73aa99676SStefan Eßer# Redistribution and use in source and binary forms, with or without
83aa99676SStefan Eßer# modification, are permitted provided that the following conditions are met:
93aa99676SStefan Eßer#
103aa99676SStefan Eßer# * Redistributions of source code must retain the above copyright notice, this
113aa99676SStefan Eßer#   list of conditions and the following disclaimer.
123aa99676SStefan Eßer#
133aa99676SStefan Eßer# * Redistributions in binary form must reproduce the above copyright notice,
143aa99676SStefan Eßer#   this list of conditions and the following disclaimer in the documentation
153aa99676SStefan Eßer#   and/or other materials provided with the distribution.
163aa99676SStefan Eßer#
173aa99676SStefan Eßer# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
183aa99676SStefan Eßer# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
193aa99676SStefan Eßer# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
203aa99676SStefan Eßer# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
213aa99676SStefan Eßer# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
223aa99676SStefan Eßer# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
233aa99676SStefan Eßer# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
243aa99676SStefan Eßer# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
253aa99676SStefan Eßer# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
263aa99676SStefan Eßer# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
273aa99676SStefan Eßer# POSSIBILITY OF SUCH DAMAGE.
283aa99676SStefan Eßer#
293aa99676SStefan Eßer
303aa99676SStefan Eßerscript="$0"
313aa99676SStefan Eßerscriptdir=$(dirname "$script")
323aa99676SStefan Eßerscript=$(basename "$script")
333aa99676SStefan Eßer
343aa99676SStefan Eßer. "$scriptdir/functions.sh"
353aa99676SStefan Eßer
3610328f8bSStefan Eßercd "$scriptdir"
3710328f8bSStefan Eßer
383aa99676SStefan Eßerusage() {
393aa99676SStefan Eßer
403aa99676SStefan Eßer	if [ $# -gt 0 ]; then
413aa99676SStefan Eßer
423aa99676SStefan Eßer		_usage_val=1
433aa99676SStefan Eßer
443aa99676SStefan Eßer		printf "%s\n\n" "$1"
453aa99676SStefan Eßer
463aa99676SStefan Eßer	else
473aa99676SStefan Eßer		_usage_val=0
483aa99676SStefan Eßer	fi
493aa99676SStefan Eßer
5050696a6eSStefan Eßer	printf 'usage:\n'
5150696a6eSStefan Eßer	printf '    %s -h\n' "$script"
523aa99676SStefan Eßer	printf '    %s --help\n' "$script"
5310328f8bSStefan Eßer	printf '    %s [-a|-bD|-dB|-c] [-CEfgGHlmMNPtTvz] [-O OPT_LEVEL] [-k KARATSUBA_LEN]\n' "$script"
543aa99676SStefan Eßer	printf '    %s \\\n' "$script"
5550696a6eSStefan Eßer	printf '       [--library|--bc-only --disable-dc|--dc-only --disable-bc|--coverage]\\\n'
5650696a6eSStefan Eßer	printf '       [--force --debug --disable-extra-math --disable-generated-tests]    \\\n'
573aa99676SStefan Eßer	printf '       [--disable-history --disable-man-pages --disable-nls]               \\\n'
58cf7becd2SStefan Eßer	printf '       [--disable-prompt --disable-strip] [--install-all-locales]          \\\n'
593aa99676SStefan Eßer	printf '       [--opt=OPT_LEVEL] [--karatsuba-len=KARATSUBA_LEN]                   \\\n'
603aa99676SStefan Eßer	printf '       [--prefix=PREFIX] [--bindir=BINDIR] [--datarootdir=DATAROOTDIR]     \\\n'
613aa99676SStefan Eßer	printf '       [--datadir=DATADIR] [--mandir=MANDIR] [--man1dir=MAN1DIR]           \\\n'
623aa99676SStefan Eßer	printf '\n'
6350696a6eSStefan Eßer	printf '    -a, --library\n'
6450696a6eSStefan Eßer	printf '        Build the libbc instead of the programs. This is meant to be used with\n'
6550696a6eSStefan Eßer	printf '        Other software like programming languages that want to make use of the\n'
6650696a6eSStefan Eßer	printf '        parsing and math capabilities. This option will install headers using\n'
6750696a6eSStefan Eßer	printf '        `make install`.\n'
683aa99676SStefan Eßer	printf '    -b, --bc-only\n'
6950696a6eSStefan Eßer	printf '        Build bc only. It is an error if "-d", "--dc-only", "-B", or\n'
7050696a6eSStefan Eßer	printf '        "--disable-bc" are specified too.\n'
713aa99676SStefan Eßer	printf '    -B, --disable-bc\n'
723aa99676SStefan Eßer	printf '        Disable bc. It is an error if "-b", "--bc-only", "-D", or "--disable-dc"\n'
733aa99676SStefan Eßer	printf '        are specified too.\n'
743aa99676SStefan Eßer	printf '    -c, --coverage\n'
753aa99676SStefan Eßer	printf '        Generate test coverage code. Requires gcov and regcovr.\n'
763aa99676SStefan Eßer	printf '        It is an error if either "-b" ("-D") or "-d" ("-B") is specified.\n'
773aa99676SStefan Eßer	printf '        Requires a compiler that use gcc-compatible coverage options\n'
7810328f8bSStefan Eßer	printf '    -C, --disable-clean\n'
7910328f8bSStefan Eßer	printf '        Disable the clean that configure.sh does before configure.\n'
803aa99676SStefan Eßer	printf '    -d, --dc-only\n'
8150696a6eSStefan Eßer	printf '        Build dc only. It is an error if "-b", "--bc-only", "-D", or\n'
8250696a6eSStefan Eßer	printf '        "--disable-dc" are specified too.\n'
833aa99676SStefan Eßer	printf '    -D, --disable-dc\n'
8450696a6eSStefan Eßer	printf '        Disable dc. It is an error if "-d", "--dc-only", "-B", or "--disable-bc"\n'
853aa99676SStefan Eßer	printf '        are specified too.\n'
863aa99676SStefan Eßer	printf '    -E, --disable-extra-math\n'
873aa99676SStefan Eßer	printf '        Disable extra math. This includes: "$" operator (truncate to integer),\n'
883aa99676SStefan Eßer	printf '        "@" operator (set number of decimal places), and r(x, p) (rounding\n'
893aa99676SStefan Eßer	printf '        function). Additionally, this option disables the extra printing\n'
903aa99676SStefan Eßer	printf '        functions in the math library.\n'
913aa99676SStefan Eßer	printf '    -f, --force\n'
923aa99676SStefan Eßer	printf '        Force use of all enabled options, even if they do not work. This\n'
933aa99676SStefan Eßer	printf '        option is to allow the maintainer a way to test that certain options\n'
943aa99676SStefan Eßer	printf '        are not failing invisibly. (Development only.)'
953aa99676SStefan Eßer	printf '    -g, --debug\n'
963aa99676SStefan Eßer	printf '        Build in debug mode. Adds the "-g" flag, and if there are no\n'
973aa99676SStefan Eßer	printf '        other CFLAGS, and "-O" was not given, this also adds the "-O0"\n'
983aa99676SStefan Eßer	printf '        flag. If this flag is *not* given, "-DNDEBUG" is added to CPPFLAGS\n'
993aa99676SStefan Eßer	printf '        and a strip flag is added to the link stage.\n'
1003aa99676SStefan Eßer	printf '    -G, --disable-generated-tests\n'
1013aa99676SStefan Eßer	printf '        Disable generating tests. This is for platforms that do not have a\n'
1023aa99676SStefan Eßer	printf '        GNU bc-compatible bc to generate tests.\n'
1033aa99676SStefan Eßer	printf '    -h, --help\n'
1043aa99676SStefan Eßer	printf '        Print this help message and exit.\n'
1053aa99676SStefan Eßer	printf '    -H, --disable-history\n'
1063aa99676SStefan Eßer	printf '        Disable history.\n'
1073aa99676SStefan Eßer	printf '    -k KARATSUBA_LEN, --karatsuba-len KARATSUBA_LEN\n'
1083aa99676SStefan Eßer	printf '        Set the karatsuba length to KARATSUBA_LEN (default is 64).\n'
1093aa99676SStefan Eßer	printf '        It is an error if KARATSUBA_LEN is not a number or is less than 16.\n'
110cf7becd2SStefan Eßer	printf '    -l, --install-all-locales\n'
111cf7becd2SStefan Eßer	printf '        Installs all locales, regardless of how many are on the system. This\n'
112cf7becd2SStefan Eßer	printf '        option is useful for package maintainers who want to make sure that\n'
113cf7becd2SStefan Eßer	printf '        a package contains all of the locales that end users might need.\n'
11410328f8bSStefan Eßer	printf '    -m, --enable-memcheck\n'
11510328f8bSStefan Eßer	printf '        Enable memcheck mode, to ensure no memory leaks. For development only.\n'
1163aa99676SStefan Eßer	printf '    -M, --disable-man-pages\n'
1173aa99676SStefan Eßer	printf '        Disable installing manpages.\n'
1183aa99676SStefan Eßer	printf '    -N, --disable-nls\n'
1193aa99676SStefan Eßer	printf '        Disable POSIX locale (NLS) support.\n'
1203aa99676SStefan Eßer	printf '    -O OPT_LEVEL, --opt OPT_LEVEL\n'
1213aa99676SStefan Eßer	printf '        Set the optimization level. This can also be included in the CFLAGS,\n'
1223aa99676SStefan Eßer	printf '        but it is provided, so maintainers can build optimized debug builds.\n'
1233aa99676SStefan Eßer	printf '        This is passed through to the compiler, so it must be supported.\n'
1243aa99676SStefan Eßer	printf '    -P, --disable-prompt\n'
1253aa99676SStefan Eßer	printf '        Disables the prompt in the built bc. The prompt will never show up,\n'
1263aa99676SStefan Eßer	printf '        or in other words, it will be permanently disabled and cannot be\n'
1273aa99676SStefan Eßer	printf '        enabled.\n'
12810328f8bSStefan Eßer	printf '    -t, --enable-test-timing\n'
12910328f8bSStefan Eßer	printf '        Enable the timing of tests. This is for development only.\n'
1303aa99676SStefan Eßer	printf '    -T, --disable-strip\n'
1313aa99676SStefan Eßer	printf '        Disable stripping symbols from the compiled binary or binaries.\n'
1323aa99676SStefan Eßer	printf '        Stripping symbols only happens when debug mode is off.\n'
13310328f8bSStefan Eßer	printf '    -v, --enable-valgrind\n'
13410328f8bSStefan Eßer	printf '        Enable a build appropriate for valgrind. For development only.\n'
13510328f8bSStefan Eßer	printf '    -z, --enable-fuzz-mode\n'
13610328f8bSStefan Eßer	printf '        Enable fuzzing mode. THIS IS FOR DEVELOPMENT ONLY.\n'
1373aa99676SStefan Eßer	printf '    --prefix PREFIX\n'
1383aa99676SStefan Eßer	printf '        The prefix to install to. Overrides "$PREFIX" if it exists.\n'
1393aa99676SStefan Eßer	printf '        If PREFIX is "/usr", install path will be "/usr/bin".\n'
1403aa99676SStefan Eßer	printf '        Default is "/usr/local".\n'
1413aa99676SStefan Eßer	printf '    --bindir BINDIR\n'
14250696a6eSStefan Eßer	printf '        The directory to install binaries in. Overrides "$BINDIR" if it exists.\n'
1433aa99676SStefan Eßer	printf '        Default is "$PREFIX/bin".\n'
14450696a6eSStefan Eßer	printf '    --includedir INCLUDEDIR\n'
14550696a6eSStefan Eßer	printf '        The directory to install headers in. Overrides "$INCLUDEDIR" if it\n'
14650696a6eSStefan Eßer	printf '        exists. Default is "$PREFIX/include".\n'
14750696a6eSStefan Eßer	printf '    --libdir LIBDIR\n'
14850696a6eSStefan Eßer	printf '        The directory to install libraries in. Overrides "$LIBDIR" if it exists.\n'
14950696a6eSStefan Eßer	printf '        Default is "$PREFIX/lib".\n'
1503aa99676SStefan Eßer	printf '    --datarootdir DATAROOTDIR\n'
1513aa99676SStefan Eßer	printf '        The root location for data files. Overrides "$DATAROOTDIR" if it exists.\n'
1523aa99676SStefan Eßer	printf '        Default is "$PREFIX/share".\n'
1533aa99676SStefan Eßer	printf '    --datadir DATADIR\n'
1543aa99676SStefan Eßer	printf '        The location for data files. Overrides "$DATADIR" if it exists.\n'
1553aa99676SStefan Eßer	printf '        Default is "$DATAROOTDIR".\n'
1563aa99676SStefan Eßer	printf '    --mandir MANDIR\n'
1573aa99676SStefan Eßer	printf '        The location to install manpages to. Overrides "$MANDIR" if it exists.\n'
1583aa99676SStefan Eßer	printf '        Default is "$DATADIR/man".\n'
1593aa99676SStefan Eßer	printf '    --man1dir MAN1DIR\n'
1603aa99676SStefan Eßer	printf '        The location to install Section 1 manpages to. Overrides "$MAN1DIR" if\n'
1613aa99676SStefan Eßer	printf '        it exists. Default is "$MANDIR/man1".\n'
16250696a6eSStefan Eßer	printf '    --man3dir MAN3DIR\n'
16350696a6eSStefan Eßer	printf '        The location to install Section 3 manpages to. Overrides "$MAN3DIR" if\n'
16450696a6eSStefan Eßer	printf '        it exists. Default is "$MANDIR/man3".\n'
1653aa99676SStefan Eßer	printf '\n'
1663aa99676SStefan Eßer	printf 'In addition, the following environment variables are used:\n'
1673aa99676SStefan Eßer	printf '\n'
1683aa99676SStefan Eßer	printf '    CC           C compiler. Must be compatible with POSIX c99. If there is a\n'
1693aa99676SStefan Eßer	printf '                 space in the basename of the compiler, the items after the\n'
1703aa99676SStefan Eßer	printf '                 first space are assumed to be compiler flags, and in that case,\n'
1713aa99676SStefan Eßer	printf '                 the flags are automatically moved into CFLAGS. Default is\n'
1723aa99676SStefan Eßer	printf '                 "c99".\n'
1733aa99676SStefan Eßer	printf '    HOSTCC       Host C compiler. Must be compatible with POSIX c99. If there is\n'
1743aa99676SStefan Eßer	printf '                 a space in the basename of the compiler, the items after the\n'
1753aa99676SStefan Eßer	printf '                 first space are assumed to be compiler flags, and in the case,\n'
1763aa99676SStefan Eßer	printf '                 the flags are automatically moved into HOSTCFLAGS. Default is\n'
1773aa99676SStefan Eßer	printf '                 "$CC".\n'
1783aa99676SStefan Eßer	printf '    HOST_CC      Same as HOSTCC. If HOSTCC also exists, it is used.\n'
1793aa99676SStefan Eßer	printf '    CFLAGS       C compiler flags.\n'
1803aa99676SStefan Eßer	printf '    HOSTCFLAGS   CFLAGS for HOSTCC. Default is "$CFLAGS".\n'
1813aa99676SStefan Eßer	printf '    HOST_CFLAGS  Same as HOST_CFLAGS. If HOST_CFLAGS also exists, it is used.\n'
1823aa99676SStefan Eßer	printf '    CPPFLAGS     C preprocessor flags. Default is "".\n'
1833aa99676SStefan Eßer	printf '    LDFLAGS      Linker flags. Default is "".\n'
1843aa99676SStefan Eßer	printf '    PREFIX       The prefix to install to. Default is "/usr/local".\n'
1853aa99676SStefan Eßer	printf '                 If PREFIX is "/usr", install path will be "/usr/bin".\n'
18650696a6eSStefan Eßer	printf '    BINDIR       The directory to install binaries in. Default is "$PREFIX/bin".\n'
18750696a6eSStefan Eßer	printf '    INCLUDEDIR   The directory to install header files in. Default is\n'
18850696a6eSStefan Eßer	printf '                 "$PREFIX/include".\n'
18950696a6eSStefan Eßer	printf '    LIBDIR       The directory to install libraries in. Default is\n'
19050696a6eSStefan Eßer	printf '                 "$PREFIX/lib".\n'
1913aa99676SStefan Eßer	printf '    DATAROOTDIR  The root location for data files. Default is "$PREFIX/share".\n'
1923aa99676SStefan Eßer	printf '    DATADIR      The location for data files. Default is "$DATAROOTDIR".\n'
1933aa99676SStefan Eßer	printf '    MANDIR       The location to install manpages to. Default is "$DATADIR/man".\n'
1943aa99676SStefan Eßer	printf '    MAN1DIR      The location to install Section 1 manpages to. Default is\n'
1953aa99676SStefan Eßer	printf '                 "$MANDIR/man1".\n'
19650696a6eSStefan Eßer	printf '    MAN3DIR      The location to install Section 3 manpages to. Default is\n'
19750696a6eSStefan Eßer	printf '                 "$MANDIR/man3".\n'
1983aa99676SStefan Eßer	printf '    NLSPATH      The location to install locale catalogs to. Must be an absolute\n'
1993aa99676SStefan Eßer	printf '                 path (or contain one). This is treated the same as the POSIX\n'
2003aa99676SStefan Eßer	printf '                 definition of $NLSPATH (see POSIX environment variables for\n'
2013aa99676SStefan Eßer	printf '                 more information). Default is "/usr/share/locale/%%L/%%N".\n'
2023aa99676SStefan Eßer	printf '    EXECSUFFIX   The suffix to append to the executable names, used to not\n'
2033aa99676SStefan Eßer	printf '                 interfere with other installed bc executables. Default is "".\n'
2043aa99676SStefan Eßer	printf '    EXECPREFIX   The prefix to append to the executable names, used to not\n'
2053aa99676SStefan Eßer	printf '                 interfere with other installed bc executables. Default is "".\n'
2063aa99676SStefan Eßer	printf '    DESTDIR      For package creation. Default is "". If it is empty when\n'
2073aa99676SStefan Eßer	printf '                 `%s` is run, it can also be passed to `make install`\n' "$script"
2083aa99676SStefan Eßer	printf '                 later as an environment variable. If both are specified,\n'
2093aa99676SStefan Eßer	printf '                 the one given to `%s` takes precedence.\n' "$script"
2103aa99676SStefan Eßer	printf '    LONG_BIT     The number of bits in a C `long` type. This is mostly for the\n'
2113aa99676SStefan Eßer	printf '                 embedded space since this `bc` uses `long`s internally for\n'
2123aa99676SStefan Eßer	printf '                 overflow checking. In C99, a `long` is required to be 32 bits.\n'
2133aa99676SStefan Eßer	printf '                 For most normal desktop systems, setting this is unnecessary,\n'
2143aa99676SStefan Eßer	printf '                 except that 32-bit platforms with 64-bit longs may want to set\n'
2153aa99676SStefan Eßer	printf '                 it to `32`. Default is the default of `LONG_BIT` for the target\n'
2163aa99676SStefan Eßer	printf '                 platform. Minimum allowed is `32`. It is a build time error if\n'
2173aa99676SStefan Eßer	printf '                 the specified value of `LONG_BIT` is greater than the default\n'
2183aa99676SStefan Eßer	printf '                 value of `LONG_BIT` for the target platform.\n'
2193aa99676SStefan Eßer	printf '    GEN_HOST     Whether to use `gen/strgen.c`, instead of `gen/strgen.sh`, to\n'
2203aa99676SStefan Eßer	printf '                 produce the C files that contain the help texts as well as the\n'
2213aa99676SStefan Eßer	printf '                 math libraries. By default, `gen/strgen.c` is used, compiled by\n'
2223aa99676SStefan Eßer	printf '                 "$HOSTCC" and run on the host machine. Using `gen/strgen.sh`\n'
2233aa99676SStefan Eßer	printf '                 removes the need to compile and run an executable on the host\n'
2243aa99676SStefan Eßer	printf '                 machine since `gen/strgen.sh` is a POSIX shell script. However,\n'
2253aa99676SStefan Eßer	printf '                 `gen/lib2.bc` is perilously close to 4095 characters, the max\n'
2263aa99676SStefan Eßer	printf '                 supported length of a string literal in C99 (and it could be\n'
2273aa99676SStefan Eßer	printf '                 added to in the future), and `gen/strgen.sh` generates a string\n'
2283aa99676SStefan Eßer	printf '                 literal instead of an array, as `gen/strgen.c` does. For most\n'
2293aa99676SStefan Eßer	printf '                 production-ready compilers, this limit probably is not\n'
2303aa99676SStefan Eßer	printf '                 enforced, but it could be. Both options are still available for\n'
2313aa99676SStefan Eßer	printf '                 this reason. If you are sure your compiler does not have the\n'
2323aa99676SStefan Eßer	printf '                 limit and do not want to compile and run a binary on the host\n'
2333aa99676SStefan Eßer	printf '                 machine, set this variable to "0". Any other value, or a\n'
2343aa99676SStefan Eßer	printf '                 non-existent value, will cause the build system to compile and\n'
2353aa99676SStefan Eßer	printf '                 run `gen/strgen.c`. Default is "".\n'
2363aa99676SStefan Eßer	printf '    GEN_EMU      Emulator to run string generator code under (leave empty if not\n'
2373aa99676SStefan Eßer	printf '                 necessary). This is not necessary when using `gen/strgen.sh`.\n'
2383aa99676SStefan Eßer	printf '                 Default is "".\n'
2393aa99676SStefan Eßer	printf '\n'
2403aa99676SStefan Eßer	printf 'WARNING: even though `configure.sh` supports both option types, short and\n'
2413aa99676SStefan Eßer	printf 'long, it does not support handling both at the same time. Use only one type.\n'
2423aa99676SStefan Eßer
2433aa99676SStefan Eßer	exit "$_usage_val"
2443aa99676SStefan Eßer}
2453aa99676SStefan Eßer
2463aa99676SStefan Eßerreplace_ext() {
2473aa99676SStefan Eßer
2483aa99676SStefan Eßer	if [ "$#" -ne 3 ]; then
2493aa99676SStefan Eßer		err_exit "Invalid number of args to $0"
2503aa99676SStefan Eßer	fi
2513aa99676SStefan Eßer
2523aa99676SStefan Eßer	_replace_ext_file="$1"
2533aa99676SStefan Eßer	_replace_ext_ext1="$2"
2543aa99676SStefan Eßer	_replace_ext_ext2="$3"
2553aa99676SStefan Eßer
2569a995fe1SStefan Eßer	_replace_ext_result="${_replace_ext_file%.$_replace_ext_ext1}.$_replace_ext_ext2"
2573aa99676SStefan Eßer
2583aa99676SStefan Eßer	printf '%s\n' "$_replace_ext_result"
2593aa99676SStefan Eßer}
2603aa99676SStefan Eßer
2613aa99676SStefan Eßerreplace_exts() {
2623aa99676SStefan Eßer
2633aa99676SStefan Eßer	if [ "$#" -ne 3 ]; then
2643aa99676SStefan Eßer		err_exit "Invalid number of args to $0"
2653aa99676SStefan Eßer	fi
2663aa99676SStefan Eßer
2673aa99676SStefan Eßer	_replace_exts_files="$1"
2683aa99676SStefan Eßer	_replace_exts_ext1="$2"
2693aa99676SStefan Eßer	_replace_exts_ext2="$3"
2703aa99676SStefan Eßer
2713aa99676SStefan Eßer	for _replace_exts_file in $_replace_exts_files; do
2723aa99676SStefan Eßer		_replace_exts_new_name=$(replace_ext "$_replace_exts_file" "$_replace_exts_ext1" "$_replace_exts_ext2")
2733aa99676SStefan Eßer		_replace_exts_result="$_replace_exts_result $_replace_exts_new_name"
2743aa99676SStefan Eßer	done
2753aa99676SStefan Eßer
2763aa99676SStefan Eßer	printf '%s\n' "$_replace_exts_result"
2773aa99676SStefan Eßer}
2783aa99676SStefan Eßer
2793aa99676SStefan Eßerreplace() {
2803aa99676SStefan Eßer
2813aa99676SStefan Eßer	if [ "$#" -ne 3 ]; then
2823aa99676SStefan Eßer		err_exit "Invalid number of args to $0"
2833aa99676SStefan Eßer	fi
2843aa99676SStefan Eßer
2853aa99676SStefan Eßer	_replace_str="$1"
2863aa99676SStefan Eßer	_replace_needle="$2"
2873aa99676SStefan Eßer	_replace_replacement="$3"
2883aa99676SStefan Eßer
2893aa99676SStefan Eßer	substring_replace "$_replace_str" "%%$_replace_needle%%" "$_replace_replacement"
2903aa99676SStefan Eßer}
2913aa99676SStefan Eßer
29210328f8bSStefan Eßerfind_src_files() {
29310328f8bSStefan Eßer
29410328f8bSStefan Eßer	if [ "$#" -ge 1 ] && [ "$1" != "" ]; then
29510328f8bSStefan Eßer
29610328f8bSStefan Eßer		while [ "$#" -ge 1 ]; do
29710328f8bSStefan Eßer			_find_src_files_a="${1## }"
29810328f8bSStefan Eßer			shift
29910328f8bSStefan Eßer			_find_src_files_args="$_find_src_files_args ! -path src/${_find_src_files_a}"
30010328f8bSStefan Eßer		done
30110328f8bSStefan Eßer
30210328f8bSStefan Eßer	else
30310328f8bSStefan Eßer		_find_src_files_args="-print"
30410328f8bSStefan Eßer	fi
30510328f8bSStefan Eßer
30610328f8bSStefan Eßer	printf '%s\n' $(find src/ -depth -name "*.c" $_find_src_files_args)
30710328f8bSStefan Eßer}
30810328f8bSStefan Eßer
30950696a6eSStefan Eßergen_file_list() {
3103aa99676SStefan Eßer
31150696a6eSStefan Eßer	if [ "$#" -lt 1 ]; then
3123aa99676SStefan Eßer		err_exit "Invalid number of args to $0"
3133aa99676SStefan Eßer	fi
3143aa99676SStefan Eßer
31550696a6eSStefan Eßer	_gen_file_list_contents="$1"
3163aa99676SStefan Eßer	shift
3173aa99676SStefan Eßer
31850696a6eSStefan Eßer	p=$(pwd)
31950696a6eSStefan Eßer
32050696a6eSStefan Eßer	cd "$scriptdir"
32150696a6eSStefan Eßer
32250696a6eSStefan Eßer	if [ "$#" -ge 1 ]; then
32310328f8bSStefan Eßer		_gen_file_list_unneeded="$@"
3243aa99676SStefan Eßer	else
32510328f8bSStefan Eßer		_gen_file_list_unneeded=""
3263aa99676SStefan Eßer	fi
3273aa99676SStefan Eßer
32850696a6eSStefan Eßer	_gen_file_list_needle_src="SRC"
32950696a6eSStefan Eßer	_gen_file_list_needle_obj="OBJ"
33050696a6eSStefan Eßer	_gen_file_list_needle_gcda="GCDA"
33150696a6eSStefan Eßer	_gen_file_list_needle_gcno="GCNO"
33250696a6eSStefan Eßer
33310328f8bSStefan Eßer	_gen_file_list_replacement=$(find_src_files $_gen_file_list_unneeded | tr '\n' ' ')
33450696a6eSStefan Eßer	_gen_file_list_contents=$(replace "$_gen_file_list_contents" \
33550696a6eSStefan Eßer		"$_gen_file_list_needle_src" "$_gen_file_list_replacement")
33650696a6eSStefan Eßer
33750696a6eSStefan Eßer	_gen_file_list_replacement=$(replace_exts "$_gen_file_list_replacement" "c" "o")
33850696a6eSStefan Eßer	_gen_file_list_contents=$(replace "$_gen_file_list_contents" \
33950696a6eSStefan Eßer		"$_gen_file_list_needle_obj" "$_gen_file_list_replacement")
34050696a6eSStefan Eßer
34150696a6eSStefan Eßer	_gen_file_list_replacement=$(replace_exts "$_gen_file_list_replacement" "o" "gcda")
34250696a6eSStefan Eßer	_gen_file_list_contents=$(replace "$_gen_file_list_contents" \
34350696a6eSStefan Eßer		"$_gen_file_list_needle_gcda" "$_gen_file_list_replacement")
34450696a6eSStefan Eßer
34550696a6eSStefan Eßer	_gen_file_list_replacement=$(replace_exts "$_gen_file_list_replacement" "gcda" "gcno")
34650696a6eSStefan Eßer	_gen_file_list_contents=$(replace "$_gen_file_list_contents" \
34750696a6eSStefan Eßer		"$_gen_file_list_needle_gcno" "$_gen_file_list_replacement")
34850696a6eSStefan Eßer
34950696a6eSStefan Eßer	cd "$p"
35050696a6eSStefan Eßer
35150696a6eSStefan Eßer	printf '%s\n' "$_gen_file_list_contents"
3523aa99676SStefan Eßer}
3533aa99676SStefan Eßer
35410328f8bSStefan Eßergen_tests() {
35510328f8bSStefan Eßer
35610328f8bSStefan Eßer	_gen_tests_name="$1"
35710328f8bSStefan Eßer	shift
35810328f8bSStefan Eßer
35910328f8bSStefan Eßer	_gen_tests_uname="$1"
36010328f8bSStefan Eßer	shift
36110328f8bSStefan Eßer
36210328f8bSStefan Eßer	_gen_tests_extra_math="$1"
36310328f8bSStefan Eßer	shift
36410328f8bSStefan Eßer
36510328f8bSStefan Eßer	_gen_tests_time_tests="$1"
36610328f8bSStefan Eßer	shift
36710328f8bSStefan Eßer
36810328f8bSStefan Eßer	_gen_tests_extra_required=$(cat tests/extra_required.txt)
36910328f8bSStefan Eßer
37010328f8bSStefan Eßer	for _gen_tests_t in $(cat "$scriptdir/tests/$_gen_tests_name/all.txt"); do
37110328f8bSStefan Eßer
37210328f8bSStefan Eßer		if [ "$_gen_tests_extra_math" -eq 0 ]; then
37310328f8bSStefan Eßer
37410328f8bSStefan Eßer			if [ -z "${_gen_tests_extra_required##*$_gen_tests_t*}" ]; then
37510328f8bSStefan Eßer				printf 'test_%s_%s:\n\t@printf "Skipping %s %s\\n"\n\n' \
37610328f8bSStefan Eßer					"$_gen_tests_name" "$_gen_tests_t" "$_gen_tests_name" \
37710328f8bSStefan Eßer					"$_gen_tests_t" >> "$scriptdir/Makefile"
37810328f8bSStefan Eßer				continue
37910328f8bSStefan Eßer			fi
38010328f8bSStefan Eßer
38110328f8bSStefan Eßer		fi
38210328f8bSStefan Eßer
38310328f8bSStefan Eßer		printf 'test_%s_%s:\n\t@sh tests/test.sh %s %s %s %s %s\n\n' \
38410328f8bSStefan Eßer			"$_gen_tests_name" "$_gen_tests_t" "$_gen_tests_name" \
38510328f8bSStefan Eßer			"$_gen_tests_t" "$generate_tests" "$time_tests" \
38610328f8bSStefan Eßer			"$*" >> "$scriptdir/Makefile"
38710328f8bSStefan Eßer
38810328f8bSStefan Eßer	done
38910328f8bSStefan Eßer}
39010328f8bSStefan Eßer
39110328f8bSStefan Eßergen_test_targets() {
39210328f8bSStefan Eßer
39310328f8bSStefan Eßer	_gen_test_targets_name="$1"
39410328f8bSStefan Eßer	shift
39510328f8bSStefan Eßer
39610328f8bSStefan Eßer	_gen_test_targets_tests=$(cat "$scriptdir/tests/${_gen_test_targets_name}/all.txt")
39710328f8bSStefan Eßer
39810328f8bSStefan Eßer	for _gen_test_targets_t in $_gen_test_targets_tests; do
39910328f8bSStefan Eßer		printf ' test_%s_%s' "$_gen_test_targets_name" "$_gen_test_targets_t"
40010328f8bSStefan Eßer	done
40110328f8bSStefan Eßer
40210328f8bSStefan Eßer	printf '\n'
40310328f8bSStefan Eßer}
40410328f8bSStefan Eßer
40510328f8bSStefan Eßergen_script_tests() {
40610328f8bSStefan Eßer
40710328f8bSStefan Eßer	_gen_script_tests_name="$1"
40810328f8bSStefan Eßer	shift
40910328f8bSStefan Eßer
41010328f8bSStefan Eßer	_gen_script_tests_extra_math="$1"
41110328f8bSStefan Eßer	shift
41210328f8bSStefan Eßer
41310328f8bSStefan Eßer	_gen_script_tests_generate="$1"
41410328f8bSStefan Eßer	shift
41510328f8bSStefan Eßer
41610328f8bSStefan Eßer	_gen_script_tests_time="$1"
41710328f8bSStefan Eßer	shift
41810328f8bSStefan Eßer
41910328f8bSStefan Eßer	_gen_script_tests_tests=$(cat "$scriptdir/tests/$_gen_script_tests_name/scripts/all.txt")
42010328f8bSStefan Eßer
42110328f8bSStefan Eßer	for _gen_script_tests_f in $_gen_script_tests_tests; do
42210328f8bSStefan Eßer
42310328f8bSStefan Eßer		_gen_script_tests_b=$(basename "$_gen_script_tests_f" ".${_gen_script_tests_name}")
42410328f8bSStefan Eßer
42510328f8bSStefan Eßer		printf 'test_%s_script_%s:\n\t@sh tests/script.sh %s %s %s 1 %s %s %s\n\n' \
42610328f8bSStefan Eßer			"$_gen_script_tests_name" "$_gen_script_tests_b" "$_gen_script_tests_name" \
42710328f8bSStefan Eßer			"$_gen_script_tests_f" "$_gen_script_tests_extra_math" "$_gen_script_tests_generate" \
42810328f8bSStefan Eßer			"$_gen_script_tests_time" "$*" >> "$scriptdir/Makefile"
42910328f8bSStefan Eßer	done
43010328f8bSStefan Eßer}
43110328f8bSStefan Eßer
43210328f8bSStefan Eßergen_script_test_targets() {
43310328f8bSStefan Eßer
43410328f8bSStefan Eßer	_gen_script_test_targets_name="$1"
43510328f8bSStefan Eßer	shift
43610328f8bSStefan Eßer
43710328f8bSStefan Eßer	_gen_script_test_targets_tests=$(cat "$scriptdir/tests/$_gen_script_test_targets_name/scripts/all.txt")
43810328f8bSStefan Eßer
43910328f8bSStefan Eßer	for _gen_script_test_targets_f in $_gen_script_test_targets_tests; do
44010328f8bSStefan Eßer		_gen_script_test_targets_b=$(basename "$_gen_script_test_targets_f" \
44110328f8bSStefan Eßer			".$_gen_script_test_targets_name")
44210328f8bSStefan Eßer		printf ' test_%s_script_%s' "$_gen_script_test_targets_name" \
44310328f8bSStefan Eßer			"$_gen_script_test_targets_b"
44410328f8bSStefan Eßer	done
44510328f8bSStefan Eßer
44610328f8bSStefan Eßer	printf '\n'
44710328f8bSStefan Eßer}
44810328f8bSStefan Eßer
4493aa99676SStefan Eßerbc_only=0
4503aa99676SStefan Eßerdc_only=0
4513aa99676SStefan Eßercoverage=0
4523aa99676SStefan Eßerkaratsuba_len=32
4533aa99676SStefan Eßerdebug=0
4543aa99676SStefan Eßerhist=1
4553aa99676SStefan Eßerextra_math=1
4563aa99676SStefan Eßeroptimization=""
4573aa99676SStefan Eßergenerate_tests=1
4583aa99676SStefan Eßerinstall_manpages=1
4593aa99676SStefan Eßernls=1
4603aa99676SStefan Eßerprompt=1
4613aa99676SStefan Eßerforce=0
4623aa99676SStefan Eßerstrip_bin=1
463cf7becd2SStefan Eßerall_locales=0
46450696a6eSStefan Eßerlibrary=0
46510328f8bSStefan Eßerfuzz=0
46610328f8bSStefan Eßertime_tests=0
46710328f8bSStefan Eßervg=0
46810328f8bSStefan Eßermemcheck=0
46910328f8bSStefan Eßerclean=1
4703aa99676SStefan Eßer
47110328f8bSStefan Eßerwhile getopts "abBcdDEfgGhHk:lMmNO:PStTvz-" opt; do
4723aa99676SStefan Eßer
4733aa99676SStefan Eßer	case "$opt" in
47450696a6eSStefan Eßer		a) library=1 ;;
4753aa99676SStefan Eßer		b) bc_only=1 ;;
4763aa99676SStefan Eßer		B) dc_only=1 ;;
4773aa99676SStefan Eßer		c) coverage=1 ;;
47810328f8bSStefan Eßer		C) clean=0 ;;
4793aa99676SStefan Eßer		d) dc_only=1 ;;
4803aa99676SStefan Eßer		D) bc_only=1 ;;
4813aa99676SStefan Eßer		E) extra_math=0 ;;
4823aa99676SStefan Eßer		f) force=1 ;;
4833aa99676SStefan Eßer		g) debug=1 ;;
4843aa99676SStefan Eßer		G) generate_tests=0 ;;
4853aa99676SStefan Eßer		h) usage ;;
4863aa99676SStefan Eßer		H) hist=0 ;;
4873aa99676SStefan Eßer		k) karatsuba_len="$OPTARG" ;;
488cf7becd2SStefan Eßer		l) all_locales=1 ;;
48910328f8bSStefan Eßer		m) memcheck=1 ;;
4903aa99676SStefan Eßer		M) install_manpages=0 ;;
4913aa99676SStefan Eßer		N) nls=0 ;;
4923aa99676SStefan Eßer		O) optimization="$OPTARG" ;;
4933aa99676SStefan Eßer		P) prompt=0 ;;
49410328f8bSStefan Eßer		t) time_tests=1 ;;
4953aa99676SStefan Eßer		T) strip_bin=0 ;;
49610328f8bSStefan Eßer		v) vg=1 ;;
49710328f8bSStefan Eßer		z) fuzz=1 ;;
4983aa99676SStefan Eßer		-)
4993aa99676SStefan Eßer			arg="$1"
5003aa99676SStefan Eßer			arg="${arg#--}"
5013aa99676SStefan Eßer			LONG_OPTARG="${arg#*=}"
5023aa99676SStefan Eßer			case $arg in
5033aa99676SStefan Eßer				help) usage ;;
50450696a6eSStefan Eßer				library) library=1 ;;
5053aa99676SStefan Eßer				bc-only) bc_only=1 ;;
5063aa99676SStefan Eßer				dc-only) dc_only=1 ;;
5073aa99676SStefan Eßer				coverage) coverage=1 ;;
5083aa99676SStefan Eßer				debug) debug=1 ;;
5093aa99676SStefan Eßer				force) force=1 ;;
5103aa99676SStefan Eßer				prefix=?*) PREFIX="$LONG_OPTARG" ;;
5113aa99676SStefan Eßer				prefix)
5123aa99676SStefan Eßer					if [ "$#" -lt 2 ]; then
5133aa99676SStefan Eßer						usage "No argument given for '--$arg' option"
5143aa99676SStefan Eßer					fi
5153aa99676SStefan Eßer					PREFIX="$2"
5163aa99676SStefan Eßer					shift ;;
5173aa99676SStefan Eßer				bindir=?*) BINDIR="$LONG_OPTARG" ;;
5183aa99676SStefan Eßer				bindir)
5193aa99676SStefan Eßer					if [ "$#" -lt 2 ]; then
5203aa99676SStefan Eßer						usage "No argument given for '--$arg' option"
5213aa99676SStefan Eßer					fi
5223aa99676SStefan Eßer					BINDIR="$2"
5233aa99676SStefan Eßer					shift ;;
52450696a6eSStefan Eßer				includedir=?*) INCLUDEDIR="$LONG_OPTARG" ;;
52550696a6eSStefan Eßer				includedir)
52650696a6eSStefan Eßer					if [ "$#" -lt 2 ]; then
52750696a6eSStefan Eßer						usage "No argument given for '--$arg' option"
52850696a6eSStefan Eßer					fi
52950696a6eSStefan Eßer					INCLUDEDIR="$2"
53050696a6eSStefan Eßer					shift ;;
53150696a6eSStefan Eßer				libdir=?*) LIBDIR="$LONG_OPTARG" ;;
53250696a6eSStefan Eßer				libdir)
53350696a6eSStefan Eßer					if [ "$#" -lt 2 ]; then
53450696a6eSStefan Eßer						usage "No argument given for '--$arg' option"
53550696a6eSStefan Eßer					fi
53650696a6eSStefan Eßer					LIBDIR="$2"
53750696a6eSStefan Eßer					shift ;;
5383aa99676SStefan Eßer				datarootdir=?*) DATAROOTDIR="$LONG_OPTARG" ;;
5393aa99676SStefan Eßer				datarootdir)
5403aa99676SStefan Eßer					if [ "$#" -lt 2 ]; then
5413aa99676SStefan Eßer						usage "No argument given for '--$arg' option"
5423aa99676SStefan Eßer					fi
5433aa99676SStefan Eßer					DATAROOTDIR="$2"
5443aa99676SStefan Eßer					shift ;;
5453aa99676SStefan Eßer				datadir=?*) DATADIR="$LONG_OPTARG" ;;
5463aa99676SStefan Eßer				datadir)
5473aa99676SStefan Eßer					if [ "$#" -lt 2 ]; then
5483aa99676SStefan Eßer						usage "No argument given for '--$arg' option"
5493aa99676SStefan Eßer					fi
5503aa99676SStefan Eßer					DATADIR="$2"
5513aa99676SStefan Eßer					shift ;;
5523aa99676SStefan Eßer				mandir=?*) MANDIR="$LONG_OPTARG" ;;
5533aa99676SStefan Eßer				mandir)
5543aa99676SStefan Eßer					if [ "$#" -lt 2 ]; then
5553aa99676SStefan Eßer						usage "No argument given for '--$arg' option"
5563aa99676SStefan Eßer					fi
5573aa99676SStefan Eßer					MANDIR="$2"
5583aa99676SStefan Eßer					shift ;;
5593aa99676SStefan Eßer				man1dir=?*) MAN1DIR="$LONG_OPTARG" ;;
5603aa99676SStefan Eßer				man1dir)
5613aa99676SStefan Eßer					if [ "$#" -lt 2 ]; then
5623aa99676SStefan Eßer						usage "No argument given for '--$arg' option"
5633aa99676SStefan Eßer					fi
5643aa99676SStefan Eßer					MAN1DIR="$2"
5653aa99676SStefan Eßer					shift ;;
56650696a6eSStefan Eßer				man3dir=?*) MAN3DIR="$LONG_OPTARG" ;;
56750696a6eSStefan Eßer				man3dir)
56850696a6eSStefan Eßer					if [ "$#" -lt 2 ]; then
56950696a6eSStefan Eßer						usage "No argument given for '--$arg' option"
57050696a6eSStefan Eßer					fi
57150696a6eSStefan Eßer					MAN3DIR="$2"
57250696a6eSStefan Eßer					shift ;;
5733aa99676SStefan Eßer				localedir=?*) LOCALEDIR="$LONG_OPTARG" ;;
5743aa99676SStefan Eßer				localedir)
5753aa99676SStefan Eßer					if [ "$#" -lt 2 ]; then
5763aa99676SStefan Eßer						usage "No argument given for '--$arg' option"
5773aa99676SStefan Eßer					fi
5783aa99676SStefan Eßer					LOCALEDIR="$2"
5793aa99676SStefan Eßer					shift ;;
5803aa99676SStefan Eßer				karatsuba-len=?*) karatsuba_len="$LONG_OPTARG" ;;
5813aa99676SStefan Eßer				karatsuba-len)
5823aa99676SStefan Eßer					if [ "$#" -lt 2 ]; then
5833aa99676SStefan Eßer						usage "No argument given for '--$arg' option"
5843aa99676SStefan Eßer					fi
5853aa99676SStefan Eßer					karatsuba_len="$1"
5863aa99676SStefan Eßer					shift ;;
5873aa99676SStefan Eßer				opt=?*) optimization="$LONG_OPTARG" ;;
5883aa99676SStefan Eßer				opt)
5893aa99676SStefan Eßer					if [ "$#" -lt 2 ]; then
5903aa99676SStefan Eßer						usage "No argument given for '--$arg' option"
5913aa99676SStefan Eßer					fi
5923aa99676SStefan Eßer					optimization="$1"
5933aa99676SStefan Eßer					shift ;;
5943aa99676SStefan Eßer				disable-bc) dc_only=1 ;;
5953aa99676SStefan Eßer				disable-dc) bc_only=1 ;;
59610328f8bSStefan Eßer				disable-clean) clean=0 ;;
5973aa99676SStefan Eßer				disable-extra-math) extra_math=0 ;;
5983aa99676SStefan Eßer				disable-generated-tests) generate_tests=0 ;;
5993aa99676SStefan Eßer				disable-history) hist=0 ;;
6003aa99676SStefan Eßer				disable-man-pages) install_manpages=0 ;;
6013aa99676SStefan Eßer				disable-nls) nls=0 ;;
6023aa99676SStefan Eßer				disable-prompt) prompt=0 ;;
6033aa99676SStefan Eßer				disable-strip) strip_bin=0 ;;
60410328f8bSStefan Eßer				enable-test-timing) time_tests=1 ;;
60510328f8bSStefan Eßer				enable-valgrind) vg=1 ;;
60610328f8bSStefan Eßer				enable-fuzz-mode) fuzz=1 ;;
60710328f8bSStefan Eßer				enable-memcheck) memcheck=1 ;;
608cf7becd2SStefan Eßer				install-all-locales) all_locales=1 ;;
6093aa99676SStefan Eßer				help* | bc-only* | dc-only* | coverage* | debug*)
6103aa99676SStefan Eßer					usage "No arg allowed for --$arg option" ;;
61110328f8bSStefan Eßer				disable-bc* | disable-dc* | disable-clean*)
61210328f8bSStefan Eßer					usage "No arg allowed for --$arg option" ;;
61310328f8bSStefan Eßer				disable-extra-math*)
6143aa99676SStefan Eßer					usage "No arg allowed for --$arg option" ;;
6153aa99676SStefan Eßer				disable-generated-tests* | disable-history*)
6163aa99676SStefan Eßer					usage "No arg allowed for --$arg option" ;;
6173aa99676SStefan Eßer				disable-man-pages* | disable-nls* | disable-strip*)
6183aa99676SStefan Eßer					usage "No arg allowed for --$arg option" ;;
61910328f8bSStefan Eßer				enable-fuzz-mode* | enable-test-timing* | enable-valgrind*)
62010328f8bSStefan Eßer					usage "No arg allowed for --$arg option" ;;
62110328f8bSStefan Eßer				enable-memcheck* | install-all-locales*)
622cf7becd2SStefan Eßer					usage "No arg allowed for --$arg option" ;;
6233aa99676SStefan Eßer				'') break ;; # "--" terminates argument processing
6243aa99676SStefan Eßer				* ) usage "Invalid option $LONG_OPTARG" ;;
6253aa99676SStefan Eßer			esac
6263aa99676SStefan Eßer			shift
6273aa99676SStefan Eßer			OPTIND=1 ;;
6283aa99676SStefan Eßer		?) usage "Invalid option $opt" ;;
6293aa99676SStefan Eßer	esac
6303aa99676SStefan Eßer
6313aa99676SStefan Eßerdone
6323aa99676SStefan Eßer
63310328f8bSStefan Eßerif [ "$clean" -ne 0 ]; then
63410328f8bSStefan Eßer	if [ -f ./Makefile ]; then
63510328f8bSStefan Eßer		make clean_config > /dev/null
63610328f8bSStefan Eßer	fi
63710328f8bSStefan Eßerfi
63810328f8bSStefan Eßer
6393aa99676SStefan Eßerif [ "$bc_only" -eq 1 ] && [ "$dc_only" -eq 1 ]; then
6403aa99676SStefan Eßer	usage "Can only specify one of -b(-D) or -d(-B)"
6413aa99676SStefan Eßerfi
6423aa99676SStefan Eßer
64350696a6eSStefan Eßerif [ "$library" -ne 0 ]; then
64450696a6eSStefan Eßer	if [ "$bc_only" -eq 1 ] || [ "$dc_only" -eq 1 ]; then
64550696a6eSStefan Eßer		usage "Must not specify -b(-D) or -d(-B) when building the library"
64650696a6eSStefan Eßer	fi
64750696a6eSStefan Eßerfi
64850696a6eSStefan Eßer
6493aa99676SStefan Eßercase $karatsuba_len in
6503aa99676SStefan Eßer	(*[!0-9]*|'') usage "KARATSUBA_LEN is not a number" ;;
6513aa99676SStefan Eßer	(*) ;;
6523aa99676SStefan Eßeresac
6533aa99676SStefan Eßer
6543aa99676SStefan Eßerif [ "$karatsuba_len" -lt 16 ]; then
6553aa99676SStefan Eßer	usage "KARATSUBA_LEN is less than 16"
6563aa99676SStefan Eßerfi
6573aa99676SStefan Eßer
6583aa99676SStefan Eßerset -e
6593aa99676SStefan Eßer
6603aa99676SStefan Eßerif [ -z "${LONG_BIT+set}" ]; then
6613aa99676SStefan Eßer	LONG_BIT_DEFINE=""
6623aa99676SStefan Eßerelif [ "$LONG_BIT" -lt 32 ]; then
6633aa99676SStefan Eßer	usage "LONG_BIT is less than 32"
6643aa99676SStefan Eßerelse
6653aa99676SStefan Eßer	LONG_BIT_DEFINE="-DBC_LONG_BIT=\$(BC_LONG_BIT)"
6663aa99676SStefan Eßerfi
6673aa99676SStefan Eßer
6683aa99676SStefan Eßerif [ -z "$CC" ]; then
6693aa99676SStefan Eßer	CC="c99"
6703aa99676SStefan Eßerelse
6713aa99676SStefan Eßer	ccbase=$(basename "$CC")
6723aa99676SStefan Eßer	suffix=" *"
6733aa99676SStefan Eßer	prefix="* "
6743aa99676SStefan Eßer
6753aa99676SStefan Eßer	if [ "${ccbase%%$suffix}" != "$ccbase" ]; then
6763aa99676SStefan Eßer		ccflags="${ccbase#$prefix}"
6773aa99676SStefan Eßer		cc="${ccbase%%$suffix}"
6783aa99676SStefan Eßer		ccdir=$(dirname "$CC")
6793aa99676SStefan Eßer		if [ "$ccdir" = "." ] && [ "${CC#.}" = "$CC" ]; then
6803aa99676SStefan Eßer			ccdir=""
6813aa99676SStefan Eßer		else
6823aa99676SStefan Eßer			ccdir="$ccdir/"
6833aa99676SStefan Eßer		fi
6843aa99676SStefan Eßer		CC="${ccdir}${cc}"
6853aa99676SStefan Eßer		CFLAGS="$CFLAGS $ccflags"
6863aa99676SStefan Eßer	fi
6873aa99676SStefan Eßerfi
6883aa99676SStefan Eßer
6893aa99676SStefan Eßerif [ -z "$HOSTCC" ] && [ -z "$HOST_CC" ]; then
6903aa99676SStefan Eßer	HOSTCC="$CC"
6913aa99676SStefan Eßerelif [ -z "$HOSTCC" ]; then
6923aa99676SStefan Eßer	HOSTCC="$HOST_CC"
6933aa99676SStefan Eßerfi
6943aa99676SStefan Eßer
6953aa99676SStefan Eßerif [ "$HOSTCC" != "$CC" ]; then
6963aa99676SStefan Eßer	ccbase=$(basename "$HOSTCC")
6973aa99676SStefan Eßer	suffix=" *"
6983aa99676SStefan Eßer	prefix="* "
6993aa99676SStefan Eßer
7003aa99676SStefan Eßer	if [ "${ccbase%%$suffix}" != "$ccbase" ]; then
7013aa99676SStefan Eßer		ccflags="${ccbase#$prefix}"
7023aa99676SStefan Eßer		cc="${ccbase%%$suffix}"
7033aa99676SStefan Eßer		ccdir=$(dirname "$HOSTCC")
7043aa99676SStefan Eßer		if [ "$ccdir" = "." ] && [ "${HOSTCC#.}" = "$HOSTCC" ]; then
7053aa99676SStefan Eßer			ccdir=""
7063aa99676SStefan Eßer		else
7073aa99676SStefan Eßer			ccdir="$ccdir/"
7083aa99676SStefan Eßer		fi
7093aa99676SStefan Eßer		HOSTCC="${ccdir}${cc}"
7103aa99676SStefan Eßer		HOSTCFLAGS="$HOSTCFLAGS $ccflags"
7113aa99676SStefan Eßer	fi
7123aa99676SStefan Eßerfi
7133aa99676SStefan Eßer
7143aa99676SStefan Eßerif [ -z "${HOSTCFLAGS+set}" ] && [ -z "${HOST_CFLAGS+set}" ]; then
7153aa99676SStefan Eßer	HOSTCFLAGS="$CFLAGS"
7163aa99676SStefan Eßerelif [ -z "${HOSTCFLAGS+set}" ]; then
7173aa99676SStefan Eßer	HOSTCFLAGS="$HOST_CFLAGS"
7183aa99676SStefan Eßerfi
7193aa99676SStefan Eßer
7203aa99676SStefan Eßerlink="@printf 'No link necessary\\\\n'"
7213aa99676SStefan Eßermain_exec="BC"
7223aa99676SStefan Eßerexecutable="BC_EXEC"
7233aa99676SStefan Eßer
72450696a6eSStefan Eßertests="test_bc timeconst test_dc"
72550696a6eSStefan Eßer
7263aa99676SStefan Eßerbc_test="@tests/all.sh bc $extra_math 1 $generate_tests 0 \$(BC_EXEC)"
7273aa99676SStefan Eßerdc_test="@tests/all.sh dc $extra_math 1 $generate_tests 0 \$(DC_EXEC)"
7283aa99676SStefan Eßer
7293aa99676SStefan Eßertimeconst="@tests/bc/timeconst.sh tests/bc/scripts/timeconst.bc \$(BC_EXEC)"
7303aa99676SStefan Eßer
7313aa99676SStefan Eßer# In order to have cleanup at exit, we need to be in
7323aa99676SStefan Eßer# debug mode, so don't run valgrind without that.
73310328f8bSStefan Eßerif [ "$vg" -ne 0 ]; then
73410328f8bSStefan Eßer	debug=1
73510328f8bSStefan Eßer	bc_test_exec='valgrind $(VALGRIND_ARGS) $(BC_EXEC)'
73610328f8bSStefan Eßer	dc_test_exec='valgrind $(VALGRIND_ARGS) $(DC_EXEC)'
7373aa99676SStefan Eßerelse
73810328f8bSStefan Eßer	bc_test_exec='$(BC_EXEC)'
73910328f8bSStefan Eßer	dc_test_exec='$(DC_EXEC)'
7403aa99676SStefan Eßerfi
7413aa99676SStefan Eßer
7423aa99676SStefan Eßerkaratsuba="@printf 'karatsuba cannot be run because one of bc or dc is not built\\\\n'"
7433aa99676SStefan Eßerkaratsuba_test="@printf 'karatsuba cannot be run because one of bc or dc is not built\\\\n'"
7443aa99676SStefan Eßer
7453aa99676SStefan Eßerbc_lib="\$(GEN_DIR)/lib.o"
7463aa99676SStefan Eßerbc_help="\$(GEN_DIR)/bc_help.o"
7473aa99676SStefan Eßerdc_help="\$(GEN_DIR)/dc_help.o"
7483aa99676SStefan Eßer
74910328f8bSStefan Eßerdefault_target_prereqs="\$(BIN) \$(OBJS)"
75010328f8bSStefan Eßerdefault_target_cmd="\$(CC) \$(CFLAGS) \$(OBJS) \$(LDFLAGS) -o \$(EXEC)"
75110328f8bSStefan Eßerdefault_target="\$(DC_EXEC)"
75210328f8bSStefan Eßer
75310328f8bSStefan Eßersecond_target_prereqs=""
75410328f8bSStefan Eßersecond_target_cmd="$default_target_cmd"
75510328f8bSStefan Eßersecond_target="\$(BC_EXEC)"
75610328f8bSStefan Eßer
75710328f8bSStefan Eßerif [ "$library" -ne 0 ]; then
75810328f8bSStefan Eßer
75910328f8bSStefan Eßer	extra_math=1
76010328f8bSStefan Eßer	nls=0
76110328f8bSStefan Eßer	hist=0
76210328f8bSStefan Eßer	prompt=0
76310328f8bSStefan Eßer	bc=1
76410328f8bSStefan Eßer	dc=1
76510328f8bSStefan Eßer
76610328f8bSStefan Eßer	default_target_prereqs="\$(BIN) \$(OBJ)"
76710328f8bSStefan Eßer	default_target_cmd="ar -r -cu \$(LIBBC) \$(OBJ)"
76810328f8bSStefan Eßer	default_target="\$(LIBBC)"
76910328f8bSStefan Eßer	tests="test_library"
77010328f8bSStefan Eßer
77110328f8bSStefan Eßerelif [ "$bc_only" -eq 1 ]; then
7723aa99676SStefan Eßer
7733aa99676SStefan Eßer	bc=1
7743aa99676SStefan Eßer	dc=0
7753aa99676SStefan Eßer
7763aa99676SStefan Eßer	dc_help=""
7773aa99676SStefan Eßer
7783aa99676SStefan Eßer	executables="bc"
7793aa99676SStefan Eßer
7803aa99676SStefan Eßer	dc_test="@printf 'No dc tests to run\\\\n'"
7813aa99676SStefan Eßer
78250696a6eSStefan Eßer	install_prereqs=" install_execs"
78350696a6eSStefan Eßer	install_man_prereqs=" install_bc_manpage"
7843aa99676SStefan Eßer	uninstall_prereqs=" uninstall_bc"
7853aa99676SStefan Eßer	uninstall_man_prereqs=" uninstall_bc_manpage"
7863aa99676SStefan Eßer
78710328f8bSStefan Eßer	default_target="\$(BC_EXEC)"
78810328f8bSStefan Eßer	second_target="\$(DC_EXEC)"
78910328f8bSStefan Eßer	tests="test_bc timeconst"
79010328f8bSStefan Eßer
7913aa99676SStefan Eßerelif [ "$dc_only" -eq 1 ]; then
7923aa99676SStefan Eßer
7933aa99676SStefan Eßer	bc=0
7943aa99676SStefan Eßer	dc=1
7953aa99676SStefan Eßer
7963aa99676SStefan Eßer	bc_lib=""
7973aa99676SStefan Eßer	bc_help=""
7983aa99676SStefan Eßer
7993aa99676SStefan Eßer	executables="dc"
8003aa99676SStefan Eßer
8013aa99676SStefan Eßer	main_exec="DC"
8023aa99676SStefan Eßer	executable="DC_EXEC"
8033aa99676SStefan Eßer
8043aa99676SStefan Eßer	bc_test="@printf 'No bc tests to run\\\\n'"
8053aa99676SStefan Eßer
8063aa99676SStefan Eßer	timeconst="@printf 'timeconst cannot be run because bc is not built\\\\n'"
8073aa99676SStefan Eßer
80850696a6eSStefan Eßer	install_prereqs=" install_execs"
80950696a6eSStefan Eßer	install_man_prereqs=" install_dc_manpage"
8103aa99676SStefan Eßer	uninstall_prereqs=" uninstall_dc"
8113aa99676SStefan Eßer	uninstall_man_prereqs=" uninstall_dc_manpage"
8123aa99676SStefan Eßer
81310328f8bSStefan Eßer	tests="test_dc"
81410328f8bSStefan Eßer
8153aa99676SStefan Eßerelse
8163aa99676SStefan Eßer
8173aa99676SStefan Eßer	bc=1
8183aa99676SStefan Eßer	dc=1
8193aa99676SStefan Eßer
8203aa99676SStefan Eßer	executables="bc and dc"
8213aa99676SStefan Eßer
8223aa99676SStefan Eßer	karatsuba="@\$(KARATSUBA) 30 0 \$(BC_EXEC)"
8233aa99676SStefan Eßer	karatsuba_test="@\$(KARATSUBA) 1 100 \$(BC_EXEC)"
8243aa99676SStefan Eßer
82550696a6eSStefan Eßer	if [ "$library" -eq 0 ]; then
82650696a6eSStefan Eßer		install_prereqs=" install_execs"
82750696a6eSStefan Eßer		install_man_prereqs=" install_bc_manpage install_dc_manpage"
8283aa99676SStefan Eßer		uninstall_prereqs=" uninstall_bc uninstall_dc"
8293aa99676SStefan Eßer		uninstall_man_prereqs=" uninstall_bc_manpage uninstall_dc_manpage"
83050696a6eSStefan Eßer	else
83150696a6eSStefan Eßer		install_prereqs=" install_library install_bcl_header"
83250696a6eSStefan Eßer		install_man_prereqs=" install_bcl_manpage"
83350696a6eSStefan Eßer		uninstall_prereqs=" uninstall_library uninstall_bcl_header"
83450696a6eSStefan Eßer		uninstall_man_prereqs=" uninstall_bcl_manpage"
83550696a6eSStefan Eßer		tests="test_library"
83650696a6eSStefan Eßer	fi
8373aa99676SStefan Eßer
83810328f8bSStefan Eßer	second_target_prereqs="$default_target_prereqs"
83910328f8bSStefan Eßer	default_target_prereqs="$second_target"
84010328f8bSStefan Eßer	default_target_cmd="\$(LINK) \$(BIN) \$(EXEC_PREFIX)\$(DC)"
84110328f8bSStefan Eßer
84210328f8bSStefan Eßerfi
84310328f8bSStefan Eßer
84410328f8bSStefan Eßerif [ "$fuzz" -ne 0 ]; then
84510328f8bSStefan Eßer	debug=1
84610328f8bSStefan Eßer	hist=0
84710328f8bSStefan Eßer	prompt=0
84810328f8bSStefan Eßer	nls=0
84910328f8bSStefan Eßer	optimization="3"
8503aa99676SStefan Eßerfi
8513aa99676SStefan Eßer
8523aa99676SStefan Eßerif [ "$debug" -eq 1 ]; then
8533aa99676SStefan Eßer
8543aa99676SStefan Eßer	if [ -z "$CFLAGS" ] && [ -z "$optimization" ]; then
8553aa99676SStefan Eßer		CFLAGS="-O0"
8563aa99676SStefan Eßer	fi
8573aa99676SStefan Eßer
8583aa99676SStefan Eßer	CFLAGS="-g $CFLAGS"
8593aa99676SStefan Eßer
8603aa99676SStefan Eßerelse
8613aa99676SStefan Eßer	CPPFLAGS="-DNDEBUG $CPPFLAGS"
8623aa99676SStefan Eßer	if [ "$strip_bin" -ne 0 ]; then
8633aa99676SStefan Eßer		LDFLAGS="-s $LDFLAGS"
8643aa99676SStefan Eßer	fi
8653aa99676SStefan Eßerfi
8663aa99676SStefan Eßer
8673aa99676SStefan Eßerif [ -n "$optimization" ]; then
8683aa99676SStefan Eßer	CFLAGS="-O$optimization $CFLAGS"
8693aa99676SStefan Eßerfi
8703aa99676SStefan Eßer
8713aa99676SStefan Eßerif [ "$coverage" -eq 1 ]; then
8723aa99676SStefan Eßer
8733aa99676SStefan Eßer	if [ "$bc_only" -eq 1 ] || [ "$dc_only" -eq 1 ]; then
8743aa99676SStefan Eßer		usage "Can only specify -c without -b or -d"
8753aa99676SStefan Eßer	fi
8763aa99676SStefan Eßer
8773aa99676SStefan Eßer	CFLAGS="-fprofile-arcs -ftest-coverage -g -O0 $CFLAGS"
8783aa99676SStefan Eßer	CPPFLAGS="-DNDEBUG $CPPFLAGS"
8793aa99676SStefan Eßer
8803aa99676SStefan Eßer	COVERAGE_OUTPUT="@gcov -pabcdf \$(GCDA) \$(BC_GCDA) \$(DC_GCDA) \$(HISTORY_GCDA) \$(RAND_GCDA)"
8813aa99676SStefan Eßer	COVERAGE_OUTPUT="$COVERAGE_OUTPUT;\$(RM) -f \$(GEN)*.gc*"
8823aa99676SStefan Eßer	COVERAGE_OUTPUT="$COVERAGE_OUTPUT;gcovr --html-details --output index.html"
8833aa99676SStefan Eßer	COVERAGE_PREREQS=" test coverage_output"
8843aa99676SStefan Eßer
8853aa99676SStefan Eßerelse
8863aa99676SStefan Eßer	COVERAGE_OUTPUT="@printf 'Coverage not generated\\\\n'"
8873aa99676SStefan Eßer	COVERAGE_PREREQS=""
8883aa99676SStefan Eßerfi
8893aa99676SStefan Eßer
8903aa99676SStefan Eßerif [ -z "${DESTDIR+set}" ]; then
8913aa99676SStefan Eßer	destdir=""
8923aa99676SStefan Eßerelse
8933aa99676SStefan Eßer	destdir="DESTDIR = $DESTDIR"
8943aa99676SStefan Eßerfi
8953aa99676SStefan Eßer
8963aa99676SStefan Eßerif [ -z "${PREFIX+set}" ]; then
8973aa99676SStefan Eßer	PREFIX="/usr/local"
8983aa99676SStefan Eßerfi
8993aa99676SStefan Eßer
9003aa99676SStefan Eßerif [ -z "${BINDIR+set}" ]; then
9013aa99676SStefan Eßer	BINDIR="$PREFIX/bin"
9023aa99676SStefan Eßerfi
9033aa99676SStefan Eßer
90450696a6eSStefan Eßerif [ -z "${INCLUDEDIR+set}" ]; then
90550696a6eSStefan Eßer	INCLUDEDIR="$PREFIX/include"
90650696a6eSStefan Eßerfi
90750696a6eSStefan Eßer
90850696a6eSStefan Eßerif [ -z "${LIBDIR+set}" ]; then
90950696a6eSStefan Eßer	LIBDIR="$PREFIX/lib"
91050696a6eSStefan Eßerfi
91150696a6eSStefan Eßer
9123aa99676SStefan Eßerif [ "$install_manpages" -ne 0 ] || [ "$nls" -ne 0 ]; then
9133aa99676SStefan Eßer	if [ -z "${DATAROOTDIR+set}" ]; then
9143aa99676SStefan Eßer		DATAROOTDIR="$PREFIX/share"
9153aa99676SStefan Eßer	fi
9163aa99676SStefan Eßerfi
9173aa99676SStefan Eßer
9183aa99676SStefan Eßerif [ "$install_manpages" -ne 0 ]; then
9193aa99676SStefan Eßer
9203aa99676SStefan Eßer	if [ -z "${DATADIR+set}" ]; then
9213aa99676SStefan Eßer		DATADIR="$DATAROOTDIR"
9223aa99676SStefan Eßer	fi
9233aa99676SStefan Eßer
9243aa99676SStefan Eßer	if [ -z "${MANDIR+set}" ]; then
9253aa99676SStefan Eßer		MANDIR="$DATADIR/man"
9263aa99676SStefan Eßer	fi
9273aa99676SStefan Eßer
9283aa99676SStefan Eßer	if [ -z "${MAN1DIR+set}" ]; then
9293aa99676SStefan Eßer		MAN1DIR="$MANDIR/man1"
9303aa99676SStefan Eßer	fi
9313aa99676SStefan Eßer
93250696a6eSStefan Eßer	if [ -z "${MAN3DIR+set}" ]; then
93350696a6eSStefan Eßer		MAN3DIR="$MANDIR/man3"
93450696a6eSStefan Eßer	fi
93550696a6eSStefan Eßer
9363aa99676SStefan Eßerelse
93750696a6eSStefan Eßer	install_man_prereqs=""
9383aa99676SStefan Eßer	uninstall_man_prereqs=""
9393aa99676SStefan Eßerfi
9403aa99676SStefan Eßer
9413aa99676SStefan Eßerif [ "$nls" -ne 0 ]; then
9423aa99676SStefan Eßer
9433aa99676SStefan Eßer	set +e
9443aa99676SStefan Eßer
9453aa99676SStefan Eßer	printf 'Testing NLS...\n'
9463aa99676SStefan Eßer
9473aa99676SStefan Eßer	flags="-DBC_ENABLE_NLS=1 -DBC_ENABLED=$bc -DDC_ENABLED=$dc"
9483aa99676SStefan Eßer	flags="$flags -DBC_ENABLE_HISTORY=$hist"
9493aa99676SStefan Eßer	flags="$flags -DBC_ENABLE_EXTRA_MATH=$extra_math -I./include/"
9503aa99676SStefan Eßer	flags="$flags -D_POSIX_C_SOURCE=200809L -D_XOPEN_SOURCE=700"
9513aa99676SStefan Eßer
9523aa99676SStefan Eßer	"$CC" $CPPFLAGS $CFLAGS $flags -c "src/vm.c" -o "$scriptdir/vm.o" > /dev/null 2>&1
9533aa99676SStefan Eßer
9543aa99676SStefan Eßer	err="$?"
9553aa99676SStefan Eßer
9563aa99676SStefan Eßer	rm -rf "$scriptdir/vm.o"
9573aa99676SStefan Eßer
9583aa99676SStefan Eßer	# If this errors, it is probably because of building on Windows,
9593aa99676SStefan Eßer	# and NLS is not supported on Windows, so disable it.
9603aa99676SStefan Eßer	if [ "$err" -ne 0 ]; then
9613aa99676SStefan Eßer		printf 'NLS does not work.\n'
9623aa99676SStefan Eßer		if [ $force -eq 0 ]; then
9633aa99676SStefan Eßer			printf 'Disabling NLS...\n\n'
9643aa99676SStefan Eßer			nls=0
9653aa99676SStefan Eßer		else
9663aa99676SStefan Eßer			printf 'Forcing NLS...\n\n'
9673aa99676SStefan Eßer		fi
9683aa99676SStefan Eßer	else
9693aa99676SStefan Eßer		printf 'NLS works.\n\n'
9703aa99676SStefan Eßer
9713aa99676SStefan Eßer		printf 'Testing gencat...\n'
9723aa99676SStefan Eßer		gencat "$scriptdir/en_US.cat" "$scriptdir/locales/en_US.msg" > /dev/null 2>&1
9733aa99676SStefan Eßer
9743aa99676SStefan Eßer		err="$?"
9753aa99676SStefan Eßer
9763aa99676SStefan Eßer		rm -rf "$scriptdir/en_US.cat"
9773aa99676SStefan Eßer
9783aa99676SStefan Eßer		if [ "$err" -ne 0 ]; then
9793aa99676SStefan Eßer			printf 'gencat does not work.\n'
9803aa99676SStefan Eßer			if [ $force -eq 0 ]; then
9813aa99676SStefan Eßer				printf 'Disabling NLS...\n\n'
9823aa99676SStefan Eßer				nls=0
9833aa99676SStefan Eßer			else
9843aa99676SStefan Eßer				printf 'Forcing NLS...\n\n'
9853aa99676SStefan Eßer			fi
9863aa99676SStefan Eßer		else
9873aa99676SStefan Eßer
9883aa99676SStefan Eßer			printf 'gencat works.\n\n'
9893aa99676SStefan Eßer
9903aa99676SStefan Eßer			if [ "$HOSTCC" != "$CC" ]; then
9913aa99676SStefan Eßer				printf 'Cross-compile detected.\n\n'
9923aa99676SStefan Eßer				printf 'WARNING: Catalog files generated with gencat may not be portable\n'
9933aa99676SStefan Eßer				printf '         across different architectures.\n\n'
9943aa99676SStefan Eßer			fi
9953aa99676SStefan Eßer
9963aa99676SStefan Eßer			if [ -z "$NLSPATH" ]; then
9973aa99676SStefan Eßer				NLSPATH="/usr/share/locale/%L/%N"
9983aa99676SStefan Eßer			fi
9993aa99676SStefan Eßer
10003aa99676SStefan Eßer			install_locales_prereqs=" install_locales"
10013aa99676SStefan Eßer			uninstall_locales_prereqs=" uninstall_locales"
10023aa99676SStefan Eßer
10033aa99676SStefan Eßer		fi
10043aa99676SStefan Eßer
10053aa99676SStefan Eßer	fi
10063aa99676SStefan Eßer
10073aa99676SStefan Eßer	set -e
10083aa99676SStefan Eßer
10093aa99676SStefan Eßerelse
10103aa99676SStefan Eßer	install_locales_prereqs=""
10113aa99676SStefan Eßer	uninstall_locales_prereqs=""
1012cf7becd2SStefan Eßer	all_locales=0
1013cf7becd2SStefan Eßerfi
1014cf7becd2SStefan Eßer
1015cf7becd2SStefan Eßerif [ "$nls" -ne 0 ] && [ "$all_locales" -ne 0 ]; then
1016cf7becd2SStefan Eßer	install_locales="\$(LOCALE_INSTALL) -l \$(NLSPATH) \$(MAIN_EXEC) \$(DESTDIR)"
1017cf7becd2SStefan Eßerelse
1018cf7becd2SStefan Eßer	install_locales="\$(LOCALE_INSTALL) \$(NLSPATH) \$(MAIN_EXEC) \$(DESTDIR)"
10193aa99676SStefan Eßerfi
10203aa99676SStefan Eßer
10213aa99676SStefan Eßerif [ "$hist" -eq 1 ]; then
10223aa99676SStefan Eßer
10233aa99676SStefan Eßer	set +e
10243aa99676SStefan Eßer
10253aa99676SStefan Eßer	printf 'Testing history...\n'
10263aa99676SStefan Eßer
10273aa99676SStefan Eßer	flags="-DBC_ENABLE_HISTORY=1 -DBC_ENABLED=$bc -DDC_ENABLED=$dc"
102850696a6eSStefan Eßer	flags="$flags -DBC_ENABLE_NLS=$nls -DBC_ENABLE_LIBRARY=0"
10293aa99676SStefan Eßer	flags="$flags -DBC_ENABLE_EXTRA_MATH=$extra_math -I./include/"
10303aa99676SStefan Eßer	flags="$flags -D_POSIX_C_SOURCE=200809L -D_XOPEN_SOURCE=700"
10313aa99676SStefan Eßer
103250696a6eSStefan Eßer	"$CC" $CPPFLAGS $CFLAGS $flags -c "src/history.c" -o "$scriptdir/history.o" > /dev/null 2>&1
10333aa99676SStefan Eßer
10343aa99676SStefan Eßer	err="$?"
10353aa99676SStefan Eßer
10363aa99676SStefan Eßer	rm -rf "$scriptdir/history.o"
10373aa99676SStefan Eßer
10383aa99676SStefan Eßer	# If this errors, it is probably because of building on Windows,
10393aa99676SStefan Eßer	# and history is not supported on Windows, so disable it.
10403aa99676SStefan Eßer	if [ "$err" -ne 0 ]; then
10413aa99676SStefan Eßer		printf 'History does not work.\n'
10423aa99676SStefan Eßer		if [ $force -eq 0 ]; then
10433aa99676SStefan Eßer			printf 'Disabling history...\n\n'
10443aa99676SStefan Eßer			hist=0
10453aa99676SStefan Eßer		else
10463aa99676SStefan Eßer			printf 'Forcing history...\n\n'
10473aa99676SStefan Eßer		fi
10483aa99676SStefan Eßer	else
10493aa99676SStefan Eßer		printf 'History works.\n\n'
10503aa99676SStefan Eßer	fi
10513aa99676SStefan Eßer
10523aa99676SStefan Eßer	set -e
10533aa99676SStefan Eßer
10543aa99676SStefan Eßerfi
10553aa99676SStefan Eßer
105650696a6eSStefan Eßerif [ "$library" -eq 1 ]; then
105750696a6eSStefan Eßer	bc_lib=""
105850696a6eSStefan Eßerfi
105950696a6eSStefan Eßer
106050696a6eSStefan Eßerif [ "$extra_math" -eq 1 ] && [ "$bc" -ne 0 ] && [ "$library" -eq 0 ]; then
10613aa99676SStefan Eßer	BC_LIB2_O="\$(GEN_DIR)/lib2.o"
10623aa99676SStefan Eßerelse
10633aa99676SStefan Eßer	BC_LIB2_O=""
10643aa99676SStefan Eßerfi
10653aa99676SStefan Eßer
10663aa99676SStefan EßerGEN="strgen"
10673aa99676SStefan EßerGEN_EXEC_TARGET="\$(HOSTCC) \$(HOSTCFLAGS) -o \$(GEN_EXEC) \$(GEN_C)"
10683aa99676SStefan EßerCLEAN_PREREQS=" clean_gen"
10693aa99676SStefan Eßer
10703aa99676SStefan Eßerif [ -z "${GEN_HOST+set}" ]; then
10713aa99676SStefan Eßer	GEN_HOST=1
10723aa99676SStefan Eßerelse
10733aa99676SStefan Eßer	if [ "$GEN_HOST" -eq 0 ]; then
10743aa99676SStefan Eßer		GEN="strgen.sh"
10753aa99676SStefan Eßer		GEN_EXEC_TARGET="@printf 'Do not need to build gen/strgen.c\\\\n'"
10763aa99676SStefan Eßer		CLEAN_PREREQS=""
10773aa99676SStefan Eßer	fi
10783aa99676SStefan Eßerfi
10793aa99676SStefan Eßer
10803aa99676SStefan Eßermanpage_args=""
108110328f8bSStefan Eßerunneeded=""
108210328f8bSStefan Eßerheaders="\$(HEADERS)"
10833aa99676SStefan Eßer
10843aa99676SStefan Eßerif [ "$extra_math" -eq 0 ]; then
10853aa99676SStefan Eßer	manpage_args="E"
108610328f8bSStefan Eßer	unneeded="$unneeded rand.c"
108710328f8bSStefan Eßerelse
108810328f8bSStefan Eßer	headers="$headers \$(EXTRA_MATH_HEADERS)"
10893aa99676SStefan Eßerfi
10903aa99676SStefan Eßer
10913aa99676SStefan Eßerif [ "$hist" -eq 0 ]; then
10923aa99676SStefan Eßer	manpage_args="${manpage_args}H"
109310328f8bSStefan Eßer	unneeded="$unneeded history.c"
109410328f8bSStefan Eßerelse
109510328f8bSStefan Eßer	headers="$headers \$(HISTORY_HEADERS)"
10963aa99676SStefan Eßerfi
10973aa99676SStefan Eßer
10983aa99676SStefan Eßerif [ "$nls" -eq 0 ]; then
10993aa99676SStefan Eßer	manpage_args="${manpage_args}N"
11003aa99676SStefan Eßerfi
11013aa99676SStefan Eßer
11023aa99676SStefan Eßerif [ "$prompt" -eq 0 ]; then
11033aa99676SStefan Eßer	manpage_args="${manpage_args}P"
11043aa99676SStefan Eßerfi
11053aa99676SStefan Eßer
110650696a6eSStefan Eßerif [ "$bc" -eq 0 ]; then
110750696a6eSStefan Eßer	unneeded="$unneeded bc.c bc_lex.c bc_parse.c"
110810328f8bSStefan Eßerelse
110910328f8bSStefan Eßer	headers="$headers \$(BC_HEADERS)"
111050696a6eSStefan Eßerfi
111150696a6eSStefan Eßer
111250696a6eSStefan Eßerif [ "$dc" -eq 0 ]; then
111350696a6eSStefan Eßer	unneeded="$unneeded dc.c dc_lex.c dc_parse.c"
111410328f8bSStefan Eßerelse
111510328f8bSStefan Eßer	headers="$headers \$(DC_HEADERS)"
111650696a6eSStefan Eßerfi
111750696a6eSStefan Eßer
111850696a6eSStefan Eßerif [ "$library" -ne 0 ]; then
111950696a6eSStefan Eßer	unneeded="$unneeded args.c opt.c read.c file.c main.c"
112050696a6eSStefan Eßer	unneeded="$unneeded lang.c lex.c parse.c program.c"
112150696a6eSStefan Eßer	unneeded="$unneeded bc.c bc_lex.c bc_parse.c"
112250696a6eSStefan Eßer	unneeded="$unneeded dc.c dc_lex.c dc_parse.c"
112310328f8bSStefan Eßer	headers="$headers \$(LIBRARY_HEADERS)"
112450696a6eSStefan Eßerelse
112550696a6eSStefan Eßer	unneeded="$unneeded library.c"
112650696a6eSStefan Eßerfi
112750696a6eSStefan Eßer
112810328f8bSStefan Eßerif [ "$manpage_args" = "" ]; then
112910328f8bSStefan Eßer	manpage_args="A"
113010328f8bSStefan Eßerfi
113110328f8bSStefan Eßer
113210328f8bSStefan Eßerif [ "$vg" -ne 0 ]; then
113310328f8bSStefan Eßer	memcheck=1
113410328f8bSStefan Eßerfi
113510328f8bSStefan Eßer
113610328f8bSStefan Eßerbc_tests=$(gen_test_targets bc)
113710328f8bSStefan Eßerbc_script_tests=$(gen_script_test_targets bc)
113810328f8bSStefan Eßerdc_tests=$(gen_test_targets dc)
113910328f8bSStefan Eßerdc_script_tests=$(gen_script_test_targets dc)
114010328f8bSStefan Eßer
11413aa99676SStefan Eßer# Print out the values; this is for debugging.
11423aa99676SStefan Eßerif [ "$bc" -ne 0 ]; then
11433aa99676SStefan Eßer	printf 'Building bc\n'
11443aa99676SStefan Eßerelse
11453aa99676SStefan Eßer	printf 'Not building bc\n'
11463aa99676SStefan Eßerfi
11473aa99676SStefan Eßerif [ "$dc" -ne 0 ]; then
11483aa99676SStefan Eßer	printf 'Building dc\n'
11493aa99676SStefan Eßerelse
11503aa99676SStefan Eßer	printf 'Not building dc\n'
11513aa99676SStefan Eßerfi
11523aa99676SStefan Eßerprintf '\n'
115350696a6eSStefan Eßerprintf 'BC_ENABLE_LIBRARY=%s\n\n' "$library"
11543aa99676SStefan Eßerprintf 'BC_ENABLE_HISTORY=%s\n' "$hist"
11553aa99676SStefan Eßerprintf 'BC_ENABLE_EXTRA_MATH=%s\n' "$extra_math"
11563aa99676SStefan Eßerprintf 'BC_ENABLE_NLS=%s\n' "$nls"
11573aa99676SStefan Eßerprintf 'BC_ENABLE_PROMPT=%s\n' "$prompt"
115810328f8bSStefan Eßerprintf 'BC_ENABLE_AFL=%s\n' "$fuzz"
11593aa99676SStefan Eßerprintf '\n'
11603aa99676SStefan Eßerprintf 'BC_NUM_KARATSUBA_LEN=%s\n' "$karatsuba_len"
11613aa99676SStefan Eßerprintf '\n'
11623aa99676SStefan Eßerprintf 'CC=%s\n' "$CC"
11633aa99676SStefan Eßerprintf 'CFLAGS=%s\n' "$CFLAGS"
11643aa99676SStefan Eßerprintf 'HOSTCC=%s\n' "$HOSTCC"
11653aa99676SStefan Eßerprintf 'HOSTCFLAGS=%s\n' "$HOSTCFLAGS"
11663aa99676SStefan Eßerprintf 'CPPFLAGS=%s\n' "$CPPFLAGS"
11673aa99676SStefan Eßerprintf 'LDFLAGS=%s\n' "$LDFLAGS"
11683aa99676SStefan Eßerprintf 'PREFIX=%s\n' "$PREFIX"
11693aa99676SStefan Eßerprintf 'BINDIR=%s\n' "$BINDIR"
117050696a6eSStefan Eßerprintf 'INCLUDEDIR=%s\n' "$INCLUDEDIR"
117150696a6eSStefan Eßerprintf 'LIBDIR=%s\n' "$LIBDIR"
11723aa99676SStefan Eßerprintf 'DATAROOTDIR=%s\n' "$DATAROOTDIR"
11733aa99676SStefan Eßerprintf 'DATADIR=%s\n' "$DATADIR"
11743aa99676SStefan Eßerprintf 'MANDIR=%s\n' "$MANDIR"
11753aa99676SStefan Eßerprintf 'MAN1DIR=%s\n' "$MAN1DIR"
117650696a6eSStefan Eßerprintf 'MAN3DIR=%s\n' "$MAN3DIR"
11773aa99676SStefan Eßerprintf 'NLSPATH=%s\n' "$NLSPATH"
11783aa99676SStefan Eßerprintf 'EXECSUFFIX=%s\n' "$EXECSUFFIX"
11793aa99676SStefan Eßerprintf 'EXECPREFIX=%s\n' "$EXECPREFIX"
11803aa99676SStefan Eßerprintf 'DESTDIR=%s\n' "$DESTDIR"
11813aa99676SStefan Eßerprintf 'LONG_BIT=%s\n' "$LONG_BIT"
11823aa99676SStefan Eßerprintf 'GEN_HOST=%s\n' "$GEN_HOST"
11833aa99676SStefan Eßerprintf 'GEN_EMU=%s\n' "$GEN_EMU"
11843aa99676SStefan Eßer
11853aa99676SStefan Eßercontents=$(cat "$scriptdir/Makefile.in")
11863aa99676SStefan Eßer
11873aa99676SStefan Eßerneedle="WARNING"
11883aa99676SStefan Eßerreplacement='*** WARNING: Autogenerated from Makefile.in. DO NOT MODIFY ***'
11893aa99676SStefan Eßer
11903aa99676SStefan Eßercontents=$(replace "$contents" "$needle" "$replacement")
11913aa99676SStefan Eßer
119250696a6eSStefan Eßerif [ "$unneeded" = "" ]; then
119310328f8bSStefan Eßer	unneeded="library.c"
119450696a6eSStefan Eßerfi
11953aa99676SStefan Eßer
119610328f8bSStefan Eßercontents=$(gen_file_list "$contents" $unneeded)
119710328f8bSStefan Eßer
119810328f8bSStefan EßerSRC_TARGETS=""
119910328f8bSStefan Eßer
120010328f8bSStefan Eßersrc_files=$(find_src_files $unneeded)
120110328f8bSStefan Eßer
120210328f8bSStefan Eßerfor f in $src_files; do
120310328f8bSStefan Eßer	o=$(replace_ext "$f" "c" "o")
120410328f8bSStefan Eßer	SRC_TARGETS=$(printf '%s\n\n%s: %s %s\n\t$(CC) $(CFLAGS) -o %s -c %s\n' \
120510328f8bSStefan Eßer		"$SRC_TARGETS" "$o" "$headers" "$f" "$o" "$f")
120610328f8bSStefan Eßerdone
120710328f8bSStefan Eßer
120810328f8bSStefan Eßercontents=$(replace "$contents" "HEADERS" "$headers")
120910328f8bSStefan Eßer
12103aa99676SStefan Eßercontents=$(replace "$contents" "BC_ENABLED" "$bc")
12113aa99676SStefan Eßercontents=$(replace "$contents" "DC_ENABLED" "$dc")
121210328f8bSStefan Eßer
121310328f8bSStefan Eßercontents=$(replace "$contents" "BC_ALL_TESTS" "$bc_test")
121410328f8bSStefan Eßercontents=$(replace "$contents" "BC_TESTS" "$bc_tests")
121510328f8bSStefan Eßercontents=$(replace "$contents" "BC_SCRIPT_TESTS" "$bc_script_tests")
121610328f8bSStefan Eßercontents=$(replace "$contents" "BC_TEST_EXEC" "$bc_test_exec")
121710328f8bSStefan Eßercontents=$(replace "$contents" "TIMECONST_ALL_TESTS" "$timeconst")
121810328f8bSStefan Eßer
121910328f8bSStefan Eßercontents=$(replace "$contents" "DC_ALL_TESTS" "$dc_test")
122010328f8bSStefan Eßercontents=$(replace "$contents" "DC_TESTS" "$dc_tests")
122110328f8bSStefan Eßercontents=$(replace "$contents" "DC_SCRIPT_TESTS" "$dc_script_tests")
122210328f8bSStefan Eßercontents=$(replace "$contents" "DC_TEST_EXEC" "$dc_test_exec")
12233aa99676SStefan Eßer
1224*7e5c51e5SStefan Eßercontents=$(replace "$contents" "BUILD_TYPE" "$manpage_args")
1225*7e5c51e5SStefan Eßer
122650696a6eSStefan Eßercontents=$(replace "$contents" "LIBRARY" "$library")
12273aa99676SStefan Eßercontents=$(replace "$contents" "HISTORY" "$hist")
12283aa99676SStefan Eßercontents=$(replace "$contents" "EXTRA_MATH" "$extra_math")
12293aa99676SStefan Eßercontents=$(replace "$contents" "NLS" "$nls")
12303aa99676SStefan Eßercontents=$(replace "$contents" "PROMPT" "$prompt")
123110328f8bSStefan Eßercontents=$(replace "$contents" "FUZZ" "$fuzz")
123210328f8bSStefan Eßercontents=$(replace "$contents" "MEMCHECK" "$memcheck")
123310328f8bSStefan Eßer
12343aa99676SStefan Eßercontents=$(replace "$contents" "BC_LIB_O" "$bc_lib")
12353aa99676SStefan Eßercontents=$(replace "$contents" "BC_HELP_O" "$bc_help")
12363aa99676SStefan Eßercontents=$(replace "$contents" "DC_HELP_O" "$dc_help")
12373aa99676SStefan Eßercontents=$(replace "$contents" "BC_LIB2_O" "$BC_LIB2_O")
12383aa99676SStefan Eßercontents=$(replace "$contents" "KARATSUBA_LEN" "$karatsuba_len")
12393aa99676SStefan Eßer
12403aa99676SStefan Eßercontents=$(replace "$contents" "NLSPATH" "$NLSPATH")
12413aa99676SStefan Eßercontents=$(replace "$contents" "DESTDIR" "$destdir")
12423aa99676SStefan Eßercontents=$(replace "$contents" "EXECSUFFIX" "$EXECSUFFIX")
12433aa99676SStefan Eßercontents=$(replace "$contents" "EXECPREFIX" "$EXECPREFIX")
12443aa99676SStefan Eßercontents=$(replace "$contents" "BINDIR" "$BINDIR")
124550696a6eSStefan Eßercontents=$(replace "$contents" "INCLUDEDIR" "$INCLUDEDIR")
124650696a6eSStefan Eßercontents=$(replace "$contents" "LIBDIR" "$LIBDIR")
12473aa99676SStefan Eßercontents=$(replace "$contents" "MAN1DIR" "$MAN1DIR")
124850696a6eSStefan Eßercontents=$(replace "$contents" "MAN3DIR" "$MAN3DIR")
12493aa99676SStefan Eßercontents=$(replace "$contents" "CFLAGS" "$CFLAGS")
12503aa99676SStefan Eßercontents=$(replace "$contents" "HOSTCFLAGS" "$HOSTCFLAGS")
12513aa99676SStefan Eßercontents=$(replace "$contents" "CPPFLAGS" "$CPPFLAGS")
12523aa99676SStefan Eßercontents=$(replace "$contents" "LDFLAGS" "$LDFLAGS")
12533aa99676SStefan Eßercontents=$(replace "$contents" "CC" "$CC")
12543aa99676SStefan Eßercontents=$(replace "$contents" "HOSTCC" "$HOSTCC")
12553aa99676SStefan Eßercontents=$(replace "$contents" "COVERAGE_OUTPUT" "$COVERAGE_OUTPUT")
12563aa99676SStefan Eßercontents=$(replace "$contents" "COVERAGE_PREREQS" "$COVERAGE_PREREQS")
12573aa99676SStefan Eßercontents=$(replace "$contents" "INSTALL_PREREQS" "$install_prereqs")
125850696a6eSStefan Eßercontents=$(replace "$contents" "INSTALL_MAN_PREREQS" "$install_man_prereqs")
1259cf7becd2SStefan Eßercontents=$(replace "$contents" "INSTALL_LOCALES" "$install_locales")
12603aa99676SStefan Eßercontents=$(replace "$contents" "INSTALL_LOCALES_PREREQS" "$install_locales_prereqs")
12613aa99676SStefan Eßercontents=$(replace "$contents" "UNINSTALL_MAN_PREREQS" "$uninstall_man_prereqs")
12623aa99676SStefan Eßercontents=$(replace "$contents" "UNINSTALL_PREREQS" "$uninstall_prereqs")
12633aa99676SStefan Eßercontents=$(replace "$contents" "UNINSTALL_LOCALES_PREREQS" "$uninstall_locales_prereqs")
12643aa99676SStefan Eßer
126510328f8bSStefan Eßercontents=$(replace "$contents" "DEFAULT_TARGET" "$default_target")
126610328f8bSStefan Eßercontents=$(replace "$contents" "DEFAULT_TARGET_PREREQS" "$default_target_prereqs")
126710328f8bSStefan Eßercontents=$(replace "$contents" "DEFAULT_TARGET_CMD" "$default_target_cmd")
126810328f8bSStefan Eßercontents=$(replace "$contents" "SECOND_TARGET" "$second_target")
126910328f8bSStefan Eßercontents=$(replace "$contents" "SECOND_TARGET_PREREQS" "$second_target_prereqs")
127010328f8bSStefan Eßercontents=$(replace "$contents" "SECOND_TARGET_CMD" "$second_target_cmd")
127110328f8bSStefan Eßer
127250696a6eSStefan Eßercontents=$(replace "$contents" "ALL_PREREQ" "$ALL_PREREQ")
127310328f8bSStefan Eßercontents=$(replace "$contents" "BC_EXEC_PREREQ" "$bc_exec_prereq")
127410328f8bSStefan Eßercontents=$(replace "$contents" "BC_EXEC_CMD" "$bc_exec_cmd")
127510328f8bSStefan Eßercontents=$(replace "$contents" "DC_EXEC_PREREQ" "$dc_exec_prereq")
127610328f8bSStefan Eßercontents=$(replace "$contents" "DC_EXEC_CMD" "$dc_exec_cmd")
127750696a6eSStefan Eßer
12783aa99676SStefan Eßercontents=$(replace "$contents" "EXECUTABLES" "$executables")
12793aa99676SStefan Eßercontents=$(replace "$contents" "MAIN_EXEC" "$main_exec")
12803aa99676SStefan Eßercontents=$(replace "$contents" "EXEC" "$executable")
128150696a6eSStefan Eßercontents=$(replace "$contents" "TESTS" "$tests")
12823aa99676SStefan Eßer
12833aa99676SStefan Eßercontents=$(replace "$contents" "BC_TEST" "$bc_test")
12843aa99676SStefan Eßercontents=$(replace "$contents" "DC_TEST" "$dc_test")
12853aa99676SStefan Eßer
12863aa99676SStefan Eßercontents=$(replace "$contents" "VG_BC_TEST" "$vg_bc_test")
12873aa99676SStefan Eßercontents=$(replace "$contents" "VG_DC_TEST" "$vg_dc_test")
12883aa99676SStefan Eßer
12893aa99676SStefan Eßercontents=$(replace "$contents" "TIMECONST" "$timeconst")
12903aa99676SStefan Eßer
12913aa99676SStefan Eßercontents=$(replace "$contents" "KARATSUBA" "$karatsuba")
12923aa99676SStefan Eßercontents=$(replace "$contents" "KARATSUBA_TEST" "$karatsuba_test")
12933aa99676SStefan Eßer
12943aa99676SStefan Eßercontents=$(replace "$contents" "LONG_BIT" "$LONG_BIT")
12953aa99676SStefan Eßercontents=$(replace "$contents" "LONG_BIT_DEFINE" "$LONG_BIT_DEFINE")
12963aa99676SStefan Eßer
12973aa99676SStefan Eßercontents=$(replace "$contents" "GEN" "$GEN")
12983aa99676SStefan Eßercontents=$(replace "$contents" "GEN_EXEC_TARGET" "$GEN_EXEC_TARGET")
12993aa99676SStefan Eßercontents=$(replace "$contents" "CLEAN_PREREQS" "$CLEAN_PREREQS")
13003aa99676SStefan Eßercontents=$(replace "$contents" "GEN_EMU" "$GEN_EMU")
13013aa99676SStefan Eßer
130210328f8bSStefan Eßerprintf '%s\n%s\n\n' "$contents" "$SRC_TARGETS" > "$scriptdir/Makefile"
130310328f8bSStefan Eßer
130410328f8bSStefan Eßerif [ "$bc" -ne 0 ]; then
130510328f8bSStefan Eßer	gen_tests bc BC "$extra_math" "$time_tests" $bc_test_exec
130610328f8bSStefan Eßer	gen_script_tests bc "$extra_math" "$generate_tests" "$time_tests" $bc_test_exec
130710328f8bSStefan Eßerfi
130810328f8bSStefan Eßer
130910328f8bSStefan Eßerif [ "$dc" -ne 0 ]; then
131010328f8bSStefan Eßer	gen_tests dc DC "$extra_math" "$time_tests" $dc_test_exec
131110328f8bSStefan Eßer	gen_script_tests dc "$extra_math" "$generate_tests" "$time_tests" $dc_test_exec
131210328f8bSStefan Eßerfi
13133aa99676SStefan Eßer
13143aa99676SStefan Eßercd "$scriptdir"
13153aa99676SStefan Eßer
13163aa99676SStefan Eßercp -f manuals/bc/$manpage_args.1.md manuals/bc.1.md
13173aa99676SStefan Eßercp -f manuals/bc/$manpage_args.1 manuals/bc.1
13183aa99676SStefan Eßercp -f manuals/dc/$manpage_args.1.md manuals/dc.1.md
13193aa99676SStefan Eßercp -f manuals/dc/$manpage_args.1 manuals/dc.1
13203aa99676SStefan Eßer
13213aa99676SStefan Eßermake clean > /dev/null
1322