xref: /aosp_15_r20/external/bc/scripts/test_settings.sh (revision 5a6e848804d15c18a0125914844ee4eb0bda4fcf)
1#! /bin/sh
2#
3# SPDX-License-Identifier: BSD-2-Clause
4#
5# Copyright (c) 2018-2024 Gavin D. Howard and contributors.
6#
7# Redistribution and use in source and binary forms, with or without
8# modification, are permitted provided that the following conditions are met:
9#
10# * Redistributions of source code must retain the above copyright notice, this
11#   list of conditions and the following disclaimer.
12#
13# * Redistributions in binary form must reproduce the above copyright notice,
14#   this list of conditions and the following disclaimer in the documentation
15#   and/or other materials provided with the distribution.
16#
17# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
21# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27# POSSIBILITY OF SUCH DAMAGE.
28#
29
30# This script's argument is a number, which is the index of the setting set
31# that is under test. This script is for maintainers only.
32#
33# The procedure is this: run the script with:
34#
35# ./scripts/test_settings.sh 1
36#
37# Then run bc and dc to ensure their stuff is correct. Then run this script
38# again with:
39#
40# ./scripts/test_settings.sh 2
41#
42# And repeat. You can also test various environment variable sets with them.
43
44# Print the usage and exit with an error.
45usage() {
46	printf 'usage: %s index\n' "$0" 1>&2
47	exit 1
48}
49
50script="$0"
51scriptdir=$(dirname "$script")
52
53. "$scriptdir/functions.sh"
54
55cd "$scriptdir/.."
56
57test "$#" -eq 1 || usage
58
59target="$1"
60shift
61
62line=0
63
64# This loop just loops until it gets to the right line. Quick and dirty.
65while read s; do
66
67	line=$(printf '%s + 1\n' "$line" | bc)
68
69	if [ "$line" -eq "$target" ]; then
70
71		# Configure, build, and exit.
72		./configure.sh -O3 $s
73
74		make -j16 > /dev/null
75
76		exit
77	fi
78
79done < "$scriptdir/test_settings.txt"
80