xref: /freebsd/contrib/bc/configure.sh (revision cf7becd216349b9c74c471b94df75b354399fcbc)
13aa99676SStefan Eßer#! /bin/sh
23aa99676SStefan Eßer#
33aa99676SStefan Eßer# SPDX-License-Identifier: BSD-2-Clause
43aa99676SStefan Eßer#
53aa99676SStefan Eßer# Copyright (c) 2018-2020 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
363aa99676SStefan Eßerusage() {
373aa99676SStefan Eßer
383aa99676SStefan Eßer	if [ $# -gt 0 ]; then
393aa99676SStefan Eßer
403aa99676SStefan Eßer		_usage_val=1
413aa99676SStefan Eßer
423aa99676SStefan Eßer		printf "%s\n\n" "$1"
433aa99676SStefan Eßer
443aa99676SStefan Eßer	else
453aa99676SStefan Eßer		_usage_val=0
463aa99676SStefan Eßer	fi
473aa99676SStefan Eßer
483aa99676SStefan Eßer	printf 'usage: %s -h\n' "$script"
493aa99676SStefan Eßer	printf '       %s --help\n' "$script"
50*cf7becd2SStefan Eßer	printf '       %s [-bD|-dB|-c] [-EfgGHlMNPT] [-O OPT_LEVEL] [-k KARATSUBA_LEN]\n' "$script"
513aa99676SStefan Eßer	printf '       %s \\\n' "$script"
523aa99676SStefan Eßer	printf '           [--bc-only --disable-dc|--dc-only --disable-bc|--coverage]      \\\n'
533aa99676SStefan Eßer	printf '           [--debug --disable-extra-math --disable-generated-tests]        \\\n'
543aa99676SStefan Eßer	printf '           [--disable-history --disable-man-pages --disable-nls]           \\\n'
55*cf7becd2SStefan Eßer	printf '           [--disable-prompt --disable-strip] [--install-all-locales]      \\\n'
563aa99676SStefan Eßer	printf '           [--opt=OPT_LEVEL] [--karatsuba-len=KARATSUBA_LEN]               \\\n'
573aa99676SStefan Eßer	printf '           [--prefix=PREFIX] [--bindir=BINDIR] [--datarootdir=DATAROOTDIR] \\\n'
583aa99676SStefan Eßer	printf '           [--datadir=DATADIR] [--mandir=MANDIR] [--man1dir=MAN1DIR]       \\\n'
593aa99676SStefan Eßer	printf '           [--force]                                                       \\\n'
603aa99676SStefan Eßer	printf '\n'
613aa99676SStefan Eßer	printf '    -b, --bc-only\n'
623aa99676SStefan Eßer	printf '        Build bc only. It is an error if "-d", "--dc-only", "-B", or "--disable-bc"\n'
633aa99676SStefan Eßer	printf '        are specified too.\n'
643aa99676SStefan Eßer	printf '    -B, --disable-bc\n'
653aa99676SStefan Eßer	printf '        Disable bc. It is an error if "-b", "--bc-only", "-D", or "--disable-dc"\n'
663aa99676SStefan Eßer	printf '        are specified too.\n'
673aa99676SStefan Eßer	printf '    -c, --coverage\n'
683aa99676SStefan Eßer	printf '        Generate test coverage code. Requires gcov and regcovr.\n'
693aa99676SStefan Eßer	printf '        It is an error if either "-b" ("-D") or "-d" ("-B") is specified.\n'
703aa99676SStefan Eßer	printf '        Requires a compiler that use gcc-compatible coverage options\n'
713aa99676SStefan Eßer	printf '    -d, --dc-only\n'
723aa99676SStefan Eßer	printf '        Build dc only. 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 '    -D, --disable-dc\n'
753aa99676SStefan Eßer	printf '        Disable dc. It is an error if "-d", "--dc-only" "-B", or "--disable-bc"\n'
763aa99676SStefan Eßer	printf '        are specified too.\n'
773aa99676SStefan Eßer	printf '    -E, --disable-extra-math\n'
783aa99676SStefan Eßer	printf '        Disable extra math. This includes: "$" operator (truncate to integer),\n'
793aa99676SStefan Eßer	printf '        "@" operator (set number of decimal places), and r(x, p) (rounding\n'
803aa99676SStefan Eßer	printf '        function). Additionally, this option disables the extra printing\n'
813aa99676SStefan Eßer	printf '        functions in the math library.\n'
823aa99676SStefan Eßer	printf '    -f, --force\n'
833aa99676SStefan Eßer	printf '        Force use of all enabled options, even if they do not work. This\n'
843aa99676SStefan Eßer	printf '        option is to allow the maintainer a way to test that certain options\n'
853aa99676SStefan Eßer	printf '        are not failing invisibly. (Development only.)'
863aa99676SStefan Eßer	printf '    -g, --debug\n'
873aa99676SStefan Eßer	printf '        Build in debug mode. Adds the "-g" flag, and if there are no\n'
883aa99676SStefan Eßer	printf '        other CFLAGS, and "-O" was not given, this also adds the "-O0"\n'
893aa99676SStefan Eßer	printf '        flag. If this flag is *not* given, "-DNDEBUG" is added to CPPFLAGS\n'
903aa99676SStefan Eßer	printf '        and a strip flag is added to the link stage.\n'
913aa99676SStefan Eßer	printf '    -G, --disable-generated-tests\n'
923aa99676SStefan Eßer	printf '        Disable generating tests. This is for platforms that do not have a\n'
933aa99676SStefan Eßer	printf '        GNU bc-compatible bc to generate tests.\n'
943aa99676SStefan Eßer	printf '    -h, --help\n'
953aa99676SStefan Eßer	printf '        Print this help message and exit.\n'
963aa99676SStefan Eßer	printf '    -H, --disable-history\n'
973aa99676SStefan Eßer	printf '        Disable history.\n'
983aa99676SStefan Eßer	printf '    -k KARATSUBA_LEN, --karatsuba-len KARATSUBA_LEN\n'
993aa99676SStefan Eßer	printf '        Set the karatsuba length to KARATSUBA_LEN (default is 64).\n'
1003aa99676SStefan Eßer	printf '        It is an error if KARATSUBA_LEN is not a number or is less than 16.\n'
101*cf7becd2SStefan Eßer	printf '    -l, --install-all-locales\n'
102*cf7becd2SStefan Eßer	printf '        Installs all locales, regardless of how many are on the system. This\n'
103*cf7becd2SStefan Eßer	printf '        option is useful for package maintainers who want to make sure that\n'
104*cf7becd2SStefan Eßer	printf '        a package contains all of the locales that end users might need.\n'
1053aa99676SStefan Eßer	printf '    -M, --disable-man-pages\n'
1063aa99676SStefan Eßer	printf '        Disable installing manpages.\n'
1073aa99676SStefan Eßer	printf '    -N, --disable-nls\n'
1083aa99676SStefan Eßer	printf '        Disable POSIX locale (NLS) support.\n'
1093aa99676SStefan Eßer	printf '    -O OPT_LEVEL, --opt OPT_LEVEL\n'
1103aa99676SStefan Eßer	printf '        Set the optimization level. This can also be included in the CFLAGS,\n'
1113aa99676SStefan Eßer	printf '        but it is provided, so maintainers can build optimized debug builds.\n'
1123aa99676SStefan Eßer	printf '        This is passed through to the compiler, so it must be supported.\n'
1133aa99676SStefan Eßer	printf '    -P, --disable-prompt\n'
1143aa99676SStefan Eßer	printf '        Disables the prompt in the built bc. The prompt will never show up,\n'
1153aa99676SStefan Eßer	printf '        or in other words, it will be permanently disabled and cannot be\n'
1163aa99676SStefan Eßer	printf '        enabled.\n'
1173aa99676SStefan Eßer	printf '    -T, --disable-strip\n'
1183aa99676SStefan Eßer	printf '        Disable stripping symbols from the compiled binary or binaries.\n'
1193aa99676SStefan Eßer	printf '        Stripping symbols only happens when debug mode is off.\n'
1203aa99676SStefan Eßer	printf '    --prefix PREFIX\n'
1213aa99676SStefan Eßer	printf '        The prefix to install to. Overrides "$PREFIX" if it exists.\n'
1223aa99676SStefan Eßer	printf '        If PREFIX is "/usr", install path will be "/usr/bin".\n'
1233aa99676SStefan Eßer	printf '        Default is "/usr/local".\n'
1243aa99676SStefan Eßer	printf '    --bindir BINDIR\n'
1253aa99676SStefan Eßer	printf '        The directory to install binaries. Overrides "$BINDIR" if it exists.\n'
1263aa99676SStefan Eßer	printf '        Default is "$PREFIX/bin".\n'
1273aa99676SStefan Eßer	printf '    --datarootdir DATAROOTDIR\n'
1283aa99676SStefan Eßer	printf '        The root location for data files. Overrides "$DATAROOTDIR" if it exists.\n'
1293aa99676SStefan Eßer	printf '        Default is "$PREFIX/share".\n'
1303aa99676SStefan Eßer	printf '    --datadir DATADIR\n'
1313aa99676SStefan Eßer	printf '        The location for data files. Overrides "$DATADIR" if it exists.\n'
1323aa99676SStefan Eßer	printf '        Default is "$DATAROOTDIR".\n'
1333aa99676SStefan Eßer	printf '    --mandir MANDIR\n'
1343aa99676SStefan Eßer	printf '        The location to install manpages to. Overrides "$MANDIR" if it exists.\n'
1353aa99676SStefan Eßer	printf '        Default is "$DATADIR/man".\n'
1363aa99676SStefan Eßer	printf '    --man1dir MAN1DIR\n'
1373aa99676SStefan Eßer	printf '        The location to install Section 1 manpages to. Overrides "$MAN1DIR" if\n'
1383aa99676SStefan Eßer	printf '        it exists. Default is "$MANDIR/man1".\n'
1393aa99676SStefan Eßer	printf '\n'
1403aa99676SStefan Eßer	printf 'In addition, the following environment variables are used:\n'
1413aa99676SStefan Eßer	printf '\n'
1423aa99676SStefan Eßer	printf '    CC           C compiler. Must be compatible with POSIX c99. If there is a\n'
1433aa99676SStefan Eßer	printf '                 space in the basename of the compiler, the items after the\n'
1443aa99676SStefan Eßer	printf '                 first space are assumed to be compiler flags, and in that case,\n'
1453aa99676SStefan Eßer	printf '                 the flags are automatically moved into CFLAGS. Default is\n'
1463aa99676SStefan Eßer	printf '                 "c99".\n'
1473aa99676SStefan Eßer	printf '    HOSTCC       Host C compiler. Must be compatible with POSIX c99. If there is\n'
1483aa99676SStefan Eßer	printf '                 a space in the basename of the compiler, the items after the\n'
1493aa99676SStefan Eßer	printf '                 first space are assumed to be compiler flags, and in the case,\n'
1503aa99676SStefan Eßer	printf '                 the flags are automatically moved into HOSTCFLAGS. Default is\n'
1513aa99676SStefan Eßer	printf '                 "$CC".\n'
1523aa99676SStefan Eßer	printf '    HOST_CC      Same as HOSTCC. If HOSTCC also exists, it is used.\n'
1533aa99676SStefan Eßer	printf '    CFLAGS       C compiler flags.\n'
1543aa99676SStefan Eßer	printf '    HOSTCFLAGS   CFLAGS for HOSTCC. Default is "$CFLAGS".\n'
1553aa99676SStefan Eßer	printf '    HOST_CFLAGS  Same as HOST_CFLAGS. If HOST_CFLAGS also exists, it is used.\n'
1563aa99676SStefan Eßer	printf '    CPPFLAGS     C preprocessor flags. Default is "".\n'
1573aa99676SStefan Eßer	printf '    LDFLAGS      Linker flags. Default is "".\n'
1583aa99676SStefan Eßer	printf '    PREFIX       The prefix to install to. Default is "/usr/local".\n'
1593aa99676SStefan Eßer	printf '                 If PREFIX is "/usr", install path will be "/usr/bin".\n'
1603aa99676SStefan Eßer	printf '    BINDIR       The directory to install binaries. Default is "$PREFIX/bin".\n'
1613aa99676SStefan Eßer	printf '    DATAROOTDIR  The root location for data files. Default is "$PREFIX/share".\n'
1623aa99676SStefan Eßer	printf '    DATADIR      The location for data files. Default is "$DATAROOTDIR".\n'
1633aa99676SStefan Eßer	printf '    MANDIR       The location to install manpages to. Default is "$DATADIR/man".\n'
1643aa99676SStefan Eßer	printf '    MAN1DIR      The location to install Section 1 manpages to. Default is\n'
1653aa99676SStefan Eßer	printf '                 "$MANDIR/man1".\n'
1663aa99676SStefan Eßer	printf '    NLSPATH      The location to install locale catalogs to. Must be an absolute\n'
1673aa99676SStefan Eßer	printf '                 path (or contain one). This is treated the same as the POSIX\n'
1683aa99676SStefan Eßer	printf '                 definition of $NLSPATH (see POSIX environment variables for\n'
1693aa99676SStefan Eßer	printf '                 more information). Default is "/usr/share/locale/%%L/%%N".\n'
1703aa99676SStefan Eßer	printf '    EXECSUFFIX   The suffix to append to the executable names, used to not\n'
1713aa99676SStefan Eßer	printf '                 interfere with other installed bc executables. Default is "".\n'
1723aa99676SStefan Eßer	printf '    EXECPREFIX   The prefix to append to the executable names, used to not\n'
1733aa99676SStefan Eßer	printf '                 interfere with other installed bc executables. Default is "".\n'
1743aa99676SStefan Eßer	printf '    DESTDIR      For package creation. Default is "". If it is empty when\n'
1753aa99676SStefan Eßer	printf '                 `%s` is run, it can also be passed to `make install`\n' "$script"
1763aa99676SStefan Eßer	printf '                 later as an environment variable. If both are specified,\n'
1773aa99676SStefan Eßer	printf '                 the one given to `%s` takes precedence.\n' "$script"
1783aa99676SStefan Eßer	printf '    LONG_BIT     The number of bits in a C `long` type. This is mostly for the\n'
1793aa99676SStefan Eßer	printf '                 embedded space since this `bc` uses `long`s internally for\n'
1803aa99676SStefan Eßer	printf '                 overflow checking. In C99, a `long` is required to be 32 bits.\n'
1813aa99676SStefan Eßer	printf '                 For most normal desktop systems, setting this is unnecessary,\n'
1823aa99676SStefan Eßer	printf '                 except that 32-bit platforms with 64-bit longs may want to set\n'
1833aa99676SStefan Eßer	printf '                 it to `32`. Default is the default of `LONG_BIT` for the target\n'
1843aa99676SStefan Eßer	printf '                 platform. Minimum allowed is `32`. It is a build time error if\n'
1853aa99676SStefan Eßer	printf '                 the specified value of `LONG_BIT` is greater than the default\n'
1863aa99676SStefan Eßer	printf '                 value of `LONG_BIT` for the target platform.\n'
1873aa99676SStefan Eßer	printf '    GEN_HOST     Whether to use `gen/strgen.c`, instead of `gen/strgen.sh`, to\n'
1883aa99676SStefan Eßer	printf '                 produce the C files that contain the help texts as well as the\n'
1893aa99676SStefan Eßer	printf '                 math libraries. By default, `gen/strgen.c` is used, compiled by\n'
1903aa99676SStefan Eßer	printf '                 "$HOSTCC" and run on the host machine. Using `gen/strgen.sh`\n'
1913aa99676SStefan Eßer	printf '                 removes the need to compile and run an executable on the host\n'
1923aa99676SStefan Eßer	printf '                 machine since `gen/strgen.sh` is a POSIX shell script. However,\n'
1933aa99676SStefan Eßer	printf '                 `gen/lib2.bc` is perilously close to 4095 characters, the max\n'
1943aa99676SStefan Eßer	printf '                 supported length of a string literal in C99 (and it could be\n'
1953aa99676SStefan Eßer	printf '                 added to in the future), and `gen/strgen.sh` generates a string\n'
1963aa99676SStefan Eßer	printf '                 literal instead of an array, as `gen/strgen.c` does. For most\n'
1973aa99676SStefan Eßer	printf '                 production-ready compilers, this limit probably is not\n'
1983aa99676SStefan Eßer	printf '                 enforced, but it could be. Both options are still available for\n'
1993aa99676SStefan Eßer	printf '                 this reason. If you are sure your compiler does not have the\n'
2003aa99676SStefan Eßer	printf '                 limit and do not want to compile and run a binary on the host\n'
2013aa99676SStefan Eßer	printf '                 machine, set this variable to "0". Any other value, or a\n'
2023aa99676SStefan Eßer	printf '                 non-existent value, will cause the build system to compile and\n'
2033aa99676SStefan Eßer	printf '                 run `gen/strgen.c`. Default is "".\n'
2043aa99676SStefan Eßer	printf '    GEN_EMU      Emulator to run string generator code under (leave empty if not\n'
2053aa99676SStefan Eßer	printf '                 necessary). This is not necessary when using `gen/strgen.sh`.\n'
2063aa99676SStefan Eßer	printf '                 Default is "".\n'
2073aa99676SStefan Eßer	printf '\n'
2083aa99676SStefan Eßer	printf 'WARNING: even though `configure.sh` supports both option types, short and\n'
2093aa99676SStefan Eßer	printf 'long, it does not support handling both at the same time. Use only one type.\n'
2103aa99676SStefan Eßer
2113aa99676SStefan Eßer	exit "$_usage_val"
2123aa99676SStefan Eßer}
2133aa99676SStefan Eßer
2143aa99676SStefan Eßerreplace_ext() {
2153aa99676SStefan Eßer
2163aa99676SStefan Eßer	if [ "$#" -ne 3 ]; then
2173aa99676SStefan Eßer		err_exit "Invalid number of args to $0"
2183aa99676SStefan Eßer	fi
2193aa99676SStefan Eßer
2203aa99676SStefan Eßer	_replace_ext_file="$1"
2213aa99676SStefan Eßer	_replace_ext_ext1="$2"
2223aa99676SStefan Eßer	_replace_ext_ext2="$3"
2233aa99676SStefan Eßer
2243aa99676SStefan Eßer	_replace_ext_result=${_replace_ext_file%.$_replace_ext_ext1}.$_replace_ext_ext2
2253aa99676SStefan Eßer
2263aa99676SStefan Eßer	printf '%s\n' "$_replace_ext_result"
2273aa99676SStefan Eßer}
2283aa99676SStefan Eßer
2293aa99676SStefan Eßerreplace_exts() {
2303aa99676SStefan Eßer
2313aa99676SStefan Eßer	if [ "$#" -ne 3 ]; then
2323aa99676SStefan Eßer		err_exit "Invalid number of args to $0"
2333aa99676SStefan Eßer	fi
2343aa99676SStefan Eßer
2353aa99676SStefan Eßer	_replace_exts_files="$1"
2363aa99676SStefan Eßer	_replace_exts_ext1="$2"
2373aa99676SStefan Eßer	_replace_exts_ext2="$3"
2383aa99676SStefan Eßer
2393aa99676SStefan Eßer	for _replace_exts_file in $_replace_exts_files; do
2403aa99676SStefan Eßer		_replace_exts_new_name=$(replace_ext "$_replace_exts_file" "$_replace_exts_ext1" "$_replace_exts_ext2")
2413aa99676SStefan Eßer		_replace_exts_result="$_replace_exts_result $_replace_exts_new_name"
2423aa99676SStefan Eßer	done
2433aa99676SStefan Eßer
2443aa99676SStefan Eßer	printf '%s\n' "$_replace_exts_result"
2453aa99676SStefan Eßer}
2463aa99676SStefan Eßer
2473aa99676SStefan Eßerreplace() {
2483aa99676SStefan Eßer
2493aa99676SStefan Eßer	if [ "$#" -ne 3 ]; then
2503aa99676SStefan Eßer		err_exit "Invalid number of args to $0"
2513aa99676SStefan Eßer	fi
2523aa99676SStefan Eßer
2533aa99676SStefan Eßer	_replace_str="$1"
2543aa99676SStefan Eßer	_replace_needle="$2"
2553aa99676SStefan Eßer	_replace_replacement="$3"
2563aa99676SStefan Eßer
2573aa99676SStefan Eßer	substring_replace "$_replace_str" "%%$_replace_needle%%" "$_replace_replacement"
2583aa99676SStefan Eßer}
2593aa99676SStefan Eßer
2603aa99676SStefan Eßergen_file_lists() {
2613aa99676SStefan Eßer
2623aa99676SStefan Eßer	if [ "$#" -lt 3 ]; then
2633aa99676SStefan Eßer		err_exit "Invalid number of args to $0"
2643aa99676SStefan Eßer	fi
2653aa99676SStefan Eßer
2663aa99676SStefan Eßer	_gen_file_lists_contents="$1"
2673aa99676SStefan Eßer	shift
2683aa99676SStefan Eßer
2693aa99676SStefan Eßer	_gen_file_lists_filedir="$1"
2703aa99676SStefan Eßer	shift
2713aa99676SStefan Eßer
2723aa99676SStefan Eßer	_gen_file_lists_typ="$1"
2733aa99676SStefan Eßer	shift
2743aa99676SStefan Eßer
2753aa99676SStefan Eßer	# If there is an extra argument, and it
2763aa99676SStefan Eßer	# is zero, we keep the file lists empty.
2773aa99676SStefan Eßer	if [ "$#" -gt 0 ]; then
2783aa99676SStefan Eßer		_gen_file_lists_use="$1"
2793aa99676SStefan Eßer	else
2803aa99676SStefan Eßer		_gen_file_lists_use="1"
2813aa99676SStefan Eßer	fi
2823aa99676SStefan Eßer
2833aa99676SStefan Eßer	_gen_file_lists_needle_src="${_gen_file_lists_typ}SRC"
2843aa99676SStefan Eßer	_gen_file_lists_needle_obj="${_gen_file_lists_typ}OBJ"
2853aa99676SStefan Eßer	_gen_file_lists_needle_gcda="${_gen_file_lists_typ}GCDA"
2863aa99676SStefan Eßer	_gen_file_lists_needle_gcno="${_gen_file_lists_typ}GCNO"
2873aa99676SStefan Eßer
2883aa99676SStefan Eßer	if [ "$_gen_file_lists_use" -ne 0 ]; then
2893aa99676SStefan Eßer
2903aa99676SStefan Eßer		_gen_file_lists_replacement=$(cd "$_gen_file_lists_filedir" && find . ! -name . -prune -name "*.c" | cut -d/ -f2 | sed "s@^@$_gen_file_lists_filedir/@g" | tr '\n' ' ')
2913aa99676SStefan Eßer		_gen_file_lists_contents=$(replace "$_gen_file_lists_contents" "$_gen_file_lists_needle_src" "$_gen_file_lists_replacement")
2923aa99676SStefan Eßer
2933aa99676SStefan Eßer		_gen_file_lists_replacement=$(replace_exts "$_gen_file_lists_replacement" "c" "o")
2943aa99676SStefan Eßer		_gen_file_lists_contents=$(replace "$_gen_file_lists_contents" "$_gen_file_lists_needle_obj" "$_gen_file_lists_replacement")
2953aa99676SStefan Eßer
2963aa99676SStefan Eßer		_gen_file_lists_replacement=$(replace_exts "$_gen_file_lists_replacement" "o" "gcda")
2973aa99676SStefan Eßer		_gen_file_lists_contents=$(replace "$_gen_file_lists_contents" "$_gen_file_lists_needle_gcda" "$_gen_file_lists_replacement")
2983aa99676SStefan Eßer
2993aa99676SStefan Eßer		_gen_file_lists_replacement=$(replace_exts "$_gen_file_lists_replacement" "gcda" "gcno")
3003aa99676SStefan Eßer		_gen_file_lists_contents=$(replace "$_gen_file_lists_contents" "$_gen_file_lists_needle_gcno" "$_gen_file_lists_replacement")
3013aa99676SStefan Eßer
3023aa99676SStefan Eßer	else
3033aa99676SStefan Eßer		_gen_file_lists_contents=$(replace "$_gen_file_lists_contents" "$_gen_file_lists_needle_src" "")
3043aa99676SStefan Eßer		_gen_file_lists_contents=$(replace "$_gen_file_lists_contents" "$_gen_file_lists_needle_obj" "")
3053aa99676SStefan Eßer		_gen_file_lists_contents=$(replace "$_gen_file_lists_contents" "$_gen_file_lists_needle_gcda" "")
3063aa99676SStefan Eßer		_gen_file_lists_contents=$(replace "$_gen_file_lists_contents" "$_gen_file_lists_needle_gcno" "")
3073aa99676SStefan Eßer	fi
3083aa99676SStefan Eßer
3093aa99676SStefan Eßer	printf '%s\n' "$_gen_file_lists_contents"
3103aa99676SStefan Eßer}
3113aa99676SStefan Eßer
3123aa99676SStefan Eßerbc_only=0
3133aa99676SStefan Eßerdc_only=0
3143aa99676SStefan Eßercoverage=0
3153aa99676SStefan Eßerkaratsuba_len=32
3163aa99676SStefan Eßerdebug=0
3173aa99676SStefan Eßerhist=1
3183aa99676SStefan Eßerextra_math=1
3193aa99676SStefan Eßeroptimization=""
3203aa99676SStefan Eßergenerate_tests=1
3213aa99676SStefan Eßerinstall_manpages=1
3223aa99676SStefan Eßernls=1
3233aa99676SStefan Eßerprompt=1
3243aa99676SStefan Eßerforce=0
3253aa99676SStefan Eßerstrip_bin=1
326*cf7becd2SStefan Eßerall_locales=0
3273aa99676SStefan Eßer
328*cf7becd2SStefan Eßerwhile getopts "bBcdDEfgGhHk:lMNO:PST-" opt; do
3293aa99676SStefan Eßer
3303aa99676SStefan Eßer	case "$opt" in
3313aa99676SStefan Eßer		b) bc_only=1 ;;
3323aa99676SStefan Eßer		B) dc_only=1 ;;
3333aa99676SStefan Eßer		c) coverage=1 ;;
3343aa99676SStefan Eßer		d) dc_only=1 ;;
3353aa99676SStefan Eßer		D) bc_only=1 ;;
3363aa99676SStefan Eßer		E) extra_math=0 ;;
3373aa99676SStefan Eßer		f) force=1 ;;
3383aa99676SStefan Eßer		g) debug=1 ;;
3393aa99676SStefan Eßer		G) generate_tests=0 ;;
3403aa99676SStefan Eßer		h) usage ;;
3413aa99676SStefan Eßer		H) hist=0 ;;
3423aa99676SStefan Eßer		k) karatsuba_len="$OPTARG" ;;
343*cf7becd2SStefan Eßer		l) all_locales=1 ;;
3443aa99676SStefan Eßer		M) install_manpages=0 ;;
3453aa99676SStefan Eßer		N) nls=0 ;;
3463aa99676SStefan Eßer		O) optimization="$OPTARG" ;;
3473aa99676SStefan Eßer		P) prompt=0 ;;
3483aa99676SStefan Eßer		T) strip_bin=0 ;;
3493aa99676SStefan Eßer		-)
3503aa99676SStefan Eßer			arg="$1"
3513aa99676SStefan Eßer			arg="${arg#--}"
3523aa99676SStefan Eßer			LONG_OPTARG="${arg#*=}"
3533aa99676SStefan Eßer			case $arg in
3543aa99676SStefan Eßer				help) usage ;;
3553aa99676SStefan Eßer				bc-only) bc_only=1 ;;
3563aa99676SStefan Eßer				dc-only) dc_only=1 ;;
3573aa99676SStefan Eßer				coverage) coverage=1 ;;
3583aa99676SStefan Eßer				debug) debug=1 ;;
3593aa99676SStefan Eßer				force) force=1 ;;
3603aa99676SStefan Eßer				prefix=?*) PREFIX="$LONG_OPTARG" ;;
3613aa99676SStefan Eßer				prefix)
3623aa99676SStefan Eßer					if [ "$#" -lt 2 ]; then
3633aa99676SStefan Eßer						usage "No argument given for '--$arg' option"
3643aa99676SStefan Eßer					fi
3653aa99676SStefan Eßer					PREFIX="$2"
3663aa99676SStefan Eßer					shift ;;
3673aa99676SStefan Eßer				bindir=?*) BINDIR="$LONG_OPTARG" ;;
3683aa99676SStefan Eßer				bindir)
3693aa99676SStefan Eßer					if [ "$#" -lt 2 ]; then
3703aa99676SStefan Eßer						usage "No argument given for '--$arg' option"
3713aa99676SStefan Eßer					fi
3723aa99676SStefan Eßer					BINDIR="$2"
3733aa99676SStefan Eßer					shift ;;
3743aa99676SStefan Eßer				datarootdir=?*) DATAROOTDIR="$LONG_OPTARG" ;;
3753aa99676SStefan Eßer				datarootdir)
3763aa99676SStefan Eßer					if [ "$#" -lt 2 ]; then
3773aa99676SStefan Eßer						usage "No argument given for '--$arg' option"
3783aa99676SStefan Eßer					fi
3793aa99676SStefan Eßer					DATAROOTDIR="$2"
3803aa99676SStefan Eßer					shift ;;
3813aa99676SStefan Eßer				datadir=?*) DATADIR="$LONG_OPTARG" ;;
3823aa99676SStefan Eßer				datadir)
3833aa99676SStefan Eßer					if [ "$#" -lt 2 ]; then
3843aa99676SStefan Eßer						usage "No argument given for '--$arg' option"
3853aa99676SStefan Eßer					fi
3863aa99676SStefan Eßer					DATADIR="$2"
3873aa99676SStefan Eßer					shift ;;
3883aa99676SStefan Eßer				mandir=?*) MANDIR="$LONG_OPTARG" ;;
3893aa99676SStefan Eßer				mandir)
3903aa99676SStefan Eßer					if [ "$#" -lt 2 ]; then
3913aa99676SStefan Eßer						usage "No argument given for '--$arg' option"
3923aa99676SStefan Eßer					fi
3933aa99676SStefan Eßer					MANDIR="$2"
3943aa99676SStefan Eßer					shift ;;
3953aa99676SStefan Eßer				man1dir=?*) MAN1DIR="$LONG_OPTARG" ;;
3963aa99676SStefan Eßer				man1dir)
3973aa99676SStefan Eßer					if [ "$#" -lt 2 ]; then
3983aa99676SStefan Eßer						usage "No argument given for '--$arg' option"
3993aa99676SStefan Eßer					fi
4003aa99676SStefan Eßer					MAN1DIR="$2"
4013aa99676SStefan Eßer					shift ;;
4023aa99676SStefan Eßer				localedir=?*) LOCALEDIR="$LONG_OPTARG" ;;
4033aa99676SStefan Eßer				localedir)
4043aa99676SStefan Eßer					if [ "$#" -lt 2 ]; then
4053aa99676SStefan Eßer						usage "No argument given for '--$arg' option"
4063aa99676SStefan Eßer					fi
4073aa99676SStefan Eßer					LOCALEDIR="$2"
4083aa99676SStefan Eßer					shift ;;
4093aa99676SStefan Eßer				karatsuba-len=?*) karatsuba_len="$LONG_OPTARG" ;;
4103aa99676SStefan Eßer				karatsuba-len)
4113aa99676SStefan Eßer					if [ "$#" -lt 2 ]; then
4123aa99676SStefan Eßer						usage "No argument given for '--$arg' option"
4133aa99676SStefan Eßer					fi
4143aa99676SStefan Eßer					karatsuba_len="$1"
4153aa99676SStefan Eßer					shift ;;
4163aa99676SStefan Eßer				opt=?*) optimization="$LONG_OPTARG" ;;
4173aa99676SStefan Eßer				opt)
4183aa99676SStefan Eßer					if [ "$#" -lt 2 ]; then
4193aa99676SStefan Eßer						usage "No argument given for '--$arg' option"
4203aa99676SStefan Eßer					fi
4213aa99676SStefan Eßer					optimization="$1"
4223aa99676SStefan Eßer					shift ;;
4233aa99676SStefan Eßer				disable-bc) dc_only=1 ;;
4243aa99676SStefan Eßer				disable-dc) bc_only=1 ;;
4253aa99676SStefan Eßer				disable-extra-math) extra_math=0 ;;
4263aa99676SStefan Eßer				disable-generated-tests) generate_tests=0 ;;
4273aa99676SStefan Eßer				disable-history) hist=0 ;;
4283aa99676SStefan Eßer				disable-man-pages) install_manpages=0 ;;
4293aa99676SStefan Eßer				disable-nls) nls=0 ;;
4303aa99676SStefan Eßer				disable-prompt) prompt=0 ;;
4313aa99676SStefan Eßer				disable-strip) strip_bin=0 ;;
432*cf7becd2SStefan Eßer				install-all-locales) all_locales=1 ;;
4333aa99676SStefan Eßer				help* | bc-only* | dc-only* | coverage* | debug*)
4343aa99676SStefan Eßer					usage "No arg allowed for --$arg option" ;;
4353aa99676SStefan Eßer				disable-bc* | disable-dc* | disable-extra-math*)
4363aa99676SStefan Eßer					usage "No arg allowed for --$arg option" ;;
4373aa99676SStefan Eßer				disable-generated-tests* | disable-history*)
4383aa99676SStefan Eßer					usage "No arg allowed for --$arg option" ;;
4393aa99676SStefan Eßer				disable-man-pages* | disable-nls* | disable-strip*)
4403aa99676SStefan Eßer					usage "No arg allowed for --$arg option" ;;
441*cf7becd2SStefan Eßer				install-all-locales*)
442*cf7becd2SStefan Eßer					usage "No arg allowed for --$arg option" ;;
4433aa99676SStefan Eßer				'') break ;; # "--" terminates argument processing
4443aa99676SStefan Eßer				* ) usage "Invalid option $LONG_OPTARG" ;;
4453aa99676SStefan Eßer			esac
4463aa99676SStefan Eßer			shift
4473aa99676SStefan Eßer			OPTIND=1 ;;
4483aa99676SStefan Eßer		?) usage "Invalid option $opt" ;;
4493aa99676SStefan Eßer	esac
4503aa99676SStefan Eßer
4513aa99676SStefan Eßerdone
4523aa99676SStefan Eßer
4533aa99676SStefan Eßerif [ "$bc_only" -eq 1 ] && [ "$dc_only" -eq 1 ]; then
4543aa99676SStefan Eßer	usage "Can only specify one of -b(-D) or -d(-B)"
4553aa99676SStefan Eßerfi
4563aa99676SStefan Eßer
4573aa99676SStefan Eßercase $karatsuba_len in
4583aa99676SStefan Eßer	(*[!0-9]*|'') usage "KARATSUBA_LEN is not a number" ;;
4593aa99676SStefan Eßer	(*) ;;
4603aa99676SStefan Eßeresac
4613aa99676SStefan Eßer
4623aa99676SStefan Eßerif [ "$karatsuba_len" -lt 16 ]; then
4633aa99676SStefan Eßer	usage "KARATSUBA_LEN is less than 16"
4643aa99676SStefan Eßerfi
4653aa99676SStefan Eßer
4663aa99676SStefan Eßerset -e
4673aa99676SStefan Eßer
4683aa99676SStefan Eßerif [ -z "${LONG_BIT+set}" ]; then
4693aa99676SStefan Eßer	LONG_BIT_DEFINE=""
4703aa99676SStefan Eßerelif [ "$LONG_BIT" -lt 32 ]; then
4713aa99676SStefan Eßer	usage "LONG_BIT is less than 32"
4723aa99676SStefan Eßerelse
4733aa99676SStefan Eßer	LONG_BIT_DEFINE="-DBC_LONG_BIT=\$(BC_LONG_BIT)"
4743aa99676SStefan Eßerfi
4753aa99676SStefan Eßer
4763aa99676SStefan Eßerif [ -z "$CC" ]; then
4773aa99676SStefan Eßer	CC="c99"
4783aa99676SStefan Eßerelse
4793aa99676SStefan Eßer	ccbase=$(basename "$CC")
4803aa99676SStefan Eßer	suffix=" *"
4813aa99676SStefan Eßer	prefix="* "
4823aa99676SStefan Eßer
4833aa99676SStefan Eßer	if [ "${ccbase%%$suffix}" != "$ccbase" ]; then
4843aa99676SStefan Eßer		ccflags="${ccbase#$prefix}"
4853aa99676SStefan Eßer		cc="${ccbase%%$suffix}"
4863aa99676SStefan Eßer		ccdir=$(dirname "$CC")
4873aa99676SStefan Eßer		if [ "$ccdir" = "." ] && [ "${CC#.}" = "$CC" ]; then
4883aa99676SStefan Eßer			ccdir=""
4893aa99676SStefan Eßer		else
4903aa99676SStefan Eßer			ccdir="$ccdir/"
4913aa99676SStefan Eßer		fi
4923aa99676SStefan Eßer		CC="${ccdir}${cc}"
4933aa99676SStefan Eßer		CFLAGS="$CFLAGS $ccflags"
4943aa99676SStefan Eßer	fi
4953aa99676SStefan Eßerfi
4963aa99676SStefan Eßer
4973aa99676SStefan Eßerif [ -z "$HOSTCC" ] && [ -z "$HOST_CC" ]; then
4983aa99676SStefan Eßer	HOSTCC="$CC"
4993aa99676SStefan Eßerelif [ -z "$HOSTCC" ]; then
5003aa99676SStefan Eßer	HOSTCC="$HOST_CC"
5013aa99676SStefan Eßerfi
5023aa99676SStefan Eßer
5033aa99676SStefan Eßerif [ "$HOSTCC" != "$CC" ]; then
5043aa99676SStefan Eßer	ccbase=$(basename "$HOSTCC")
5053aa99676SStefan Eßer	suffix=" *"
5063aa99676SStefan Eßer	prefix="* "
5073aa99676SStefan Eßer
5083aa99676SStefan Eßer	if [ "${ccbase%%$suffix}" != "$ccbase" ]; then
5093aa99676SStefan Eßer		ccflags="${ccbase#$prefix}"
5103aa99676SStefan Eßer		cc="${ccbase%%$suffix}"
5113aa99676SStefan Eßer		ccdir=$(dirname "$HOSTCC")
5123aa99676SStefan Eßer		if [ "$ccdir" = "." ] && [ "${HOSTCC#.}" = "$HOSTCC" ]; then
5133aa99676SStefan Eßer			ccdir=""
5143aa99676SStefan Eßer		else
5153aa99676SStefan Eßer			ccdir="$ccdir/"
5163aa99676SStefan Eßer		fi
5173aa99676SStefan Eßer		HOSTCC="${ccdir}${cc}"
5183aa99676SStefan Eßer		HOSTCFLAGS="$HOSTCFLAGS $ccflags"
5193aa99676SStefan Eßer	fi
5203aa99676SStefan Eßerfi
5213aa99676SStefan Eßer
5223aa99676SStefan Eßerif [ -z "${HOSTCFLAGS+set}" ] && [ -z "${HOST_CFLAGS+set}" ]; then
5233aa99676SStefan Eßer	HOSTCFLAGS="$CFLAGS"
5243aa99676SStefan Eßerelif [ -z "${HOSTCFLAGS+set}" ]; then
5253aa99676SStefan Eßer	HOSTCFLAGS="$HOST_CFLAGS"
5263aa99676SStefan Eßerfi
5273aa99676SStefan Eßer
5283aa99676SStefan Eßerlink="@printf 'No link necessary\\\\n'"
5293aa99676SStefan Eßermain_exec="BC"
5303aa99676SStefan Eßerexecutable="BC_EXEC"
5313aa99676SStefan Eßer
5323aa99676SStefan Eßerbc_test="@tests/all.sh bc $extra_math 1 $generate_tests 0 \$(BC_EXEC)"
5333aa99676SStefan Eßerbc_time_test="@tests/all.sh bc $extra_math 1 $generate_tests 1 \$(BC_EXEC)"
5343aa99676SStefan Eßer
5353aa99676SStefan Eßerdc_test="@tests/all.sh dc $extra_math 1 $generate_tests 0 \$(DC_EXEC)"
5363aa99676SStefan Eßerdc_time_test="@tests/all.sh dc $extra_math 1 $generate_tests 1 \$(DC_EXEC)"
5373aa99676SStefan Eßer
5383aa99676SStefan Eßertimeconst="@tests/bc/timeconst.sh tests/bc/scripts/timeconst.bc \$(BC_EXEC)"
5393aa99676SStefan Eßer
5403aa99676SStefan Eßer# In order to have cleanup at exit, we need to be in
5413aa99676SStefan Eßer# debug mode, so don't run valgrind without that.
5423aa99676SStefan Eßerif [ "$debug" -ne 0 ]; then
5433aa99676SStefan Eßer	vg_bc_test="@tests/all.sh bc $extra_math 1 $generate_tests 0 valgrind \$(VALGRIND_ARGS) \$(BC_EXEC)"
5443aa99676SStefan Eßer	vg_dc_test="@tests/all.sh dc $extra_math 1 $generate_tests 0 valgrind \$(VALGRIND_ARGS) \$(DC_EXEC)"
5453aa99676SStefan Eßerelse
5463aa99676SStefan Eßer	vg_bc_test="@printf 'Cannot run valgrind without debug flags\\\\n'"
5473aa99676SStefan Eßer	vg_dc_test="@printf 'Cannot run valgrind without debug flags\\\\n'"
5483aa99676SStefan Eßerfi
5493aa99676SStefan Eßer
5503aa99676SStefan Eßerkaratsuba="@printf 'karatsuba cannot be run because one of bc or dc is not built\\\\n'"
5513aa99676SStefan Eßerkaratsuba_test="@printf 'karatsuba cannot be run because one of bc or dc is not built\\\\n'"
5523aa99676SStefan Eßer
5533aa99676SStefan Eßerbc_lib="\$(GEN_DIR)/lib.o"
5543aa99676SStefan Eßerbc_help="\$(GEN_DIR)/bc_help.o"
5553aa99676SStefan Eßerdc_help="\$(GEN_DIR)/dc_help.o"
5563aa99676SStefan Eßer
5573aa99676SStefan Eßerif [ "$bc_only" -eq 1 ]; then
5583aa99676SStefan Eßer
5593aa99676SStefan Eßer	bc=1
5603aa99676SStefan Eßer	dc=0
5613aa99676SStefan Eßer
5623aa99676SStefan Eßer	dc_help=""
5633aa99676SStefan Eßer
5643aa99676SStefan Eßer	executables="bc"
5653aa99676SStefan Eßer
5663aa99676SStefan Eßer	dc_test="@printf 'No dc tests to run\\\\n'"
5673aa99676SStefan Eßer	dc_time_test="@printf 'No dc tests to run\\\\n'"
5683aa99676SStefan Eßer	vg_dc_test="@printf 'No dc tests to run\\\\n'"
5693aa99676SStefan Eßer
5703aa99676SStefan Eßer	install_prereqs=" install_bc_manpage"
5713aa99676SStefan Eßer	uninstall_prereqs=" uninstall_bc"
5723aa99676SStefan Eßer	uninstall_man_prereqs=" uninstall_bc_manpage"
5733aa99676SStefan Eßer
5743aa99676SStefan Eßerelif [ "$dc_only" -eq 1 ]; then
5753aa99676SStefan Eßer
5763aa99676SStefan Eßer	bc=0
5773aa99676SStefan Eßer	dc=1
5783aa99676SStefan Eßer
5793aa99676SStefan Eßer	bc_lib=""
5803aa99676SStefan Eßer	bc_help=""
5813aa99676SStefan Eßer
5823aa99676SStefan Eßer	executables="dc"
5833aa99676SStefan Eßer
5843aa99676SStefan Eßer	main_exec="DC"
5853aa99676SStefan Eßer	executable="DC_EXEC"
5863aa99676SStefan Eßer
5873aa99676SStefan Eßer	bc_test="@printf 'No bc tests to run\\\\n'"
5883aa99676SStefan Eßer	bc_time_test="@printf 'No bc tests to run\\\\n'"
5893aa99676SStefan Eßer	vg_bc_test="@printf 'No bc tests to run\\\\n'"
5903aa99676SStefan Eßer
5913aa99676SStefan Eßer	timeconst="@printf 'timeconst cannot be run because bc is not built\\\\n'"
5923aa99676SStefan Eßer
5933aa99676SStefan Eßer	install_prereqs=" install_dc_manpage"
5943aa99676SStefan Eßer	uninstall_prereqs=" uninstall_dc"
5953aa99676SStefan Eßer	uninstall_man_prereqs=" uninstall_dc_manpage"
5963aa99676SStefan Eßer
5973aa99676SStefan Eßerelse
5983aa99676SStefan Eßer
5993aa99676SStefan Eßer	bc=1
6003aa99676SStefan Eßer	dc=1
6013aa99676SStefan Eßer
6023aa99676SStefan Eßer	executables="bc and dc"
6033aa99676SStefan Eßer
6043aa99676SStefan Eßer	link="\$(LINK) \$(BIN) \$(EXEC_PREFIX)\$(DC)"
6053aa99676SStefan Eßer
6063aa99676SStefan Eßer	karatsuba="@\$(KARATSUBA) 30 0 \$(BC_EXEC)"
6073aa99676SStefan Eßer	karatsuba_test="@\$(KARATSUBA) 1 100 \$(BC_EXEC)"
6083aa99676SStefan Eßer
6093aa99676SStefan Eßer	install_prereqs=" install_bc_manpage install_dc_manpage"
6103aa99676SStefan Eßer	uninstall_prereqs=" uninstall_bc uninstall_dc"
6113aa99676SStefan Eßer	uninstall_man_prereqs=" uninstall_bc_manpage uninstall_dc_manpage"
6123aa99676SStefan Eßer
6133aa99676SStefan Eßerfi
6143aa99676SStefan Eßer
6153aa99676SStefan Eßerif [ "$debug" -eq 1 ]; then
6163aa99676SStefan Eßer
6173aa99676SStefan Eßer	if [ -z "$CFLAGS" ] && [ -z "$optimization" ]; then
6183aa99676SStefan Eßer		CFLAGS="-O0"
6193aa99676SStefan Eßer	fi
6203aa99676SStefan Eßer
6213aa99676SStefan Eßer	CFLAGS="-g $CFLAGS"
6223aa99676SStefan Eßer
6233aa99676SStefan Eßerelse
6243aa99676SStefan Eßer	CPPFLAGS="-DNDEBUG $CPPFLAGS"
6253aa99676SStefan Eßer	if [ "$strip_bin" -ne 0 ]; then
6263aa99676SStefan Eßer		LDFLAGS="-s $LDFLAGS"
6273aa99676SStefan Eßer	fi
6283aa99676SStefan Eßerfi
6293aa99676SStefan Eßer
6303aa99676SStefan Eßerif [ -n "$optimization" ]; then
6313aa99676SStefan Eßer	CFLAGS="-O$optimization $CFLAGS"
6323aa99676SStefan Eßerfi
6333aa99676SStefan Eßer
6343aa99676SStefan Eßerif [ "$coverage" -eq 1 ]; then
6353aa99676SStefan Eßer
6363aa99676SStefan Eßer	if [ "$bc_only" -eq 1 ] || [ "$dc_only" -eq 1 ]; then
6373aa99676SStefan Eßer		usage "Can only specify -c without -b or -d"
6383aa99676SStefan Eßer	fi
6393aa99676SStefan Eßer
6403aa99676SStefan Eßer	CFLAGS="-fprofile-arcs -ftest-coverage -g -O0 $CFLAGS"
6413aa99676SStefan Eßer	CPPFLAGS="-DNDEBUG $CPPFLAGS"
6423aa99676SStefan Eßer
6433aa99676SStefan Eßer	COVERAGE_OUTPUT="@gcov -pabcdf \$(GCDA) \$(BC_GCDA) \$(DC_GCDA) \$(HISTORY_GCDA) \$(RAND_GCDA)"
6443aa99676SStefan Eßer	COVERAGE_OUTPUT="$COVERAGE_OUTPUT;\$(RM) -f \$(GEN)*.gc*"
6453aa99676SStefan Eßer	COVERAGE_OUTPUT="$COVERAGE_OUTPUT;gcovr --html-details --output index.html"
6463aa99676SStefan Eßer	COVERAGE_PREREQS=" test coverage_output"
6473aa99676SStefan Eßer
6483aa99676SStefan Eßerelse
6493aa99676SStefan Eßer	COVERAGE_OUTPUT="@printf 'Coverage not generated\\\\n'"
6503aa99676SStefan Eßer	COVERAGE_PREREQS=""
6513aa99676SStefan Eßerfi
6523aa99676SStefan Eßer
6533aa99676SStefan Eßerif [ -z "${DESTDIR+set}" ]; then
6543aa99676SStefan Eßer	destdir=""
6553aa99676SStefan Eßerelse
6563aa99676SStefan Eßer	destdir="DESTDIR = $DESTDIR"
6573aa99676SStefan Eßerfi
6583aa99676SStefan Eßer
6593aa99676SStefan Eßerif [ -z "${PREFIX+set}" ]; then
6603aa99676SStefan Eßer	PREFIX="/usr/local"
6613aa99676SStefan Eßerfi
6623aa99676SStefan Eßer
6633aa99676SStefan Eßerif [ -z "${BINDIR+set}" ]; then
6643aa99676SStefan Eßer	BINDIR="$PREFIX/bin"
6653aa99676SStefan Eßerfi
6663aa99676SStefan Eßer
6673aa99676SStefan Eßerif [ "$install_manpages" -ne 0 ] || [ "$nls" -ne 0 ]; then
6683aa99676SStefan Eßer	if [ -z "${DATAROOTDIR+set}" ]; then
6693aa99676SStefan Eßer		DATAROOTDIR="$PREFIX/share"
6703aa99676SStefan Eßer	fi
6713aa99676SStefan Eßerfi
6723aa99676SStefan Eßer
6733aa99676SStefan Eßerif [ "$install_manpages" -ne 0 ]; then
6743aa99676SStefan Eßer
6753aa99676SStefan Eßer	if [ -z "${DATADIR+set}" ]; then
6763aa99676SStefan Eßer		DATADIR="$DATAROOTDIR"
6773aa99676SStefan Eßer	fi
6783aa99676SStefan Eßer
6793aa99676SStefan Eßer	if [ -z "${MANDIR+set}" ]; then
6803aa99676SStefan Eßer		MANDIR="$DATADIR/man"
6813aa99676SStefan Eßer	fi
6823aa99676SStefan Eßer
6833aa99676SStefan Eßer	if [ -z "${MAN1DIR+set}" ]; then
6843aa99676SStefan Eßer		MAN1DIR="$MANDIR/man1"
6853aa99676SStefan Eßer	fi
6863aa99676SStefan Eßer
6873aa99676SStefan Eßerelse
6883aa99676SStefan Eßer	install_prereqs=""
6893aa99676SStefan Eßer	uninstall_man_prereqs=""
6903aa99676SStefan Eßerfi
6913aa99676SStefan Eßer
6923aa99676SStefan Eßerif [ "$nls" -ne 0 ]; then
6933aa99676SStefan Eßer
6943aa99676SStefan Eßer	set +e
6953aa99676SStefan Eßer
6963aa99676SStefan Eßer	printf 'Testing NLS...\n'
6973aa99676SStefan Eßer
6983aa99676SStefan Eßer	flags="-DBC_ENABLE_NLS=1 -DBC_ENABLED=$bc -DDC_ENABLED=$dc"
6993aa99676SStefan Eßer	flags="$flags -DBC_ENABLE_HISTORY=$hist"
7003aa99676SStefan Eßer	flags="$flags -DBC_ENABLE_EXTRA_MATH=$extra_math -I./include/"
7013aa99676SStefan Eßer	flags="$flags -D_POSIX_C_SOURCE=200809L -D_XOPEN_SOURCE=700"
7023aa99676SStefan Eßer
7033aa99676SStefan Eßer	"$CC" $CPPFLAGS $CFLAGS $flags -c "src/vm.c" -o "$scriptdir/vm.o" > /dev/null 2>&1
7043aa99676SStefan Eßer
7053aa99676SStefan Eßer	err="$?"
7063aa99676SStefan Eßer
7073aa99676SStefan Eßer	rm -rf "$scriptdir/vm.o"
7083aa99676SStefan Eßer
7093aa99676SStefan Eßer	# If this errors, it is probably because of building on Windows,
7103aa99676SStefan Eßer	# and NLS is not supported on Windows, so disable it.
7113aa99676SStefan Eßer	if [ "$err" -ne 0 ]; then
7123aa99676SStefan Eßer		printf 'NLS does not work.\n'
7133aa99676SStefan Eßer		if [ $force -eq 0 ]; then
7143aa99676SStefan Eßer			printf 'Disabling NLS...\n\n'
7153aa99676SStefan Eßer			nls=0
7163aa99676SStefan Eßer		else
7173aa99676SStefan Eßer			printf 'Forcing NLS...\n\n'
7183aa99676SStefan Eßer		fi
7193aa99676SStefan Eßer	else
7203aa99676SStefan Eßer		printf 'NLS works.\n\n'
7213aa99676SStefan Eßer
7223aa99676SStefan Eßer		printf 'Testing gencat...\n'
7233aa99676SStefan Eßer		gencat "$scriptdir/en_US.cat" "$scriptdir/locales/en_US.msg" > /dev/null 2>&1
7243aa99676SStefan Eßer
7253aa99676SStefan Eßer		err="$?"
7263aa99676SStefan Eßer
7273aa99676SStefan Eßer		rm -rf "$scriptdir/en_US.cat"
7283aa99676SStefan Eßer
7293aa99676SStefan Eßer		if [ "$err" -ne 0 ]; then
7303aa99676SStefan Eßer			printf 'gencat does not work.\n'
7313aa99676SStefan Eßer			if [ $force -eq 0 ]; then
7323aa99676SStefan Eßer				printf 'Disabling NLS...\n\n'
7333aa99676SStefan Eßer				nls=0
7343aa99676SStefan Eßer			else
7353aa99676SStefan Eßer				printf 'Forcing NLS...\n\n'
7363aa99676SStefan Eßer			fi
7373aa99676SStefan Eßer		else
7383aa99676SStefan Eßer
7393aa99676SStefan Eßer			printf 'gencat works.\n\n'
7403aa99676SStefan Eßer
7413aa99676SStefan Eßer			if [ "$HOSTCC" != "$CC" ]; then
7423aa99676SStefan Eßer				printf 'Cross-compile detected.\n\n'
7433aa99676SStefan Eßer				printf 'WARNING: Catalog files generated with gencat may not be portable\n'
7443aa99676SStefan Eßer				printf '         across different architectures.\n\n'
7453aa99676SStefan Eßer			fi
7463aa99676SStefan Eßer
7473aa99676SStefan Eßer			if [ -z "$NLSPATH" ]; then
7483aa99676SStefan Eßer				NLSPATH="/usr/share/locale/%L/%N"
7493aa99676SStefan Eßer			fi
7503aa99676SStefan Eßer
7513aa99676SStefan Eßer			install_locales_prereqs=" install_locales"
7523aa99676SStefan Eßer			uninstall_locales_prereqs=" uninstall_locales"
7533aa99676SStefan Eßer
7543aa99676SStefan Eßer		fi
7553aa99676SStefan Eßer
7563aa99676SStefan Eßer	fi
7573aa99676SStefan Eßer
7583aa99676SStefan Eßer	set -e
7593aa99676SStefan Eßer
7603aa99676SStefan Eßerelse
7613aa99676SStefan Eßer	install_locales_prereqs=""
7623aa99676SStefan Eßer	uninstall_locales_prereqs=""
763*cf7becd2SStefan Eßer	all_locales=0
764*cf7becd2SStefan Eßerfi
765*cf7becd2SStefan Eßer
766*cf7becd2SStefan Eßerif [ "$nls" -ne 0 ] && [ "$all_locales" -ne 0 ]; then
767*cf7becd2SStefan Eßer	install_locales="\$(LOCALE_INSTALL) -l \$(NLSPATH) \$(MAIN_EXEC) \$(DESTDIR)"
768*cf7becd2SStefan Eßerelse
769*cf7becd2SStefan Eßer	install_locales="\$(LOCALE_INSTALL) \$(NLSPATH) \$(MAIN_EXEC) \$(DESTDIR)"
7703aa99676SStefan Eßerfi
7713aa99676SStefan Eßer
7723aa99676SStefan Eßerif [ "$hist" -eq 1 ]; then
7733aa99676SStefan Eßer
7743aa99676SStefan Eßer	set +e
7753aa99676SStefan Eßer
7763aa99676SStefan Eßer	printf 'Testing history...\n'
7773aa99676SStefan Eßer
7783aa99676SStefan Eßer	flags="-DBC_ENABLE_HISTORY=1 -DBC_ENABLED=$bc -DDC_ENABLED=$dc"
7793aa99676SStefan Eßer	flags="$flags -DBC_ENABLE_NLS=$nls"
7803aa99676SStefan Eßer	flags="$flags -DBC_ENABLE_EXTRA_MATH=$extra_math -I./include/"
7813aa99676SStefan Eßer	flags="$flags -D_POSIX_C_SOURCE=200809L -D_XOPEN_SOURCE=700"
7823aa99676SStefan Eßer
7833aa99676SStefan Eßer	"$CC" $CPPFLAGS $CFLAGS $flags -c "src/history/history.c" -o "$scriptdir/history.o" > /dev/null 2>&1
7843aa99676SStefan Eßer
7853aa99676SStefan Eßer	err="$?"
7863aa99676SStefan Eßer
7873aa99676SStefan Eßer	rm -rf "$scriptdir/history.o"
7883aa99676SStefan Eßer
7893aa99676SStefan Eßer	# If this errors, it is probably because of building on Windows,
7903aa99676SStefan Eßer	# and history is not supported on Windows, so disable it.
7913aa99676SStefan Eßer	if [ "$err" -ne 0 ]; then
7923aa99676SStefan Eßer		printf 'History does not work.\n'
7933aa99676SStefan Eßer		if [ $force -eq 0 ]; then
7943aa99676SStefan Eßer			printf 'Disabling history...\n\n'
7953aa99676SStefan Eßer			hist=0
7963aa99676SStefan Eßer		else
7973aa99676SStefan Eßer			printf 'Forcing history...\n\n'
7983aa99676SStefan Eßer		fi
7993aa99676SStefan Eßer	else
8003aa99676SStefan Eßer		printf 'History works.\n\n'
8013aa99676SStefan Eßer	fi
8023aa99676SStefan Eßer
8033aa99676SStefan Eßer	set -e
8043aa99676SStefan Eßer
8053aa99676SStefan Eßerfi
8063aa99676SStefan Eßer
8073aa99676SStefan Eßerif [ "$extra_math" -eq 1 ] && [ "$bc" -ne 0 ]; then
8083aa99676SStefan Eßer	BC_LIB2_O="\$(GEN_DIR)/lib2.o"
8093aa99676SStefan Eßerelse
8103aa99676SStefan Eßer	BC_LIB2_O=""
8113aa99676SStefan Eßerfi
8123aa99676SStefan Eßer
8133aa99676SStefan EßerGEN="strgen"
8143aa99676SStefan EßerGEN_EXEC_TARGET="\$(HOSTCC) \$(HOSTCFLAGS) -o \$(GEN_EXEC) \$(GEN_C)"
8153aa99676SStefan EßerCLEAN_PREREQS=" clean_gen"
8163aa99676SStefan Eßer
8173aa99676SStefan Eßerif [ -z "${GEN_HOST+set}" ]; then
8183aa99676SStefan Eßer	GEN_HOST=1
8193aa99676SStefan Eßerelse
8203aa99676SStefan Eßer	if [ "$GEN_HOST" -eq 0 ]; then
8213aa99676SStefan Eßer		GEN="strgen.sh"
8223aa99676SStefan Eßer		GEN_EXEC_TARGET="@printf 'Do not need to build gen/strgen.c\\\\n'"
8233aa99676SStefan Eßer		CLEAN_PREREQS=""
8243aa99676SStefan Eßer	fi
8253aa99676SStefan Eßerfi
8263aa99676SStefan Eßer
8273aa99676SStefan Eßermanpage_args=""
8283aa99676SStefan Eßer
8293aa99676SStefan Eßerif [ "$extra_math" -eq 0 ]; then
8303aa99676SStefan Eßer	manpage_args="E"
8313aa99676SStefan Eßerfi
8323aa99676SStefan Eßer
8333aa99676SStefan Eßerif [ "$hist" -eq 0 ]; then
8343aa99676SStefan Eßer	manpage_args="${manpage_args}H"
8353aa99676SStefan Eßerfi
8363aa99676SStefan Eßer
8373aa99676SStefan Eßerif [ "$nls" -eq 0 ]; then
8383aa99676SStefan Eßer	manpage_args="${manpage_args}N"
8393aa99676SStefan Eßerfi
8403aa99676SStefan Eßer
8413aa99676SStefan Eßerif [ "$prompt" -eq 0 ]; then
8423aa99676SStefan Eßer	manpage_args="${manpage_args}P"
8433aa99676SStefan Eßerfi
8443aa99676SStefan Eßer
8453aa99676SStefan Eßerif [ "$manpage_args" = "" ]; then
8463aa99676SStefan Eßer	manpage_args="A"
8473aa99676SStefan Eßerfi
8483aa99676SStefan Eßer
8493aa99676SStefan Eßer# Print out the values; this is for debugging.
8503aa99676SStefan Eßerif [ "$bc" -ne 0 ]; then
8513aa99676SStefan Eßer	printf 'Building bc\n'
8523aa99676SStefan Eßerelse
8533aa99676SStefan Eßer	printf 'Not building bc\n'
8543aa99676SStefan Eßerfi
8553aa99676SStefan Eßerif [ "$dc" -ne 0 ]; then
8563aa99676SStefan Eßer	printf 'Building dc\n'
8573aa99676SStefan Eßerelse
8583aa99676SStefan Eßer	printf 'Not building dc\n'
8593aa99676SStefan Eßerfi
8603aa99676SStefan Eßerprintf '\n'
8613aa99676SStefan Eßerprintf 'BC_ENABLE_HISTORY=%s\n' "$hist"
8623aa99676SStefan Eßerprintf 'BC_ENABLE_EXTRA_MATH=%s\n' "$extra_math"
8633aa99676SStefan Eßerprintf 'BC_ENABLE_NLS=%s\n' "$nls"
8643aa99676SStefan Eßerprintf 'BC_ENABLE_PROMPT=%s\n' "$prompt"
8653aa99676SStefan Eßerprintf '\n'
8663aa99676SStefan Eßerprintf 'BC_NUM_KARATSUBA_LEN=%s\n' "$karatsuba_len"
8673aa99676SStefan Eßerprintf '\n'
8683aa99676SStefan Eßerprintf 'CC=%s\n' "$CC"
8693aa99676SStefan Eßerprintf 'CFLAGS=%s\n' "$CFLAGS"
8703aa99676SStefan Eßerprintf 'HOSTCC=%s\n' "$HOSTCC"
8713aa99676SStefan Eßerprintf 'HOSTCFLAGS=%s\n' "$HOSTCFLAGS"
8723aa99676SStefan Eßerprintf 'CPPFLAGS=%s\n' "$CPPFLAGS"
8733aa99676SStefan Eßerprintf 'LDFLAGS=%s\n' "$LDFLAGS"
8743aa99676SStefan Eßerprintf 'PREFIX=%s\n' "$PREFIX"
8753aa99676SStefan Eßerprintf 'BINDIR=%s\n' "$BINDIR"
8763aa99676SStefan Eßerprintf 'DATAROOTDIR=%s\n' "$DATAROOTDIR"
8773aa99676SStefan Eßerprintf 'DATADIR=%s\n' "$DATADIR"
8783aa99676SStefan Eßerprintf 'MANDIR=%s\n' "$MANDIR"
8793aa99676SStefan Eßerprintf 'MAN1DIR=%s\n' "$MAN1DIR"
8803aa99676SStefan Eßerprintf 'NLSPATH=%s\n' "$NLSPATH"
8813aa99676SStefan Eßerprintf 'EXECSUFFIX=%s\n' "$EXECSUFFIX"
8823aa99676SStefan Eßerprintf 'EXECPREFIX=%s\n' "$EXECPREFIX"
8833aa99676SStefan Eßerprintf 'DESTDIR=%s\n' "$DESTDIR"
8843aa99676SStefan Eßerprintf 'LONG_BIT=%s\n' "$LONG_BIT"
8853aa99676SStefan Eßerprintf 'GEN_HOST=%s\n' "$GEN_HOST"
8863aa99676SStefan Eßerprintf 'GEN_EMU=%s\n' "$GEN_EMU"
8873aa99676SStefan Eßer
8883aa99676SStefan Eßercontents=$(cat "$scriptdir/Makefile.in")
8893aa99676SStefan Eßer
8903aa99676SStefan Eßerneedle="WARNING"
8913aa99676SStefan Eßerreplacement='*** WARNING: Autogenerated from Makefile.in. DO NOT MODIFY ***'
8923aa99676SStefan Eßer
8933aa99676SStefan Eßercontents=$(replace "$contents" "$needle" "$replacement")
8943aa99676SStefan Eßer
8953aa99676SStefan Eßercontents=$(gen_file_lists "$contents" "$scriptdir/src" "")
8963aa99676SStefan Eßercontents=$(gen_file_lists "$contents" "$scriptdir/src/bc" "BC_" "$bc")
8973aa99676SStefan Eßercontents=$(gen_file_lists "$contents" "$scriptdir/src/dc" "DC_" "$dc")
8983aa99676SStefan Eßercontents=$(gen_file_lists "$contents" "$scriptdir/src/history" "HISTORY_" "$hist")
8993aa99676SStefan Eßercontents=$(gen_file_lists "$contents" "$scriptdir/src/rand" "RAND_" "$extra_math")
9003aa99676SStefan Eßer
9013aa99676SStefan Eßercontents=$(replace "$contents" "BC_ENABLED" "$bc")
9023aa99676SStefan Eßercontents=$(replace "$contents" "DC_ENABLED" "$dc")
9033aa99676SStefan Eßercontents=$(replace "$contents" "LINK" "$link")
9043aa99676SStefan Eßer
9053aa99676SStefan Eßercontents=$(replace "$contents" "HISTORY" "$hist")
9063aa99676SStefan Eßercontents=$(replace "$contents" "EXTRA_MATH" "$extra_math")
9073aa99676SStefan Eßercontents=$(replace "$contents" "NLS" "$nls")
9083aa99676SStefan Eßercontents=$(replace "$contents" "PROMPT" "$prompt")
9093aa99676SStefan Eßercontents=$(replace "$contents" "BC_LIB_O" "$bc_lib")
9103aa99676SStefan Eßercontents=$(replace "$contents" "BC_HELP_O" "$bc_help")
9113aa99676SStefan Eßercontents=$(replace "$contents" "DC_HELP_O" "$dc_help")
9123aa99676SStefan Eßercontents=$(replace "$contents" "BC_LIB2_O" "$BC_LIB2_O")
9133aa99676SStefan Eßercontents=$(replace "$contents" "KARATSUBA_LEN" "$karatsuba_len")
9143aa99676SStefan Eßer
9153aa99676SStefan Eßercontents=$(replace "$contents" "NLSPATH" "$NLSPATH")
9163aa99676SStefan Eßercontents=$(replace "$contents" "DESTDIR" "$destdir")
9173aa99676SStefan Eßercontents=$(replace "$contents" "EXECSUFFIX" "$EXECSUFFIX")
9183aa99676SStefan Eßercontents=$(replace "$contents" "EXECPREFIX" "$EXECPREFIX")
9193aa99676SStefan Eßercontents=$(replace "$contents" "BINDIR" "$BINDIR")
9203aa99676SStefan Eßercontents=$(replace "$contents" "MAN1DIR" "$MAN1DIR")
9213aa99676SStefan Eßercontents=$(replace "$contents" "CFLAGS" "$CFLAGS")
9223aa99676SStefan Eßercontents=$(replace "$contents" "HOSTCFLAGS" "$HOSTCFLAGS")
9233aa99676SStefan Eßercontents=$(replace "$contents" "CPPFLAGS" "$CPPFLAGS")
9243aa99676SStefan Eßercontents=$(replace "$contents" "LDFLAGS" "$LDFLAGS")
9253aa99676SStefan Eßercontents=$(replace "$contents" "CC" "$CC")
9263aa99676SStefan Eßercontents=$(replace "$contents" "HOSTCC" "$HOSTCC")
9273aa99676SStefan Eßercontents=$(replace "$contents" "COVERAGE_OUTPUT" "$COVERAGE_OUTPUT")
9283aa99676SStefan Eßercontents=$(replace "$contents" "COVERAGE_PREREQS" "$COVERAGE_PREREQS")
9293aa99676SStefan Eßercontents=$(replace "$contents" "INSTALL_PREREQS" "$install_prereqs")
930*cf7becd2SStefan Eßercontents=$(replace "$contents" "INSTALL_LOCALES" "$install_locales")
9313aa99676SStefan Eßercontents=$(replace "$contents" "INSTALL_LOCALES_PREREQS" "$install_locales_prereqs")
9323aa99676SStefan Eßercontents=$(replace "$contents" "UNINSTALL_MAN_PREREQS" "$uninstall_man_prereqs")
9333aa99676SStefan Eßercontents=$(replace "$contents" "UNINSTALL_PREREQS" "$uninstall_prereqs")
9343aa99676SStefan Eßercontents=$(replace "$contents" "UNINSTALL_LOCALES_PREREQS" "$uninstall_locales_prereqs")
9353aa99676SStefan Eßer
9363aa99676SStefan Eßercontents=$(replace "$contents" "EXECUTABLES" "$executables")
9373aa99676SStefan Eßercontents=$(replace "$contents" "MAIN_EXEC" "$main_exec")
9383aa99676SStefan Eßercontents=$(replace "$contents" "EXEC" "$executable")
9393aa99676SStefan Eßer
9403aa99676SStefan Eßercontents=$(replace "$contents" "BC_TEST" "$bc_test")
9413aa99676SStefan Eßercontents=$(replace "$contents" "BC_TIME_TEST" "$bc_time_test")
9423aa99676SStefan Eßer
9433aa99676SStefan Eßercontents=$(replace "$contents" "DC_TEST" "$dc_test")
9443aa99676SStefan Eßercontents=$(replace "$contents" "DC_TIME_TEST" "$dc_time_test")
9453aa99676SStefan Eßer
9463aa99676SStefan Eßercontents=$(replace "$contents" "VG_BC_TEST" "$vg_bc_test")
9473aa99676SStefan Eßercontents=$(replace "$contents" "VG_DC_TEST" "$vg_dc_test")
9483aa99676SStefan Eßer
9493aa99676SStefan Eßercontents=$(replace "$contents" "TIMECONST" "$timeconst")
9503aa99676SStefan Eßer
9513aa99676SStefan Eßercontents=$(replace "$contents" "KARATSUBA" "$karatsuba")
9523aa99676SStefan Eßercontents=$(replace "$contents" "KARATSUBA_TEST" "$karatsuba_test")
9533aa99676SStefan Eßer
9543aa99676SStefan Eßercontents=$(replace "$contents" "LONG_BIT" "$LONG_BIT")
9553aa99676SStefan Eßercontents=$(replace "$contents" "LONG_BIT_DEFINE" "$LONG_BIT_DEFINE")
9563aa99676SStefan Eßer
9573aa99676SStefan Eßercontents=$(replace "$contents" "GEN" "$GEN")
9583aa99676SStefan Eßercontents=$(replace "$contents" "GEN_EXEC_TARGET" "$GEN_EXEC_TARGET")
9593aa99676SStefan Eßercontents=$(replace "$contents" "CLEAN_PREREQS" "$CLEAN_PREREQS")
9603aa99676SStefan Eßercontents=$(replace "$contents" "GEN_EMU" "$GEN_EMU")
9613aa99676SStefan Eßer
9623aa99676SStefan Eßerprintf '%s\n' "$contents" > "$scriptdir/Makefile"
9633aa99676SStefan Eßer
9643aa99676SStefan Eßercd "$scriptdir"
9653aa99676SStefan Eßer
9663aa99676SStefan Eßercp -f manuals/bc/$manpage_args.1.md manuals/bc.1.md
9673aa99676SStefan Eßercp -f manuals/bc/$manpage_args.1 manuals/bc.1
9683aa99676SStefan Eßercp -f manuals/dc/$manpage_args.1.md manuals/dc.1.md
9693aa99676SStefan Eßercp -f manuals/dc/$manpage_args.1 manuals/dc.1
9703aa99676SStefan Eßer
9713aa99676SStefan Eßermake clean > /dev/null
972