Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
HardenedBSD
HardenedBSD
Commits
04f26504
Commit
04f26504
authored
Nov 26, 2020
by
Stefan Eßer
Browse files
Update to version 3.2.0
parent
9fef4b8d
Changes
98
Expand all
Hide whitespace changes
Inline
Side-by-side
.gitignore
View file @
04f26504
...
...
@@ -9,6 +9,7 @@ bin/*bc
bin/*bc.exe
bin/*dc
bin/*dc.exe
bin/bcl
bc.old
*.o
*.a
...
...
Makefile.in
View file @
04f26504
...
...
@@ -29,33 +29,13 @@
#
.POSIX
:
VERSION
=
3.
1.6
VERSION
=
3.
2.0
SRC
=
%%SRC%%
OBJ
=
%%OBJ%%
GCDA
=
%%GCDA%%
GCNO
=
%%GCNO%%
BC_SRC
=
%%BC_SRC%%
BC_OBJ
=
%%BC_OBJ%%
BC_GCDA
=
%%BC_GCDA%%
BC_GCNO
=
%%BC_GCNO%%
DC_SRC
=
%%DC_SRC%%
DC_OBJ
=
%%DC_OBJ%%
DC_GCDA
=
%%DC_GCDA%%
DC_GCNO
=
%%DC_GCNO%%
HISTORY_SRC
=
%%HISTORY_SRC%%
HISTORY_OBJ
=
%%HISTORY_OBJ%%
HISTORY_GCDA
=
%%HISTORY_GCDA%%
HISTORY_GCNO
=
%%HISTORY_GCNO%%
RAND_SRC
=
%%RAND_SRC%%
RAND_OBJ
=
%%RAND_OBJ%%
RAND_GCDA
=
%%RAND_GCDA%%
RAND_GCNO
=
%%RAND_GCNO%%
BC_ENABLED_NAME
=
BC_ENABLED
BC_ENABLED
=
%%BC_ENABLED%%
DC_ENABLED_NAME
=
DC_ENABLED
...
...
@@ -102,6 +82,13 @@ DC = dc
BC_EXEC
=
$(BIN)
/
$(EXEC_PREFIX)$(BC)
DC_EXEC
=
$(BIN)
/
$(EXEC_PREFIX)$(DC)
LIB
=
libbcl
LIB_NAME
=
$(LIB)
.a
LIBBC
=
$(BIN)
/
$(LIB_NAME)
BCL
=
bcl
BCL_TEST
=
$(BIN)
/
$(BCL)
BCL_TEST_C
=
tests/
$(BCL)
.c
MANUALS
=
manuals
BC_MANPAGE_NAME
=
$(EXEC_PREFIX)$(BC)$(EXEC_SUFFIX)
.1
BC_MANPAGE
=
$(MANUALS)
/
$(BC)
.1
...
...
@@ -109,16 +96,28 @@ BC_MD = $(BC_MANPAGE).md
DC_MANPAGE_NAME
=
$(EXEC_PREFIX)$(DC)$(EXEC_SUFFIX)
.1
DC_MANPAGE
=
$(MANUALS)
/
$(DC)
.1
DC_MD
=
$(DC_MANPAGE)
.md
BCL_MANPAGE_NAME
=
bcl.3
BCL_MANPAGE
=
$(MANUALS)
/
$(BCL_MANPAGE_NAME)
BCL_MD
=
$(BCL_MANPAGE)
.md
MANPAGE_INSTALL_ARGS
=
-Dm644
BINARY_INSTALL_ARGS
=
-Dm755
BCL_HEADER_NAME
=
bcl.h
BCL_HEADER
=
include/
$(BCL_HEADER_NAME)
%%DESTDIR%%
BINDIR
=
%%BINDIR%%
INCLUDEDIR
=
%%INCLUDEDIR%%
LIBDIR
=
%%LIBDIR%%
MAN1DIR
=
%%MAN1DIR%%
MAN3DIR
=
%%MAN3DIR%%
MAIN_EXEC
=
$(EXEC_PREFIX)
$
(
%%MAIN_EXEC%%
)
$(EXEC_SUFFIX)
EXEC
=
$
(
%%EXEC%%
)
NLSPATH
=
%%NLSPATH%%
BC_ENABLE_LIBRARY
=
%%LIBRARY%%
BC_ENABLE_HISTORY
=
%%HISTORY%%
BC_ENABLE_EXTRA_MATH_NAME
=
BC_ENABLE_EXTRA_MATH
BC_ENABLE_EXTRA_MATH
=
%%EXTRA_MATH%%
...
...
@@ -129,7 +128,7 @@ BC_LONG_BIT = %%LONG_BIT%%
RM
=
rm
MKDIR
=
mkdir
INSTALL
=
./install.sh
INSTALL
=
./
exec-
install.sh
SAFE_INSTALL
=
./safe-install.sh
LINK
=
./link.sh
MANPAGE
=
./manpage.sh
...
...
@@ -148,7 +147,7 @@ CPPFLAGS4 = $(CPPFLAGS3) -D_POSIX_C_SOURCE=200809L -D_XOPEN_SOURCE=700
CPPFLAGS5
=
$(CPPFLAGS4)
-DBC_NUM_KARATSUBA_LEN
=
$(BC_NUM_KARATSUBA_LEN)
CPPFLAGS6
=
$(CPPFLAGS5)
-DBC_ENABLE_NLS
=
$(BC_ENABLE_NLS)
-DBC_ENABLE_PROMPT
=
$(BC_ENABLE_PROMPT)
CPPFLAGS7
=
$(CPPFLAGS6)
-D
$(BC_ENABLE_EXTRA_MATH_NAME)
=
$(BC_ENABLE_EXTRA_MATH)
CPPFLAGS
=
$(CPPFLAGS7)
-DBC_ENABLE_HISTORY
=
$(BC_ENABLE_HISTORY)
CPPFLAGS
=
$(CPPFLAGS7)
-DBC_ENABLE_HISTORY
=
$(BC_ENABLE_HISTORY)
-DBC_ENABLE_LIBRARY
=
$(BC_ENABLE_LIBRARY)
CFLAGS
=
$(CPPFLAGS)
%%CPPFLAGS%% %%CFLAGS%%
LDFLAGS
=
%%LDFLAGS%%
...
...
@@ -157,21 +156,24 @@ HOSTCFLAGS = %%HOSTCFLAGS%%
CC
=
%%CC%%
HOSTCC
=
%%HOSTCC%%
BC_LIB_C_ARGS
=
bc_lib
bc.h
bc_lib_name
$(BC_ENABLED_NAME)
1
BC_LIB2_C_ARGS
=
bc_lib2
bc.h
bc_lib2_name
"
$(BC_ENABLED_NAME)
&&
$(BC_ENABLE_EXTRA_MATH_NAME)
"
1
BC_LIB_C_ARGS
=
bc_lib bc_lib_name
$(BC_ENABLED_NAME)
1
BC_LIB2_C_ARGS
=
bc_lib2 bc_lib2_name
"
$(BC_ENABLED_NAME)
&&
$(BC_ENABLE_EXTRA_MATH_NAME)
"
1
OBJS1
=
$(OBJ)
$(DC_OBJ)
$(BC_OBJ)
$(HISTORY_OBJ)
$(RAND_OBJ)
$(BC_HELP_O)
$(DC_HELP_O)
OBJS
=
$(OBJS1)
$(BC_LIB_O)
$(BC_LIB2_O)
$(BC_LIB3_O)
OBJ_TARGETS1
=
$(DC_HELP_O)
$(BC_HELP_O)
$(BC_LIB_O)
$(BC_LIB2_O)
$(BC_LIB3_O)
OBJ_TARGETS
=
$(OBJ_TARGETS1)
$(BC_OBJ)
$(DC_OBJ)
$(HISTORY_OBJ)
$(RAND_OBJ)
$(OBJ)
OBJS
=
$(BC_HELP_O)
$(DC_HELP_O)
$(BC_LIB_O)
$(BC_LIB2_O)
$(OBJ)
OBJ_TARGETS
=
$(DC_HELP_O)
$(BC_HELP_O)
$(BC_LIB_O)
$(BC_LIB2_O)
$(OBJ)
.c.o
:
$(CC)
$(CFLAGS)
-o
$@
-c
$<
all
:
make_bin $(OBJ_TARGETS)
all
:
%%ALL_PREREQ%%
execs
:
make_bin $(OBJ_TARGETS)
$(CC)
$(CFLAGS)
$(OBJS)
$(LDFLAGS)
-o
$(EXEC)
%%LINK%%
library
:
make_bin $(OBJ) $(BC_LIB_O) $(BC_LIB2_O)
ar
-r
-cu
$(LIBBC)
$(BC_LIB_O)
$(BC_LIB2_O)
$(OBJ)
$(GEN_EXEC)
:
%%GEN_EXEC_TARGET%%
...
...
@@ -182,10 +184,10 @@ $(BC_LIB2_C): $(GEN_EXEC) $(BC_LIB2)
$(GEN_EMU)
$(GEN_EXEC)
$(BC_LIB2)
$(BC_LIB2_C)
$(BC_LIB2_C_ARGS)
$(BC_HELP_C)
:
$(GEN_EXEC) $(BC_HELP)
$(GEN_EMU)
$(GEN_EXEC)
$(BC_HELP)
$(BC_HELP_C)
bc_help
bc.h
""
$(BC_ENABLED_NAME)
$(GEN_EMU)
$(GEN_EXEC)
$(BC_HELP)
$(BC_HELP_C)
bc_help
""
$(BC_ENABLED_NAME)
$(DC_HELP_C)
:
$(GEN_EXEC) $(DC_HELP)
$(GEN_EMU)
$(GEN_EXEC)
$(DC_HELP)
$(DC_HELP_C)
dc_help
dc.h
""
$(DC_ENABLED_NAME)
$(GEN_EMU)
$(GEN_EXEC)
$(DC_HELP)
$(DC_HELP_C)
dc_help
""
$(DC_ENABLED_NAME)
make_bin
:
$(MKDIR)
-p
$(BIN)
...
...
@@ -222,7 +224,7 @@ help:
check
:
test
test
:
test_bc timeconst test_dc
test
:
%%TESTS%%
test_bc
:
%%BC_TEST%%
...
...
@@ -241,6 +243,12 @@ time_test_dc:
timeconst
:
%%TIMECONST%%
library_test
:
library
$(CC)
$(CFLAGS)
$(BCL_TEST_C)
$(LIBBC)
-o
$(BCL_TEST)
test_library
:
library_test
$(BCL_TEST)
valgrind
:
valgrind_bc valgrind_dc
valgrind_bc
:
...
...
@@ -272,6 +280,7 @@ extra_math:
manpages
:
$(MANPAGE)
bc
$(MANPAGE)
dc
$(MANPAGE)
bcl
clean_gen
:
@
$(RM)
-f
$(GEN_EXEC)
...
...
@@ -279,10 +288,6 @@ clean_gen:
clean
:
%%CLEAN_PREREQS%%
@
printf
'Cleaning files...\n'
@
$(RM)
-f
$(OBJ)
@
$(RM)
-f
$(BC_OBJ)
@
$(RM)
-f
$(DC_OBJ)
@
$(RM)
-f
$(HISTORY_OBJ)
@
$(RM)
-f
$(RAND_OBJ)
@
$(RM)
-f
$(BC_EXEC)
@
$(RM)
-f
$(DC_EXEC)
@
$(RM)
-fr
$(BIN)
...
...
@@ -343,9 +348,20 @@ install_bc_manpage:
install_dc_manpage
:
$(SAFE_INSTALL)
$(MANPAGE_INSTALL_ARGS)
$(DC_MANPAGE)
$(DESTDIR)$(MAN1DIR)
/
$(DC_MANPAGE_NAME)
install
:
%%INSTALL_LOCALES_PREREQS%%%%INSTALL_PREREQS%%
install_bcl_manpage
:
$(SAFE_INSTALL)
$(MANPAGE_INSTALL_ARGS)
$(BCL_MANPAGE)
$(DESTDIR)$(MAN3DIR)
/
$(BCL_MANPAGE_NAME)
install_bcl_header
:
$(SAFE_INSTALL)
$(MANPAGE_INSTALL_ARGS)
$(BCL_HEADER)
$(DESTDIR)$(INCLUDEDIR)
/
$(BCL_HEADER_NAME)
install_execs
:
$(INSTALL)
$(DESTDIR)$(BINDIR)
"
$(EXEC_SUFFIX)
"
install_library
:
$(SAFE_INSTALL)
$(BINARY_INSTALL_ARGS)
$(LIBBC)
$(DESTDIR)$(LIBDIR)
/
$(LIB_NAME)
install
:
%%INSTALL_LOCALES_PREREQS%%%%INSTALL_MAN_PREREQS%%%%INSTALL_PREREQS%%
uninstall_locales
:
$(LOCALE_UNINSTALL)
$(NLSPATH)
$(MAIN_EXEC)
$(DESTDIR)
...
...
@@ -361,4 +377,13 @@ uninstall_dc_manpage:
uninstall_dc
:
$(RM)
-f
$(DESTDIR)$(BINDIR)
/
$(EXEC_PREFIX)$(DC)$(EXEC_SUFFIX)
uninstall_library
:
$(RM)
-f
$(DESTDIR)$(LIBDIR)
/
$(LIB_NAME)
uninstall_bcl_header
:
$(RM)
-f
$(DESTDIR)$(INCLUDEDIR)
/
$(BCL_HEADER_NAME)
uninstall_bcl_manpage
:
$(RM)
-f
$(DESTDIR)$(MAN3DIR)
/
$(BCL_MANPAGE_NAME)
uninstall
:
%%UNINSTALL_LOCALES_PREREQS%%%%UNINSTALL_MAN_PREREQS%%%%UNINSTALL_PREREQS%%
NEWS.md
View file @
04f26504
# News
## 3.2.0
This is a production release that has one bug fix and a major addition.
The bug fix was a missing
`auto`
variable in the bessel
`j()`
function in the
math library.
The major addition is a way to build a version of
`bc`
's math code as a library.
This is done with the
`-a`
option to
`configure.sh`
. The API for the library can
be read in
`./manuals/bcl.3.md`
or
`man bcl`
once the library is installed with
`make install`
.
This library was requested by developers before I even finished version 1.0, but
I could not figure out how to do it until now.
If the library has API breaking changes, the major version of
`bc`
will be
incremented.
## 3.1.6
This is a production release that fixes a new warning from Clang 12 for FreeBSD
...
...
README.md
View file @
04f26504
...
...
@@ -107,6 +107,23 @@ other locations, use the `PREFIX` environment variable when running
`configure.sh`
or pass the
`--prefix=<prefix>`
option to
`configure.sh`
. See the
[
build manual
][
5
]
, or run
`./configure.sh --help`
, for more details.
### Library
This
`bc`
does provide a way to build a math library with C bindings. This is
done by the
`-a`
or
`--library`
options to
`configure.sh`
:
```
./configure.sh -a
```
When building the library, the executables are not built. For more information,
see the
[
build manual
][
5
]
.
The library API can be found in
[
`manuals/bcl.3.md`
][
26
]
or
`man bcl`
once the
library is installed.
The library is built as
`bin/libbcl.a`
.
### Package and Distro Maintainers
#### Recommended Compiler
...
...
@@ -335,3 +352,4 @@ Folders:
[
23
]:
https://svnweb.freebsd.org/base/head/contrib/bc/
[
24
]:
https://bugs.freebsd.org/
[
25
]:
https://reviews.freebsd.org/
[
26
]:
./manuals/bcl.3.md
configure.sh
View file @
04f26504
...
...
@@ -45,22 +45,27 @@ usage() {
_usage_val
=
0
fi
printf
'usage:
%s -h\n'
"
$script
"
printf
'
%s
-
-h
elp
\n'
"
$script
"
printf
'
%s [-bD|-dB|-c] [-EfgGHlMNPT] [-O OPT_LEVEL] [-k KARATSUBA_LEN]
\n'
"
$script
"
printf
'
%s \\
\n'
"
$script
"
printf
'
[--bc-only --disable-dc|--dc-only --disable-bc|--coverage] \\\n'
printf
'
[--debug --disable-extra-math --disable-generated-tests]
\\\n'
printf
'
[--disable-history
--disable-
man-pages
--disable-
nls]
\\\n'
printf
'
[--disable-
prompt
--disable-
strip] [--install-all-locales]
\\\n'
printf
'
[--opt=OPT_LEVEL] [--karatsuba-len=KARATSUBA_LEN]
\\\n'
printf
'
[--prefix=PREFIX] [--bindir=BINDIR] [--datarootdir=DATAROOTDIR]
\\\n'
printf
'
[--datadir=DATADIR
] [--
ma
ndir=
MA
NDIR] [--
man1dir=MAN1
DIR]
\\\n'
printf
'
[--force]
\\\n'
printf
'usage:
\n'
printf
' %s -h\n'
"
$script
"
printf
'
%s --help
\n'
"
$script
"
printf
'
%s [-a|-bD|-dB|-c] [-EfgGHlMNPT] [-O OPT_LEVEL] [-k KARATSUBA_LEN]
\n'
"
$script
"
printf
'
%s \\\n'
"
$script
"
printf
'
[--library|--bc-only --disable-dc|--dc-only --disable-bc|--coverage]
\\\n'
printf
'
[--force --debug
--disable-
extra-math
--disable-
generated-tests]
\\\n'
printf
' [--disable-
history
--disable-
man-pages --disable-nls]
\\\n'
printf
'
[--disable-prompt --disable-strip] [--install-all-locales]
\\\n'
printf
'
[--opt=OPT_LEVEL] [--karatsuba-len=KARATSUBA_LEN]
\\\n'
printf
'
[--prefix=PREFIX
] [--
bi
ndir=
BI
NDIR] [--
datarootdir=DATAROOT
DIR] \\\n'
printf
'
[--datadir=DATADIR] [--mandir=MANDIR] [--man1dir=MAN1DIR]
\\\n'
printf
'\n'
printf
' -a, --library\n'
printf
' Build the libbc instead of the programs. This is meant to be used with\n'
printf
' Other software like programming languages that want to make use of the\n'
printf
' parsing and math capabilities. This option will install headers using\n'
printf
' `make install`.\n'
printf
' -b, --bc-only\n'
printf
' Build bc only. It is an error if "-d", "--dc-only", "-B", or
"--disable-bc"
\n'
printf
' are specified too.\n'
printf
' Build bc only. It is an error if "-d", "--dc-only", "-B", or\n'
printf
'
"--disable-bc"
are specified too.\n'
printf
' -B, --disable-bc\n'
printf
' Disable bc. It is an error if "-b", "--bc-only", "-D", or "--disable-dc"\n'
printf
' are specified too.\n'
...
...
@@ -69,10 +74,10 @@ usage() {
printf
' It is an error if either "-b" ("-D") or "-d" ("-B") is specified.\n'
printf
' Requires a compiler that use gcc-compatible coverage options\n'
printf
' -d, --dc-only\n'
printf
' Build dc only. It is an error if "-b", "--bc-only", "-D", or
"--disable-dc"
\n'
printf
' are specified too.\n'
printf
' Build dc only. It is an error if "-b", "--bc-only", "-D", or\n'
printf
'
"--disable-dc"
are specified too.\n'
printf
' -D, --disable-dc\n'
printf
' Disable dc. It is an error if "-d", "--dc-only" "-B", or "--disable-bc"\n'
printf
' Disable dc. It is an error if "-d", "--dc-only"
,
"-B", or "--disable-bc"\n'
printf
' are specified too.\n'
printf
' -E, --disable-extra-math\n'
printf
' Disable extra math. This includes: "$" operator (truncate to integer),\n'
...
...
@@ -122,8 +127,14 @@ usage() {
printf
' If PREFIX is "/usr", install path will be "/usr/bin".\n'
printf
' Default is "/usr/local".\n'
printf
' --bindir BINDIR\n'
printf
' The directory to install binaries. Overrides "$BINDIR" if it exists.\n'
printf
' The directory to install binaries
in
. Overrides "$BINDIR" if it exists.\n'
printf
' Default is "$PREFIX/bin".\n'
printf
' --includedir INCLUDEDIR\n'
printf
' The directory to install headers in. Overrides "$INCLUDEDIR" if it\n'
printf
' exists. Default is "$PREFIX/include".\n'
printf
' --libdir LIBDIR\n'
printf
' The directory to install libraries in. Overrides "$LIBDIR" if it exists.\n'
printf
' Default is "$PREFIX/lib".\n'
printf
' --datarootdir DATAROOTDIR\n'
printf
' The root location for data files. Overrides "$DATAROOTDIR" if it exists.\n'
printf
' Default is "$PREFIX/share".\n'
...
...
@@ -136,6 +147,9 @@ usage() {
printf
' --man1dir MAN1DIR\n'
printf
' The location to install Section 1 manpages to. Overrides "$MAN1DIR" if\n'
printf
' it exists. Default is "$MANDIR/man1".\n'
printf
' --man3dir MAN3DIR\n'
printf
' The location to install Section 3 manpages to. Overrides "$MAN3DIR" if\n'
printf
' it exists. Default is "$MANDIR/man3".\n'
printf
'\n'
printf
'In addition, the following environment variables are used:\n'
printf
'\n'
...
...
@@ -157,12 +171,18 @@ usage() {
printf
' LDFLAGS Linker flags. Default is "".\n'
printf
' PREFIX The prefix to install to. Default is "/usr/local".\n'
printf
' If PREFIX is "/usr", install path will be "/usr/bin".\n'
printf
' BINDIR The directory to install binaries. Default is "$PREFIX/bin".\n'
printf
' BINDIR The directory to install binaries in. Default is "$PREFIX/bin".\n'
printf
' INCLUDEDIR The directory to install header files in. Default is\n'
printf
' "$PREFIX/include".\n'
printf
' LIBDIR The directory to install libraries in. Default is\n'
printf
' "$PREFIX/lib".\n'
printf
' DATAROOTDIR The root location for data files. Default is "$PREFIX/share".\n'
printf
' DATADIR The location for data files. Default is "$DATAROOTDIR".\n'
printf
' MANDIR The location to install manpages to. Default is "$DATADIR/man".\n'
printf
' MAN1DIR The location to install Section 1 manpages to. Default is\n'
printf
' "$MANDIR/man1".\n'
printf
' MAN3DIR The location to install Section 3 manpages to. Default is\n'
printf
' "$MANDIR/man3".\n'
printf
' NLSPATH The location to install locale catalogs to. Must be an absolute\n'
printf
' path (or contain one). This is treated the same as the POSIX\n'
printf
' definition of $NLSPATH (see POSIX environment variables for\n'
...
...
@@ -257,56 +277,55 @@ replace() {
substring_replace
"
$_replace_str
"
"%%
$_replace_needle
%%"
"
$_replace_replacement
"
}
gen_file_list
s
()
{
gen_file_list
()
{
if
[
"$#"
-lt
3
]
;
then
if
[
"$#"
-lt
1
]
;
then
err_exit
"Invalid number of args to
$0
"
fi
_gen_file_list
s
_contents
=
"
$1
"
_gen_file_list_contents
=
"
$1
"
shift
_gen_file_lists_filedir
=
"
$1
"
shift
p
=
$(
pwd
)
_gen_file_lists_typ
=
"
$1
"
shift
cd
"
$scriptdir
"
if
[
"$#"
-ge
1
]
;
then
while
[
"$#"
-ge
1
]
;
do
a
=
"
$1
"
shift
args
=
"
$args
! -wholename src/
${
a
}
"
done
# If there is an extra argument, and it
# is zero, we keep the file lists empty.
if
[
"$#"
-gt
0
]
;
then
_gen_file_lists_use
=
"
$1
"
else
_gen_file_lists_use
=
"1
"
args
=
"-print
"
fi
_gen_file_list
s
_needle_src
=
"
${
_gen_file_lists_typ
}
SRC"
_gen_file_list
s
_needle_obj
=
"
${
_gen_file_lists_typ
}
OBJ"
_gen_file_list
s
_needle_gcda
=
"
${
_gen_file_lists_typ
}
GCDA"
_gen_file_list
s
_needle_gcno
=
"
${
_gen_file_lists_typ
}
GCNO"
_gen_file_list_needle_src
=
"SRC"
_gen_file_list_needle_obj
=
"OBJ"
_gen_file_list_needle_gcda
=
"GCDA"
_gen_file_list_needle_gcno
=
"GCNO"
if
[
"
$_gen_file_lists_use
"
-ne
0
]
;
then
_gen_file_list_replacement
=
$(
find src/
-depth
-name
"*.c"
$args
|
tr
'\n'
' '
)
_gen_file_list_contents
=
$(
replace
"
$_gen_file_list_contents
"
\
"
$_gen_file_list_needle_src
"
"
$_gen_file_list_replacement
"
)
_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'
' '
)
_gen_file_lists_contents
=
$(
replace
"
$_gen_file_lists_contents
"
"
$_gen_file_lists_needle_src
"
"
$_gen_file_lists_replacement
"
)
_gen_file_list_replacement
=
$(
replace_exts
"
$_gen_file_list_replacement
"
"c"
"o"
)
_gen_file_list_contents
=
$(
replace
"
$_gen_file_list_contents
"
\
"
$_gen_file_list_needle_obj
"
"
$_gen_file_list_replacement
"
)
_gen_file_lists_replacement
=
$(
replace_exts
"
$_gen_file_lists_replacement
"
"c"
"o"
)
_gen_file_lists_contents
=
$(
replace
"
$_gen_file_lists_contents
"
"
$_gen_file_lists_needle_obj
"
"
$_gen_file_lists_replacement
"
)
_gen_file_list_replacement
=
$(
replace_exts
"
$_gen_file_list_replacement
"
"o"
"gcda"
)
_gen_file_list_contents
=
$(
replace
"
$_gen_file_list_contents
"
\
"
$_gen_file_list_needle_gcda
"
"
$_gen_file_list_replacement
"
)
_gen_file_lists_replacement
=
$(
replace_exts
"
$_gen_file_lists_replacement
"
"o"
"gcda"
)
_gen_file_lists_contents
=
$(
replace
"
$_gen_file_lists_contents
"
"
$_gen_file_lists_needle_gcda
"
"
$_gen_file_lists_replacement
"
)
_gen_file_list_replacement
=
$(
replace_exts
"
$_gen_file_list_replacement
"
"gcda"
"gcno"
)
_gen_file_list_contents
=
$(
replace
"
$_gen_file_list_contents
"
\
"
$_gen_file_list_needle_gcno
"
"
$_gen_file_list_replacement
"
)
_gen_file_lists_replacement
=
$(
replace_exts
"
$_gen_file_lists_replacement
"
"gcda"
"gcno"
)
_gen_file_lists_contents
=
$(
replace
"
$_gen_file_lists_contents
"
"
$_gen_file_lists_needle_gcno
"
"
$_gen_file_lists_replacement
"
)
cd
"
$p
"
else
_gen_file_lists_contents
=
$(
replace
"
$_gen_file_lists_contents
"
"
$_gen_file_lists_needle_src
"
""
)
_gen_file_lists_contents
=
$(
replace
"
$_gen_file_lists_contents
"
"
$_gen_file_lists_needle_obj
"
""
)
_gen_file_lists_contents
=
$(
replace
"
$_gen_file_lists_contents
"
"
$_gen_file_lists_needle_gcda
"
""
)
_gen_file_lists_contents
=
$(
replace
"
$_gen_file_lists_contents
"
"
$_gen_file_lists_needle_gcno
"
""
)
fi
printf
'%s\n'
"
$_gen_file_lists_contents
"
printf
'%s\n'
"
$_gen_file_list_contents
"
}
bc_only
=
0
...
...
@@ -324,10 +343,12 @@ prompt=1
force
=
0
strip_bin
=
1
all_locales
=
0
library
=
0
while
getopts
"bBcdDEfgGhHk:lMNO:PST-"
opt
;
do
while
getopts
"
a
bBcdDEfgGhHk:lMNO:PST-"
opt
;
do
case
"
$opt
"
in
a
)
library
=
1
;;
b
)
bc_only
=
1
;;
B
)
dc_only
=
1
;;
c
)
coverage
=
1
;;
...
...
@@ -352,6 +373,7 @@ while getopts "bBcdDEfgGhHk:lMNO:PST-" opt; do
LONG_OPTARG
=
"
${
arg
#*=
}
"
case
$arg
in
help
)
usage
;;
library
)
library
=
1
;;
bc-only
)
bc_only
=
1
;;
dc-only
)
dc_only
=
1
;;
coverage
)
coverage
=
1
;;
...
...
@@ -371,6 +393,20 @@ while getopts "bBcdDEfgGhHk:lMNO:PST-" opt; do
fi
BINDIR
=
"
$2
"
shift
;;
includedir
=
?
*
)
INCLUDEDIR
=
"
$LONG_OPTARG
"
;;
includedir
)
if
[
"$#"
-lt
2
]
;
then
usage
"No argument given for '--
$arg
' option"
fi
INCLUDEDIR
=
"
$2
"
shift
;;
libdir
=
?
*
)
LIBDIR
=
"
$LONG_OPTARG
"
;;
libdir
)
if
[
"$#"
-lt
2
]
;
then
usage
"No argument given for '--
$arg
' option"
fi
LIBDIR
=
"
$2
"
shift
;;
datarootdir
=
?
*
)
DATAROOTDIR
=
"
$LONG_OPTARG
"
;;
datarootdir
)
if
[
"$#"
-lt
2
]
;
then
...
...
@@ -399,6 +435,13 @@ while getopts "bBcdDEfgGhHk:lMNO:PST-" opt; do
fi
MAN1DIR
=
"
$2
"
shift
;;
man3dir
=
?
*
)
MAN3DIR
=
"
$LONG_OPTARG
"
;;
man3dir
)
if
[
"$#"
-lt
2
]
;
then
usage
"No argument given for '--
$arg
' option"
fi
MAN3DIR
=
"
$2
"
shift
;;
localedir
=
?
*
)
LOCALEDIR
=
"
$LONG_OPTARG
"
;;
localedir
)
if
[
"$#"
-lt
2
]
;
then
...
...
@@ -454,6 +497,12 @@ if [ "$bc_only" -eq 1 ] && [ "$dc_only" -eq 1 ]; then
usage
"Can only specify one of -b(-D) or -d(-B)"
fi
if
[
"
$library
"
-ne
0
]
;
then
if
[
"
$bc_only
"
-eq
1
]
||
[
"
$dc_only
"
-eq
1
]
;
then
usage
"Must not specify -b(-D) or -d(-B) when building the library"
fi
fi
case
$karatsuba_len
in
(
*
[!
0-9]
*
|
''
)
usage
"KARATSUBA_LEN is not a number"
;;
(
*
)
;;
...
...
@@ -529,6 +578,8 @@ link="@printf 'No link necessary\\\\n'"
main_exec
=
"BC"
executable
=
"BC_EXEC"
tests
=
"test_bc timeconst test_dc"
bc_test
=
"@tests/all.sh bc
$extra_math
1
$generate_tests
0
\$
(BC_EXEC)"
bc_time_test
=
"@tests/all.sh bc
$extra_math
1
$generate_tests
1
\$
(BC_EXEC)"
...
...
@@ -567,7 +618,8 @@ if [ "$bc_only" -eq 1 ]; then
dc_time_test
=
"@printf 'No dc tests to run
\\\\
n'"
vg_dc_test
=
"@printf 'No dc tests to run
\\\\
n'"
install_prereqs
=
" install_bc_manpage"
install_prereqs
=
" install_execs"
install_man_prereqs
=
" install_bc_manpage"
uninstall_prereqs
=
" uninstall_bc"
uninstall_man_prereqs
=
" uninstall_bc_manpage"
...
...
@@ -590,7 +642,8 @@ elif [ "$dc_only" -eq 1 ]; then
timeconst
=
"@printf 'timeconst cannot be run because bc is not built
\\\\
n'"
install_prereqs
=
" install_dc_manpage"
install_prereqs
=
" install_execs"
install_man_prereqs
=
" install_dc_manpage"
uninstall_prereqs
=
" uninstall_dc"
uninstall_man_prereqs
=
" uninstall_dc_manpage"
...
...
@@ -606,9 +659,18 @@ else
karatsuba
=
"@
\$
(KARATSUBA) 30 0
\$
(BC_EXEC)"
karatsuba_test
=
"@
\$
(KARATSUBA) 1 100
\$
(BC_EXEC)"
install_prereqs
=
" install_bc_manpage install_dc_manpage"
uninstall_prereqs
=
" uninstall_bc uninstall_dc"
uninstall_man_prereqs
=
" uninstall_bc_manpage uninstall_dc_manpage"
if
[
"
$library
"
-eq
0
]
;
then
install_prereqs
=
" install_execs"
install_man_prereqs
=
" install_bc_manpage install_dc_manpage"
uninstall_prereqs
=
" uninstall_bc uninstall_dc"
uninstall_man_prereqs
=
" uninstall_bc_manpage uninstall_dc_manpage"
else
install_prereqs
=
" install_library install_bcl_header"
install_man_prereqs
=
" install_bcl_manpage"
uninstall_prereqs
=
" uninstall_library uninstall_bcl_header"
uninstall_man_prereqs
=
" uninstall_bcl_manpage"
tests
=
"test_library"
fi
fi
...
...
@@ -664,6 +726,14 @@ if [ -z "${BINDIR+set}" ]; then
BINDIR
=
"
$PREFIX
/bin"
fi
if
[
-z
"
${
INCLUDEDIR
+set
}
"
]
;
then
INCLUDEDIR
=
"
$PREFIX
/include"
fi
if
[
-z
"
${
LIBDIR
+set
}
"
]
;
then
LIBDIR
=
"
$PREFIX
/lib"
fi
if
[
"
$install_manpages
"
-ne
0
]
||
[
"
$nls
"
-ne
0
]
;
then
if
[
-z
"
${
DATAROOTDIR
+set
}
"
]
;
then
DATAROOTDIR
=
"
$PREFIX
/share"
...
...
@@ -684,11 +754,25 @@ if [ "$install_manpages" -ne 0 ]; then
MAN1DIR
=
"
$MANDIR
/man1"
fi
if
[
-z
"
${
MAN3DIR
+set
}
"
]
;
then
MAN3DIR
=
"
$MANDIR
/man3"
fi
else
install_prereqs
=
""
install_
man_
prereqs
=
""
uninstall_man_prereqs
=
""
fi
if
[
"
$library
"
-ne
0
]
;
then
extra_math
=
1
nls
=
0
hist
=
0
prompt
=
0
ALL_PREREQ
=
"library"
else
ALL_PREREQ
=
"execs"
fi
if
[
"
$nls
"
-ne
0
]
;
then
set
+e
...
...
@@ -776,11 +860,11 @@ if [ "$hist" -eq 1 ]; then
printf
'Testing history...\n'
flags
=
"-DBC_ENABLE_HISTORY=1 -DBC_ENABLED=
$bc
-DDC_ENABLED=
$dc
"
flags
=
"
$flags
-DBC_ENABLE_NLS=
$nls
"
flags
=
"
$flags
-DBC_ENABLE_NLS=
$nls
-DBC_ENABLE_LIBRARY=0
"
flags
=
"
$flags
-DBC_ENABLE_EXTRA_MATH=
$extra_math
-I./include/"
flags
=
"
$flags
-D_POSIX_C_SOURCE=200809L -D_XOPEN_SOURCE=700"
"
$CC
"
$CPPFLAGS
$CFLAGS
$flags
-c
"src/history
/history
.c"
-o
"
$scriptdir
/history.o"
>
/dev/null 2>&1
"
$CC
"
$CPPFLAGS
$CFLAGS
$flags
-c
"src/history.c"
-o
"
$scriptdir
/history.o"
>
/dev/null 2>&1
err
=
"
$?
"
...
...
@@ -804,7 +888,11 @@ if [ "$hist" -eq 1 ]; then
fi
if
[
"
$extra_math
"
-eq
1
]
&&
[
"
$bc
"
-ne
0
]
;
then
if
[
"
$library
"
-eq
1
]
;
then
bc_lib
=
""