aboutsummaryrefslogtreecommitdiff
path: root/contrib/bc/scripts/release.sh
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/bc/scripts/release.sh')
-rwxr-xr-xcontrib/bc/scripts/release.sh779
1 files changed, 0 insertions, 779 deletions
diff --git a/contrib/bc/scripts/release.sh b/contrib/bc/scripts/release.sh
deleted file mode 100755
index 638161f83732..000000000000
--- a/contrib/bc/scripts/release.sh
+++ /dev/null
@@ -1,779 +0,0 @@
-#! /bin/sh
-#
-# SPDX-License-Identifier: BSD-2-Clause
-#
-# Copyright (c) 2018-2021 Gavin D. Howard and contributors.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright notice, this
-# list of conditions and the following disclaimer.
-#
-# * Redistributions in binary form must reproduce the above copyright notice,
-# this list of conditions and the following disclaimer in the documentation
-# and/or other materials provided with the distribution.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-
-# For OpenBSD, run using the following:
-#
-# scripts/release.sh 1 0 1 0 0 0 0 1 0 0 0 0
-#
-# For FreeBSD, run using the following:
-#
-# scripts/release.sh 1 0 1 0 0 0 0 1 0 1 0 0
-#
-# There is one problem with running this script on FreeBSD: it takes overcommit
-# to the extreme. This means that some tests that try to create allocation
-# failures instead make bc and dc crash. So running this script on FreeBSD does
-# not work right now.
-#
-# For Linux, run two separate ones (in different checkouts), like so:
-#
-# scripts/release.sh 1 1 1 0 1 0 0 1 0 1 0 1
-# scripts/release.sh 1 1 0 1 0 1 0 1 0 1 0 0
-#
-# Yes, I usually do sanitizers with Clang and Valgrind with GCC.
-#
-# To run sanitizers or Valgrind with generated tests, use the following:
-#
-# scripts/release.sh 1 1 1 0 1 0 0 1 0 1 0 1
-# scripts/release.sh 1 1 0 1 0 1 0 1 0 1 0 0
-#
-# If this script fails on any platform when starting the Karatsuba test, check
-# that Python is installed, especially if the error says something like:
-# "karatsuba.py: not found".
-
-# Print the usage and exit with an error. Each parameter should be an integer.
-# Non-zero activates, and zero deactivates.
-usage() {
- printf 'usage: %s [run_tests] [generate_tests] [test_with_clang] [test_with_gcc] \n' "$script"
- printf ' [run_sanitizers] [run_valgrind] [test_settings] [run_64_bit] \n'
- printf ' [run_gen_script] [test_c11] [test_128_bit] [test_computed_goto]\n'
- exit 1
-}
-
-# Print a header with a message. This is just to make it easy to track progress.
-# @param msg The message to print in the header.
-header() {
-
- _header_msg="$1"
- shift
-
- printf '\n'
- printf '*******************\n'
- printf "$_header_msg"
- printf '\n'
- printf '*******************\n'
- printf '\n'
-}
-
-# Easy way to call make.
-do_make() {
- # No reason to do 64 except to see if I actually can overload my system. :)
- # Well, also that it might actually improve throughput as other jobs can run
- # while some are waiting.
- make -j64 "$@"
-}
-
-# Run configure.sh.
-# @param CFLAGS The CFLAGS.
-# @param CC The C compiler.
-# @param configure_flags The flags for configure.sh itself.
-# @param GEN_HOST The setting for GEN_HOST.
-# @param LONG_BIT The setting for LONG_BIT.
-configure() {
-
- _configure_CFLAGS="$1"
- shift
-
- _configure_CC="$1"
- shift
-
- _configure_configure_flags="$1"
- shift
-
- _configure_GEN_HOST="$1"
- shift
-
- _configure_LONG_BIT="$1"
- shift
-
- # Make sure to not generate tests if necessary.
- if [ "$gen_tests" -eq 0 ]; then
- _configure_configure_flags="-G $_configure_configure_flags"
- fi
-
- # Choose the right extra flags.
- if [ "$_configure_CC" = "clang" ]; then
- _configure_CFLAGS="$clang_flags $_configure_CFLAGS"
- elif [ "$_configure_CC" = "gcc" ]; then
- _configure_CFLAGS="$gcc_flags $_configure_CFLAGS"
- fi
-
- # Print the header and do the job.
- _configure_header=$(printf 'Running ./configure.sh %s ...' "$_configure_configure_flags")
- _configure_header=$(printf "$_configure_header\n CC=\"%s\"\n" "$_configure_CC")
- _configure_header=$(printf "$_configure_header\n CFLAGS=\"%s\"\n" "$_configure_CFLAGS")
- _configure_header=$(printf "$_configure_header\n LONG_BIT=%s" "$_configure_LONG_BIT")
- _configure_header=$(printf "$_configure_header\n GEN_HOST=%s" "$_configure_GEN_HOST")
-
- header "$_configure_header"
- CFLAGS="$_configure_CFLAGS" CC="$_configure_CC" GEN_HOST="$_configure_GEN_HOST" \
- LONG_BIT="$_configure_LONG_BIT" ./configure.sh $_configure_configure_flags > /dev/null
-}
-
-# Build with make. This function also captures and outputs any warnings if they
-# exists because as far as I am concerned, warnings are not acceptable for
-# release.
-# @param CFLAGS The CFLAGS.
-# @param CC The C compiler.
-# @param configure_flags The flags for configure.sh itself.
-# @param GEN_HOST The setting for GEN_HOST.
-# @param LONG_BIT The setting for LONG_BIT.
-build() {
-
- _build_CFLAGS="$1"
- shift
-
- _build_CC="$1"
- shift
-
- _build_configure_flags="$1"
- shift
-
- _build_GEN_HOST="$1"
- shift
-
- _build_LONG_BIT="$1"
- shift
-
- configure "$_build_CFLAGS" "$_build_CC" "$_build_configure_flags" "$_build_GEN_HOST" "$_build_LONG_BIT"
-
- _build_header=$(printf 'Building...\n CC=%s' "$_build_CC")
- _build_header=$(printf "$_build_header\n CFLAGS=\"%s\"" "$_build_CFLAGS")
- _build_header=$(printf "$_build_header\n LONG_BIT=%s" "$_build_LONG_BIT")
- _build_header=$(printf "$_build_header\n GEN_HOST=%s" "$_build_GEN_HOST")
-
- header "$_build_header"
-
- # Capture and print warnings.
- do_make > /dev/null 2> "$scriptdir/../.test.txt"
-
- if [ -s "$scriptdir/../.test.txt" ]; then
- printf '%s generated warning(s):\n' "$_build_CC"
- printf '\n'
- cat "$scriptdir/../.test.txt"
- exit 1
- fi
-}
-
-# Run tests with make.
-runtest() {
-
- header "Running tests"
-
- if [ "$#" -gt 0 ]; then
- do_make "$@"
- else
- do_make test
- fi
-}
-
-# Builds and runs tests with both calculators, then bc only, then dc only. If
-# run_tests is false, then it just does the builds.
-# @param CFLAGS The CFLAGS.
-# @param CC The C compiler.
-# @param configure_flags The flags for configure.sh itself.
-# @param GEN_HOST The setting for GEN_HOST.
-# @param LONG_BIT The setting for LONG_BIT.
-# @param run_tests Whether to run tests or not.
-runconfigtests() {
-
- _runconfigtests_CFLAGS="$1"
- shift
-
- _runconfigtests_CC="$1"
- shift
-
- _runconfigtests_configure_flags="$1"
- shift
-
- _runconfigtests_GEN_HOST="$1"
- shift
-
- _runconfigtests_LONG_BIT="$1"
- shift
-
- _runconfigtests_run_tests="$1"
- shift
-
- if [ "$_runconfigtests_run_tests" -ne 0 ]; then
- _runconfigtests_header=$(printf 'Running tests with configure flags')
- else
- _runconfigtests_header=$(printf 'Building with configure flags')
- fi
-
- _runconfigtests_header=$(printf "$_runconfigtests_header \"%s\" ...\n" "$_runconfigtests_configure_flags")
- _runconfigtests_header=$(printf "$_runconfigtests_header\n CC=%s\n" "$_runconfigseries_CC")
- _runconfigtests_header=$(printf "$_runconfigtests_header\n CFLAGS=\"%s\"" "$_runconfigseries_CFLAGS")
- _runconfigtests_header=$(printf "$_runconfigtests_header\n LONG_BIT=%s" "$_runconfigtests_LONG_BIT")
- _runconfigtests_header=$(printf "$_runconfigtests_header\n GEN_HOST=%s" "$_runconfigtests_GEN_HOST")
-
- header "$_runconfigtests_header"
-
- build "$_runconfigtests_CFLAGS" "$_runconfigtests_CC" \
- "$_runconfigtests_configure_flags" "$_runconfigtests_GEN_HOST" \
- "$_runconfigtests_LONG_BIT"
-
- if [ "$_runconfigtests_run_tests" -ne 0 ]; then
- runtest
- fi
-
- do_make clean
-
- build "$_runconfigtests_CFLAGS" "$_runconfigtests_CC" \
- "$_runconfigtests_configure_flags -b" "$_runconfigtests_GEN_HOST" \
- "$_runconfigtests_LONG_BIT"
-
- if [ "$_runconfigtests_run_tests" -ne 0 ]; then
- runtest
- fi
-
- do_make clean
-
- build "$_runconfigtests_CFLAGS" "$_runconfigtests_CC" \
- "$_runconfigtests_configure_flags -d" "$_runconfigtests_GEN_HOST" \
- "$_runconfigtests_LONG_BIT"
-
- if [ "$_runconfigtests_run_tests" -ne 0 ]; then
- runtest
- fi
-
- do_make clean
-}
-
-# Builds and runs tests with runconfigtests(), but also does 64-bit, 32-bit, and
-# 128-bit rand, if requested. It also does it with the gen script (strgen.sh) if
-# requested. If run_tests is false, it just does the builds.
-# @param CFLAGS The CFLAGS.
-# @param CC The C compiler.
-# @param configure_flags The flags for configure.sh itself.
-# @param run_tests Whether to run tests or not.
-runconfigseries() {
-
- _runconfigseries_CFLAGS="$1"
- shift
-
- _runconfigseries_CC="$1"
- shift
-
- _runconfigseries_configure_flags="$1"
- shift
-
- _runconfigseries_run_tests="$1"
- shift
-
- if [ "$run_64_bit" -ne 0 ]; then
-
- if [ "$test_128_bit" -ne 0 ]; then
- runconfigtests "$_runconfigseries_CFLAGS" "$_runconfigseries_CC" \
- "$_runconfigseries_configure_flags" 1 64 "$_runconfigseries_run_tests"
- fi
-
- if [ "$run_gen_script" -ne 0 ]; then
- runconfigtests "$_runconfigseries_CFLAGS" "$_runconfigseries_CC" \
- "$_runconfigseries_configure_flags" 0 64 "$_runconfigseries_run_tests"
- fi
-
- runconfigtests "$_runconfigseries_CFLAGS -DBC_RAND_BUILTIN=0" "$_runconfigseries_CC" \
- "$_runconfigseries_configure_flags" 1 64 "$_runconfigseries_run_tests"
-
- fi
-
- runconfigtests "$_runconfigseries_CFLAGS" "$_runconfigseries_CC" \
- "$_runconfigseries_configure_flags" 1 32 "$_runconfigseries_run_tests"
-
- if [ "$run_gen_script" -ne 0 ]; then
- runconfigtests "$_runconfigseries_CFLAGS" "$_runconfigseries_CC" \
- "$_runconfigseries_configure_flags" 0 32 "$_runconfigseries_run_tests"
- fi
-}
-
-# Builds and runs tests with each setting combo running runconfigseries(). If
-# run_tests is false, it just does the builds.
-# @param CFLAGS The CFLAGS.
-# @param CC The C compiler.
-# @param configure_flags The flags for configure.sh itself.
-# @param run_tests Whether to run tests or not.
-runsettingsseries() {
-
- _runsettingsseries_CFLAGS="$1"
- shift
-
- _runsettingsseries_CC="$1"
- shift
-
- _runsettingsseries_configure_flags="$1"
- shift
-
- _runsettingsseries_run_tests="$1"
- shift
-
- if [ "$test_settings" -ne 0 ]; then
-
- while read _runsettingsseries_s; do
- runconfigseries "$_runsettingsseries_CFLAGS" "$_runsettingsseries_CC" \
- "$_runsettingsseries_configure_flags $_runsettingsseries_s" \
- "$_runsettingsseries_run_tests"
- done < "$scriptdir/release_settings.txt"
-
- else
- runconfigseries "$_runsettingsseries_CFLAGS" "$_runsettingsseries_CC" \
- "$_runsettingsseries_configure_flags" "$_runsettingsseries_run_tests"
- fi
-}
-
-# Builds and runs tests with each build type running runsettingsseries(). If
-# run_tests is false, it just does the builds.
-# @param CFLAGS The CFLAGS.
-# @param CC The C compiler.
-# @param configure_flags The flags for configure.sh itself.
-# @param run_tests Whether to run tests or not.
-runtestseries() {
-
- _runtestseries_CFLAGS="$1"
- shift
-
- _runtestseries_CC="$1"
- shift
-
- _runtestseries_configure_flags="$1"
- shift
-
- _runtestseries_run_tests="$1"
- shift
-
- _runtestseries_flags="E H N EH EN HN EHN"
-
- runsettingsseries "$_runtestseries_CFLAGS" "$_runtestseries_CC" \
- "$_runtestseries_configure_flags" "$_runtestseries_run_tests"
-
- for _runtestseries_f in $_runtestseries_flags; do
- runsettingsseries "$_runtestseries_CFLAGS" "$_runtestseries_CC" \
- "$_runtestseries_configure_flags -$_runtestseries_f" "$_runtestseries_run_tests"
- done
-}
-
-# Builds and runs the tests for bcl. If run_tests is false, it just does the
-# builds.
-# @param CFLAGS The CFLAGS.
-# @param CC The C compiler.
-# @param configure_flags The flags for configure.sh itself.
-# @param run_tests Whether to run tests or not.
-runlibtests() {
-
- _runlibtests_CFLAGS="$1"
- shift
-
- _runlibtests_CC="$1"
- shift
-
- _runlibtests_configure_flags="$1"
- shift
-
- _runlibtests_run_tests="$1"
- shift
-
- _runlibtests_configure_flags="$_runlibtests_configure_flags -a"
-
- build "$_runlibtests_CFLAGS" "$_runlibtests_CC" "$_runlibtests_configure_flags" 1 64
-
- if [ "$_runlibtests_run_tests" -ne 0 ]; then
- runtest
- fi
-
- build "$_runlibtests_CFLAGS" "$_runlibtests_CC" "$_runlibtests_configure_flags" 1 32
-
- if [ "$_runlibtests_run_tests" -ne 0 ]; then
- runtest
- fi
-}
-
-# Builds and runs tests under C99, then C11, if requested, using
-# runtestseries(). If run_tests is false, it just does the builds.
-# @param CFLAGS The CFLAGS.
-# @param CC The C compiler.
-# @param configure_flags The flags for configure.sh itself.
-# @param run_tests Whether to run tests or not.
-runtests() {
-
- _runtests_CFLAGS="$1"
- shift
-
- _runtests_CC="$1"
- shift
-
- _runtests_configure_flags="$1"
- shift
-
- _runtests_run_tests="$1"
- shift
-
- runtestseries "-std=c99 $_runtests_CFLAGS" "$_runtests_CC" "$_runtests_configure_flags" "$_runtests_run_tests"
-
- if [ "$test_c11" -ne 0 ]; then
- runtestseries "-std=c11 $_runtests_CFLAGS" "$_runtests_CC" "$_runtests_configure_flags" "$_runtests_run_tests"
- fi
-}
-
-# Runs the karatsuba tests.
-karatsuba() {
-
- header "Running Karatsuba tests"
- do_make karatsuba_test
-}
-
-# Builds and runs under valgrind. It runs both, bc only, then dc only.
-vg() {
-
- header "Running valgrind"
-
- if [ "$run_64_bit" -ne 0 ]; then
- _vg_bits=64
- else
- _vg_bits=32
- fi
-
- build "$debug -std=c99" "gcc" "-O3 -gv" "1" "$_vg_bits"
- runtest test
-
- do_make clean_config
-
- build "$debug -std=c99" "gcc" "-O3 -gvb" "1" "$_vg_bits"
- runtest test
-
- do_make clean_config
-
- build "$debug -std=c99" "gcc" "-O3 -gvd" "1" "$_vg_bits"
- runtest test
-
- do_make clean_config
-
- build "$debug -std=c99" "gcc" "-O3 -gva" "1" "$_vg_bits"
- runtest test
-
- do_make clean_config
-}
-
-# Builds the debug series and runs the tests if run_tests allows. If sanitizers
-# are enabled, it also does UBSan.
-# @param CC The C compiler.
-# @param run_tests Whether to run tests or not.
-debug() {
-
- _debug_CC="$1"
- shift
-
- _debug_run_tests="$1"
- shift
-
-
- if [ "$_debug_CC" = "clang" -a "$run_sanitizers" -ne 0 ]; then
- runtests "$debug -fsanitize=undefined" "$_debug_CC" "-gm" "$_debug_run_tests"
- else
- runtests "$debug" "$_debug_CC" "-g" "$_debug_run_tests"
- fi
-
-
- if [ "$_debug_CC" = "clang" -a "$run_sanitizers" -ne 0 ]; then
- runlibtests "$debug -fsanitize=undefined" "$_debug_CC" "-gm" "$_debug_run_tests"
- else
- runlibtests "$debug" "$_debug_CC" "-g" "$_debug_run_tests"
- fi
-}
-
-# Builds the release series and runs the test if run_tests allows.
-# @param CC The C compiler.
-# @param run_tests Whether to run tests or not.
-release() {
-
- _release_CC="$1"
- shift
-
- _release_run_tests="$1"
- shift
-
- runtests "$release" "$_release_CC" "-O3" "$_release_run_tests"
-
- runlibtests "$release" "$_release_CC" "-O3" "$_release_run_tests"
-}
-
-# Builds the release debug series and runs the test if run_tests allows. If
-# sanitizers are enabled, it also does ASan and MSan.
-# @param CC The C compiler.
-# @param run_tests Whether to run tests or not.
-reldebug() {
-
- _reldebug_CC="$1"
- shift
-
- _reldebug_run_tests="$1"
- shift
-
-
- if [ "$_reldebug_CC" = "clang" -a "$run_sanitizers" -ne 0 ]; then
- runtests "$debug -fsanitize=address" "$_reldebug_CC" "-mgO3" "$_reldebug_run_tests"
- runtests "$debug -fsanitize=memory" "$_reldebug_CC" "-mgO3" "$_reldebug_run_tests"
- else
- runtests "$debug" "$_reldebug_CC" "-gO3" "$_reldebug_run_tests"
- fi
-
-
- if [ "$_reldebug_CC" = "clang" -a "$run_sanitizers" -ne 0 ]; then
- runlibtests "$debug -fsanitize=address" "$_reldebug_CC" "-mgO3" "$_reldebug_run_tests"
- runlibtests "$debug -fsanitize=memory" "$_reldebug_CC" "-mgO3" "$_reldebug_run_tests"
- else
- runlibtests "$debug" "$_reldebug_CC" "-gO3" "$_reldebug_run_tests"
- fi
-}
-
-# Builds the min size release series and runs the test if run_tests allows.
-# @param CC The C compiler.
-# @param run_tests Whether to run tests or not.
-minsize() {
-
- _minsize_CC="$1"
- shift
-
- _minsize_run_tests="$1"
- shift
-
- runtests "$release" "$_minsize_CC" "-Os" "$_minsize_run_tests"
-
- runlibtests "$release" "$_minsize_CC" "-Os" "$_minsize_run_tests"
-}
-
-# Builds all sets: debug, release, release debug, and min size, and runs the
-# tests if run_tests allows.
-# @param CC The C compiler.
-# @param run_tests Whether to run tests or not.
-build_set() {
-
- _build_set_CC="$1"
- shift
-
- _build_set_run_tests="$1"
- shift
-
- debug "$_build_set_CC" "$_build_set_run_tests"
- release "$_build_set_CC" "$_build_set_run_tests"
- reldebug "$_build_set_CC" "$_build_set_run_tests"
- minsize "$_build_set_CC" "$_build_set_run_tests"
-}
-
-# Set some strict warning flags. Clang's -Weverything can be way too strict, so
-# we actually have to turn off some things.
-clang_flags="-Weverything -Wno-padded -Wno-switch-enum -Wno-format-nonliteral"
-clang_flags="$clang_flags -Wno-cast-align -Wno-missing-noreturn -Wno-disabled-macro-expansion"
-clang_flags="$clang_flags -Wno-unreachable-code -Wno-unreachable-code-return"
-clang_flags="$clang_flags -Wno-implicit-fallthrough -Wno-unused-macros -Wno-gnu-label-as-value"
-gcc_flags="-Wno-maybe-uninitialized -Wno-clobbered"
-
-# Common CFLAGS.
-cflags="-Wall -Wextra -Werror -pedantic -Wno-conditional-uninitialized"
-
-# Common debug and release flags.
-debug="$cflags -fno-omit-frame-pointer"
-release="$cflags -DNDEBUG"
-
-set -e
-
-script="$0"
-scriptdir=$(dirname "$script")
-
-# Whether to run tests.
-if [ "$#" -gt 0 ]; then
- run_tests="$1"
- shift
-else
- run_tests=1
-fi
-
-# Whether to generate tests. On platforms like OpenBSD, there is no GNU bc to
-# generate tests, so this must be off.
-if [ "$#" -gt 0 ]; then
- gen_tests="$1"
- shift
-else
- gen_tests=1
-fi
-
-# Whether to test with clang.
-if [ "$#" -gt 0 ]; then
- test_with_clang="$1"
- shift
-else
- test_with_clang=1
-fi
-
-# Whether to test with gcc.
-if [ "$#" -gt 0 ]; then
- test_with_gcc="$1"
- shift
-else
- test_with_gcc=1
-fi
-
-# Whether to test with sanitizers.
-if [ "$#" -gt 0 ]; then
- run_sanitizers="$1"
- shift
-else
- run_sanitizers=1
-fi
-
-# Whether to test with valgrind.
-if [ "$#" -gt 0 ]; then
- run_valgrind="$1"
- shift
-else
- run_valgrind=1
-fi
-
-# Whether to test all settings combos.
-if [ "$#" -gt 0 ]; then
- test_settings="$1"
- shift
-else
- test_settings=1
-fi
-
-# Whether to test 64-bit in addition to 32-bit.
-if [ "$#" -gt 0 ]; then
- run_64_bit="$1"
- shift
-else
- run_64_bit=1
-fi
-
-# Whether to test with strgen.sh in addition to strgen.c.
-if [ "$#" -gt 0 ]; then
- run_gen_script="$1"
- shift
-else
- run_gen_script=0
-fi
-
-# Whether to test on C11 in addition to C99.
-if [ "$#" -gt 0 ]; then
- test_c11="$1"
- shift
-else
- test_c11=0
-fi
-
-# Whether to test 128-bit integers in addition to no 128-bit integers.
-if [ "$#" -gt 0 ]; then
- test_128_bit="$1"
- shift
-else
- test_128_bit=0
-fi
-
-# Whether to test with computed goto or not.
-if [ "$#" -gt 0 ]; then
- test_computed_goto="$1"
- shift
-else
- test_computed_goto=0
-fi
-
-if [ "$run_64_bit" -ne 0 ]; then
- bits=64
-else
- bits=32
-fi
-
-if [ "$test_computed_goto" -eq 0 ]; then
- clang_flags="-DBC_NO_COMPUTED_GOTO $clang_flags"
- gcc_flags="-DBC_NO_COMPUTED_GOTO $gcc_flags"
-fi
-
-cd "$scriptdir/.."
-
-# Setup a default compiler.
-if [ "$test_with_clang" -ne 0 ]; then
- defcc="clang"
-elif [ "$test_with_gcc" -ne 0 ]; then
- defcc="gcc"
-else
- defcc="c99"
-fi
-
-export ASAN_OPTIONS="abort_on_error=1,allocator_may_return_null=1"
-export UBSAN_OPTIONS="print_stack_trace=1,silence_unsigned_overflow=1"
-
-build "$debug -std=c99" "$defcc" "-g" "1" "$bits"
-
-header "Running math library under --standard"
-
-# Make sure the math library is POSIX compliant.
-printf 'quit\n' | bin/bc -ls
-
-do_make clean_tests
-
-# Run the clang build sets.
-if [ "$test_with_clang" -ne 0 ]; then
- build_set "clang" "$run_tests"
-fi
-
-# Run the gcc build sets.
-if [ "$test_with_gcc" -ne 0 ]; then
- build_set "gcc" "$run_tests"
-fi
-
-if [ "$run_tests" -ne 0 ]; then
-
- build "$release" "$defcc" "-O3" "1" "$bits"
-
- # Run karatsuba.
- karatsuba
-
- # Valgrind.
- if [ "$run_valgrind" -ne 0 -a "$test_with_gcc" -ne 0 ]; then
- vg
- fi
-
- printf '\n'
- printf 'Tests successful.\n'
-
- # I just assume that I am going to be fuzzing when I am done.
- header "Building for AFL++..."
-
- "$scriptdir/fuzz_prep.sh"
-
- printf '\n'
- printf 'Ready for scripts/randmath.py and for fuzzing.\n'
- printf '\n'
- printf 'Run scripts/randmath.py if you changed any math code.\n'
- printf '\n'
- printf 'Then if there are no problems, run the fuzzer.\n'
- printf '\n'
- printf 'Then run `scripts/fuzz_prep.sh -a`.\n'
- printf '\n'
- printf 'Then run `scripts/afl.py --asan`.\n'
-
-fi