2 # SPDX-License-Identifier: BSD-2-Clause
4 # Copyright (c) 2018-2024 Gavin D. Howard and contributors.
6 # Redistribution and use in source and binary forms, with or without
7 # modification, are permitted provided that the following conditions are met:
9 # * Redistributions of source code must retain the above copyright notice, this
10 # list of conditions and the following disclaimer.
12 # * Redistributions in binary form must reproduce the above copyright notice,
13 # this list of conditions and the following disclaimer in the documentation
14 # and/or other materials provided with the distribution.
16 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17 # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19 # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
20 # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21 # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22 # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23 # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24 # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25 # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26 # POSSIBILITY OF SUCH DAMAGE.
33 INCDIR
= $(ROOTDIR
)/include
34 SRCDIR
= $(ROOTDIR
)/src
35 TESTSDIR
= $(ROOTDIR
)/tests
36 SCRIPTSDIR
= $(ROOTDIR
)/scripts
37 GENDIR
= $(ROOTDIR
)/gen
39 BUILDDIR
= %%BUILDDIR
%%
46 BC_ENABLED_NAME
= BC_ENABLED
47 BC_ENABLED
= %%BC_ENABLED
%%
48 DC_ENABLED_NAME
= DC_ENABLED
49 DC_ENABLED
= %%DC_ENABLED
%%
51 HEADERS
= $(INCDIR
)/args.h
$(INCDIR
)/file.h
$(INCDIR
)/lang.h
$(INCDIR
)/lex.h
$(INCDIR
)/num.h
$(INCDIR
)/opt.h
$(INCDIR
)/parse.h
$(INCDIR
)/program.h
$(INCDIR
)/read.h
$(INCDIR
)/status.h
$(INCDIR
)/vector.h
$(INCDIR
)/vm.h
52 BC_HEADERS
= $(INCDIR
)/bc.h
53 DC_HEADERS
= $(INCDIR
)/dc.h
54 HISTORY_HEADERS
= $(INCDIR
)/history.h
55 EXTRA_MATH_HEADERS
= $(INCDIR
)/rand.h
56 LIBRARY_HEADERS
= $(INCDIR
)/bcl.h
$(INCDIR
)/library.h
60 GEN_EXEC
= $(GEN_DIR
)/$(GEN
)
61 GEN_C
= $(GENDIR
)/$(GEN
).c
65 BC_LIB
= $(GENDIR
)/lib.bc
66 BC_LIB_C
= $(GEN_DIR
)/lib.c
67 BC_LIB_O
= %%BC_LIB_O
%%
68 BC_LIB_GCDA
= $(GEN_DIR
)/lib.gcda
69 BC_LIB_GCNO
= $(GEN_DIR
)/lib.gcno
71 BC_LIB2
= $(GENDIR
)/lib2.bc
72 BC_LIB2_C
= $(GEN_DIR
)/lib2.c
73 BC_LIB2_O
= %%BC_LIB2_O
%%
74 BC_LIB2_GCDA
= $(GEN_DIR
)/lib2.gcda
75 BC_LIB2_GCNO
= $(GEN_DIR
)/lib2.gcno
77 BC_HELP
= $(GENDIR
)/bc_help.txt
78 BC_HELP_C
= $(GEN_DIR
)/bc_help.c
79 BC_HELP_O
= %%BC_HELP_O
%%
80 BC_HELP_GCDA
= $(GEN_DIR
)/bc_help.gcda
81 BC_HELP_GCNO
= $(GEN_DIR
)/bc_help.gcno
83 DC_HELP
= $(GENDIR
)/dc_help.txt
84 DC_HELP_C
= $(GEN_DIR
)/dc_help.c
85 DC_HELP_O
= %%DC_HELP_O
%%
86 DC_HELP_GCDA
= $(GEN_DIR
)/dc_help.gcda
87 DC_HELP_GCNO
= $(GEN_DIR
)/dc_help.gcno
90 EXEC_SUFFIX
= %%EXECSUFFIX
%%
91 EXEC_PREFIX
= %%EXECPREFIX
%%
95 BC_EXEC
= $(BIN
)/$(EXEC_PREFIX
)$(BC
)
96 DC_EXEC
= $(BIN
)/$(EXEC_PREFIX
)$(DC
)
98 BC_TEST_OUTPUTS
= tests
/bc_outputs
99 BC_FUZZ_OUTPUTS
= tests
/fuzzing
/bc_outputs1 tests
/fuzzing
/bc_outputs2 tests
/fuzzing
/bc_outputs3
100 DC_TEST_OUTPUTS
= tests
/dc_outputs
101 DC_FUZZ_OUTPUTS
= tests
/fuzzing
/dc_outputs
105 LIBBC
= $(BIN
)/$(LIB_NAME
)
107 BCL_TEST
= $(BIN
)/$(BCL
)
108 BCL_TEST_C
= $(TESTSDIR
)/$(BCL
).c
111 BC_MANPAGE_NAME
= $(EXEC_PREFIX
)$(BC
)$(EXEC_SUFFIX
).1
112 BC_MANPAGE
= $(MANUALS
)/$(BC
).1
113 BC_MD
= $(BC_MANPAGE
).md
114 DC_MANPAGE_NAME
= $(EXEC_PREFIX
)$(DC
)$(EXEC_SUFFIX
).1
115 DC_MANPAGE
= $(MANUALS
)/$(DC
).1
116 DC_MD
= $(DC_MANPAGE
).md
117 BCL_MANPAGE_NAME
= bcl
.3
118 BCL_MANPAGE
= $(MANUALS
)/$(BCL_MANPAGE_NAME
)
119 BCL_MD
= $(BCL_MANPAGE
).md
121 MANPAGE_INSTALL_ARGS
= -Dm644
122 BINARY_INSTALL_ARGS
= -Dm755
123 PC_INSTALL_ARGS
= $(MANPAGE_INSTALL_ARGS
)
126 PC_PATH
= %%PC_PATH
%%
128 BCL_HEADER_NAME
= bcl.h
129 BCL_HEADER
= $(INCDIR
)/$(BCL_HEADER_NAME
)
133 INCLUDEDIR
= %%INCLUDEDIR
%%
135 MAN1DIR
= %%MAN1DIR
%%
136 MAN3DIR
= %%MAN3DIR
%%
137 MAIN_EXEC
= $(EXEC_PREFIX
)$(%%MAIN_EXEC
%%)$(EXEC_SUFFIX
)
139 NLSPATH
= %%NLSPATH
%%
141 BC_BUILD_TYPE
= %%BUILD_TYPE
%%
143 BC_ENABLE_LIBRARY
= %%LIBRARY
%%
145 BC_ENABLE_HISTORY
= %%HISTORY
%%
146 BC_ENABLE_EXTRA_MATH_NAME
= BC_ENABLE_EXTRA_MATH
147 BC_ENABLE_EXTRA_MATH
= %%EXTRA_MATH
%%
148 BC_ENABLE_NLS
= %%NLS
%%
149 BC_EXCLUDE_EXTRA_MATH
= %%EXCLUDE_EXTRA_MATH
%%
151 BC_ENABLE_AFL
= %%FUZZ
%%
152 BC_ENABLE_MEMCHECK
= %%MEMCHECK
%%
154 BC_DEFAULT_BANNER
= %%BC_DEFAULT_BANNER
%%
155 BC_DEFAULT_SIGINT_RESET
= %%BC_DEFAULT_SIGINT_RESET
%%
156 DC_DEFAULT_SIGINT_RESET
= %%DC_DEFAULT_SIGINT_RESET
%%
157 BC_DEFAULT_TTY_MODE
= %%BC_DEFAULT_TTY_MODE
%%
158 DC_DEFAULT_TTY_MODE
= %%DC_DEFAULT_TTY_MODE
%%
159 BC_DEFAULT_PROMPT
= %%BC_DEFAULT_PROMPT
%%
160 DC_DEFAULT_PROMPT
= %%DC_DEFAULT_PROMPT
%%
161 BC_DEFAULT_EXPR_EXIT
= %%BC_DEFAULT_EXPR_EXIT
%%
162 DC_DEFAULT_EXPR_EXIT
= %%DC_DEFAULT_EXPR_EXIT
%%
163 BC_DEFAULT_DIGIT_CLAMP
= %%BC_DEFAULT_DIGIT_CLAMP
%%
164 DC_DEFAULT_DIGIT_CLAMP
= %%DC_DEFAULT_DIGIT_CLAMP
%%
172 MINISTAT_EXEC
= $(SCRIPTS
)/$(MINISTAT
)
174 BITFUNCGEN
= bitfuncgen
175 BITFUNCGEN_EXEC
= $(SCRIPTS
)/$(BITFUNCGEN
)
177 INSTALL
= $(SCRIPTSDIR
)/exec-install.sh
178 SAFE_INSTALL
= $(SCRIPTSDIR
)/safe-install.sh
179 LINK
= $(SCRIPTSDIR
)/link.sh
180 MANPAGE
= $(SCRIPTSDIR
)/manpage.sh
181 KARATSUBA
= $(SCRIPTSDIR
)/karatsuba.py
182 LOCALE_INSTALL
= $(SCRIPTSDIR
)/locale_install.sh
183 LOCALE_UNINSTALL
= $(SCRIPTSDIR
)/locale_uninstall.sh
185 VALGRIND_ARGS
= --error-exitcode
=100 --leak-check
=full
--show-leak-kinds
=all --errors-for-leak-kinds
=all
187 TEST_STARS
= ***********************************************************************
189 BC_NUM_KARATSUBA_LEN
= %%KARATSUBA_LEN
%%
191 BC_DEFS0
= -DBC_DEFAULT_BANNER
=$(BC_DEFAULT_BANNER
)
192 BC_DEFS1
= -DBC_DEFAULT_SIGINT_RESET
=$(BC_DEFAULT_SIGINT_RESET
)
193 BC_DEFS2
= -DBC_DEFAULT_TTY_MODE
=$(BC_DEFAULT_TTY_MODE
)
194 BC_DEFS3
= -DBC_DEFAULT_PROMPT
=$(BC_DEFAULT_PROMPT
)
195 BC_DEFS4
= -DBC_DEFAULT_EXPR_EXIT
=$(BC_DEFAULT_EXPR_EXIT
)
196 BC_DEFS5
= -DBC_DEFAULT_DIGIT_CLAMP
=$(BC_DEFAULT_DIGIT_CLAMP
)
197 BC_DEFS
= $(BC_DEFS0
) $(BC_DEFS1
) $(BC_DEFS2
) $(BC_DEFS3
) $(BC_DEFS4
) $(BC_DEFS5
)
198 DC_DEFS1
= -DDC_DEFAULT_SIGINT_RESET
=$(DC_DEFAULT_SIGINT_RESET
)
199 DC_DEFS2
= -DDC_DEFAULT_TTY_MODE
=$(DC_DEFAULT_TTY_MODE
)
200 DC_DEFS3
= -DDC_DEFAULT_PROMPT
=$(DC_DEFAULT_PROMPT
)
201 DC_DEFS4
= -DDC_DEFAULT_EXPR_EXIT
=$(DC_DEFAULT_EXPR_EXIT
)
202 DC_DEFS5
= -DDC_DEFAULT_DIGIT_CLAMP
=$(DC_DEFAULT_DIGIT_CLAMP
)
203 DC_DEFS
= $(DC_DEFS1
) $(DC_DEFS2
) $(DC_DEFS3
) $(DC_DEFS4
) $(DC_DEFS5
)
205 CPPFLAGS1
= -D
$(BC_ENABLED_NAME
)=$(BC_ENABLED
) -D
$(DC_ENABLED_NAME
)=$(DC_ENABLED
)
206 CPPFLAGS2
= $(CPPFLAGS1
) -I
$(INCDIR
)/ -DBUILD_TYPE
=$(BC_BUILD_TYPE
) %%LONG_BIT_DEFINE
%%
207 CPPFLAGS3
= $(CPPFLAGS2
) -DEXECPREFIX
=$(EXEC_PREFIX
) -DMAINEXEC
=$(MAIN_EXEC
)
208 CPPFLAGS4
= $(CPPFLAGS3
) %%BSD
%% %%APPLE
%%
209 CPPFLAGS5
= $(CPPFLAGS4
) -DBC_NUM_KARATSUBA_LEN
=$(BC_NUM_KARATSUBA_LEN
)
210 CPPFLAGS6
= $(CPPFLAGS5
) -DBC_ENABLE_NLS
=$(BC_ENABLE_NLS
)
211 CPPFLAGS7
= $(CPPFLAGS6
) -D
$(BC_ENABLE_EXTRA_MATH_NAME
)=$(BC_ENABLE_EXTRA_MATH
)
212 CPPFLAGS8
= $(CPPFLAGS7
) -DBC_ENABLE_HISTORY
=$(BC_ENABLE_HISTORY
) -DBC_ENABLE_LIBRARY
=$(BC_ENABLE_LIBRARY
)
213 CPPFLAGS
= $(CPPFLAGS8
) -DBC_ENABLE_MEMCHECK
=$(BC_ENABLE_MEMCHECK
) -DBC_ENABLE_AFL
=$(BC_ENABLE_AFL
)
214 CFLAGS
= $(CPPFLAGS
) $(BC_DEFS
) $(DC_DEFS
) %%CPPFLAGS
%% %%CFLAGS
%%
215 LDFLAGS
= %%LDFLAGS
%%
217 HOSTCFLAGS
= %%HOSTCFLAGS
%%
222 BC_LIB_C_ARGS
= bc_lib bc_lib_name
$(BC_ENABLED_NAME
) 1
223 BC_LIB2_C_ARGS
= bc_lib2 bc_lib2_name
"$(BC_ENABLED_NAME) && $(BC_ENABLE_EXTRA_MATH_NAME)" 1
225 OBJS
= $(DC_HELP_O
) $(BC_HELP_O
) $(BC_LIB_O
) $(BC_LIB2_O
) $(OBJ
)
227 all: %%DEFAULT_TARGET
%%
229 %%DEFAULT_TARGET
%%: %%DEFAULT_TARGET_PREREQS
%%
230 %%DEFAULT_TARGET_CMD
%%
232 %%SECOND_TARGET
%%: %%SECOND_TARGET_PREREQS
%%
233 %%SECOND_TARGET_CMD
%%
238 $(GEN_EXEC
): $(GEN_DIR
)
241 $(BC_LIB_C
): $(GEN_EXEC
) $(BC_LIB
)
242 $(GEN_EMU
) $(GEN_EXEC
) $(BC_LIB
) $(BC_LIB_C
) $(BC_EXCLUDE_EXTRA_MATH
) $(BC_LIB_C_ARGS
) "" "" 1
244 $(BC_LIB_O
): $(BC_LIB_C
)
245 $(CC
) $(CFLAGS
) -o
$@
-c
$<
247 $(BC_LIB2_C
): $(GEN_EXEC
) $(BC_LIB2
)
248 $(GEN_EMU
) $(GEN_EXEC
) $(BC_LIB2
) $(BC_LIB2_C
) $(BC_EXCLUDE_EXTRA_MATH
) $(BC_LIB2_C_ARGS
) "" "" 1
250 $(BC_LIB2_O
): $(BC_LIB2_C
)
251 $(CC
) $(CFLAGS
) -o
$@
-c
$<
253 $(BC_HELP_C
): $(GEN_EXEC
) $(BC_HELP
)
254 $(GEN_EMU
) $(GEN_EXEC
) $(BC_HELP
) $(BC_HELP_C
) $(BC_EXCLUDE_EXTRA_MATH
) bc_help
"" $(BC_ENABLED_NAME
) 0
256 $(BC_HELP_O
): $(BC_HELP_C
)
257 $(CC
) $(CFLAGS
) -o
$@
-c
$<
259 $(DC_HELP_C
): $(GEN_EXEC
) $(DC_HELP
)
260 $(GEN_EMU
) $(GEN_EXEC
) $(DC_HELP
) $(DC_HELP_C
) $(BC_EXCLUDE_EXTRA_MATH
) dc_help
"" $(DC_ENABLED_NAME
) 0
262 $(DC_HELP_O
): $(DC_HELP_C
)
263 $(CC
) $(CFLAGS
) -o
$@
-c
$<
275 $(HOSTCC
) $(HOSTCFLAGS
) -lm
-o
$(MINISTAT_EXEC
) $(ROOTDIR
)/scripts
/ministat.c
279 $(HOSTCC
) $(HOSTCFLAGS
) -lm
-o
$(BITFUNCGEN_EXEC
) $(ROOTDIR
)/scripts
/bitfuncgen.c
282 @printf
'available targets:\n'
284 @printf
' all (default) builds %%EXECUTABLES%%\n'
285 @printf
' check alias for `make test`\n'
286 @printf
' clean removes all build files\n'
287 @printf
' clean_config removes all build files as well as the generated Makefile\n'
288 @printf
' clean_tests removes all build files, the generated Makefile,\n'
289 @printf
' and generated tests\n'
290 @printf
' install installs binaries to "%s%s"\n' "$(DESTDIR)" "$(BINDIR)"
291 @printf
' and (if enabled) manpages to "%s%s"\n' "$(DESTDIR)" "$(MAN1DIR)"
292 @printf
' karatsuba runs the karatsuba script (requires Python 3)\n'
293 @printf
' karatsuba_test runs the karatsuba script while running tests\n'
294 @printf
' (requires Python 3)\n'
295 @printf
' uninstall uninstalls binaries from "%s%s"\n' "$(DESTDIR)" "$(BINDIR)"
296 @printf
' and (if enabled) manpages from "%s%s"\n' "$(DESTDIR)" "$(MAN1DIR)"
297 @printf
' test runs the test suite\n'
298 @printf
' test_bc runs the bc test suite, if bc has been built\n'
299 @printf
' test_dc runs the dc test suite, if dc has been built\n'
300 @printf
' time_test runs the test suite, displaying times for some things\n'
301 @printf
' time_test_bc runs the bc test suite, displaying times for some things\n'
302 @printf
' time_test_dc runs the dc test suite, displaying times for some things\n'
303 @printf
' timeconst runs the test on the Linux timeconst.bc script,\n'
304 @printf
' if it exists and bc has been built\n'
306 run_all_tests
: bc_all_tests timeconst_all_tests dc_all_tests
308 run_all_tests_np
: bc_all_tests_np timeconst_all_tests dc_all_tests_np
317 %%TIMECONST_ALL_TESTS
%%
332 test_bc
: test_bc_header test_bc_tests test_bc_scripts test_bc_errors test_bc_stdin test_bc_read test_bc_other
333 @printf
'\nAll bc tests passed.\n\n$(TEST_STARS)\n'
335 test_bc_tests
:%%BC_TESTS
%%
337 test_bc_scripts
:%%BC_SCRIPT_TESTS
%%
340 @
export BC_TEST_OUTPUT_DIR
="$(BUILDDIR)/tests"; sh
$(TESTSDIR
)/stdin.sh bc
%%BC_TEST_EXEC
%%
343 @
export BC_TEST_OUTPUT_DIR
="$(BUILDDIR)/tests"; sh
$(TESTSDIR
)/read.sh bc
%%BC_TEST_EXEC
%%
345 test_bc_errors
: test_bc_error_lines
%%BC_ERROR_TESTS
%%
348 @
export BC_TEST_OUTPUT_DIR
="$(BUILDDIR)/tests"; sh
$(TESTSDIR
)/errors.sh bc
%%BC_TEST_EXEC
%%
351 @
export BC_TEST_OUTPUT_DIR
="$(BUILDDIR)/tests"; sh
$(TESTSDIR
)/other.sh bc
$(BC_ENABLE_EXTRA_MATH
) %%BC_TEST_EXEC
%%
354 @printf
'$(TEST_STARS)\n\nRunning bc tests...\n\n'
356 test_dc
: test_dc_header test_dc_tests test_dc_scripts test_dc_errors test_dc_stdin test_dc_read test_dc_other
357 @printf
'\nAll dc tests passed.\n\n$(TEST_STARS)\n'
359 test_dc_tests
:%%DC_TESTS
%%
361 test_dc_scripts
:%%DC_SCRIPT_TESTS
%%
364 @
export BC_TEST_OUTPUT_DIR
="$(BUILDDIR)/tests"; sh
$(TESTSDIR
)/stdin.sh dc
%%DC_TEST_EXEC
%%
367 @
export BC_TEST_OUTPUT_DIR
="$(BUILDDIR)/tests"; sh
$(TESTSDIR
)/read.sh dc
%%DC_TEST_EXEC
%%
369 test_dc_errors
: test_dc_error_lines
%%DC_ERROR_TESTS
%%
372 @
export BC_TEST_OUTPUT_DIR
="$(BUILDDIR)/tests"; sh
$(TESTSDIR
)/errors.sh dc
%%DC_TEST_EXEC
%%
375 @
export BC_TEST_OUTPUT_DIR
="$(BUILDDIR)/tests"; sh
$(TESTSDIR
)/other.sh dc
$(BC_ENABLE_EXTRA_MATH
) %%DC_TEST_EXEC
%%
378 @printf
'$(TEST_STARS)\n\nRunning dc tests...\n\n'
383 test_history
: test_history_header test_bc_history test_dc_history
384 @printf
'\nAll history tests passed.\n\n$(TEST_STARS)\n'
386 test_bc_history
:%%BC_HISTORY_TEST_PREREQS
%%
388 test_bc_history_all
: test_bc_history0 test_bc_history1 test_bc_history2 test_bc_history3 test_bc_history4 test_bc_history5 test_bc_history6 test_bc_history7 test_bc_history8 test_bc_history9 test_bc_history10 test_bc_history11 test_bc_history12 test_bc_history13 test_bc_history14 test_bc_history15 test_bc_history16 test_bc_history17 test_bc_history18 test_bc_history19 test_bc_history20 test_bc_history21
390 test_bc_history_skip
:
391 @printf
'No bc history tests to run\n'
394 @sh
$(TESTSDIR
)/history.sh bc
0 %%BC_TEST_EXEC
%%
397 @sh
$(TESTSDIR
)/history.sh bc
1 %%BC_TEST_EXEC
%%
400 @sh
$(TESTSDIR
)/history.sh bc
2 %%BC_TEST_EXEC
%%
403 @sh
$(TESTSDIR
)/history.sh bc
3 %%BC_TEST_EXEC
%%
406 @sh
$(TESTSDIR
)/history.sh bc
4 %%BC_TEST_EXEC
%%
409 @sh
$(TESTSDIR
)/history.sh bc
5 %%BC_TEST_EXEC
%%
412 @sh
$(TESTSDIR
)/history.sh bc
6 %%BC_TEST_EXEC
%%
415 @sh
$(TESTSDIR
)/history.sh bc
7 %%BC_TEST_EXEC
%%
418 @sh
$(TESTSDIR
)/history.sh bc
8 %%BC_TEST_EXEC
%%
421 @sh
$(TESTSDIR
)/history.sh bc
9 %%BC_TEST_EXEC
%%
424 @sh
$(TESTSDIR
)/history.sh bc
10 %%BC_TEST_EXEC
%%
427 @sh
$(TESTSDIR
)/history.sh bc
11 %%BC_TEST_EXEC
%%
430 @sh
$(TESTSDIR
)/history.sh bc
12 %%BC_TEST_EXEC
%%
433 @sh
$(TESTSDIR
)/history.sh bc
13 %%BC_TEST_EXEC
%%
436 @sh
$(TESTSDIR
)/history.sh bc
14 %%BC_TEST_EXEC
%%
439 @sh
$(TESTSDIR
)/history.sh bc
15 %%BC_TEST_EXEC
%%
442 @sh
$(TESTSDIR
)/history.sh bc
16 %%BC_TEST_EXEC
%%
445 @sh
$(TESTSDIR
)/history.sh bc
17 %%BC_TEST_EXEC
%%
448 @sh
$(TESTSDIR
)/history.sh bc
18 %%BC_TEST_EXEC
%%
451 @sh
$(TESTSDIR
)/history.sh bc
19 %%BC_TEST_EXEC
%%
454 @sh
$(TESTSDIR
)/history.sh bc
20 %%BC_TEST_EXEC
%%
457 @sh
$(TESTSDIR
)/history.sh bc
21 %%BC_TEST_EXEC
%%
459 test_dc_history
:%%DC_HISTORY_TEST_PREREQS
%%
461 test_dc_history_all
: test_dc_history0 test_dc_history1 test_dc_history2 test_dc_history3 test_dc_history4 test_dc_history5 test_dc_history6 test_dc_history7 test_dc_history8 test_dc_history9 test_dc_history10
463 test_dc_history_skip
:
464 @printf
'No dc history tests to run\n'
467 @sh
$(TESTSDIR
)/history.sh dc
0 %%DC_TEST_EXEC
%%
470 @sh
$(TESTSDIR
)/history.sh dc
1 %%DC_TEST_EXEC
%%
473 @sh
$(TESTSDIR
)/history.sh dc
2 %%DC_TEST_EXEC
%%
476 @sh
$(TESTSDIR
)/history.sh dc
3 %%DC_TEST_EXEC
%%
479 @sh
$(TESTSDIR
)/history.sh dc
4 %%DC_TEST_EXEC
%%
482 @sh
$(TESTSDIR
)/history.sh dc
5 %%DC_TEST_EXEC
%%
485 @sh
$(TESTSDIR
)/history.sh dc
6 %%DC_TEST_EXEC
%%
488 @sh
$(TESTSDIR
)/history.sh dc
7 %%DC_TEST_EXEC
%%
491 @sh
$(TESTSDIR
)/history.sh dc
8 %%DC_TEST_EXEC
%%
494 @sh
$(TESTSDIR
)/history.sh dc
9 %%DC_TEST_EXEC
%%
497 @sh
$(TESTSDIR
)/history.sh dc
10 %%DC_TEST_EXEC
%%
500 @printf
'$(TEST_STARS)\n\nRunning history tests...\n\n'
502 library_test
: $(LIBBC
)
503 $(CC
) $(CFLAGS
) -lpthread
$(BCL_TEST_C
) $(LIBBC
) -o
$(BCL_TEST
)
505 test_library
: library_test
517 coverage
:%%COVERAGE_PREREQS
%%
525 @
$(RM
) -f
$(GEN_EXEC
)
527 clean:%%CLEAN_PREREQS
%%
528 @printf
'Cleaning files...\n'
529 @
$(RM
) -f src
/*.tmp gen
/*.tmp
534 @
$(RM
) -f
$(BC_LIB_C
) $(BC_LIB_O
)
535 @
$(RM
) -f
$(BC_LIB2_C
) $(BC_LIB2_O
)
536 @
$(RM
) -f
$(BC_HELP_C
) $(BC_HELP_O
)
537 @
$(RM
) -f
$(DC_HELP_C
) $(DC_HELP_O
)
538 @
$(RM
) -fr vs
/bin
/ vs
/lib
/
541 @printf
'Cleaning benchmarks...\n'
542 @
$(RM
) -f
$(MINISTAT_EXEC
)
543 @
$(RM
) -f
$(ROOTDIR
)/benchmarks
/bc
/*.txt
544 @
$(RM
) -f
$(ROOTDIR
)/benchmarks
/dc
/*.txt
546 clean_config
: clean clean_benchmarks
547 @printf
'Cleaning config...\n'
549 @
$(RM
) -f
$(BC_MD
) $(BC_MANPAGE
)
550 @
$(RM
) -f
$(DC_MD
) $(DC_MANPAGE
)
551 @
$(RM
) -f compile_commands.json
555 @printf
'Cleaning coverage files...\n'
557 @
$(RM
) -f
*.html
*.css
558 @
$(RM
) -f
*.gcda
*.gcno
560 @
$(RM
) -f
$(GCDA
) $(GCNO
)
561 @
$(RM
) -f
$(BC_GCDA
) $(BC_GCNO
)
562 @
$(RM
) -f
$(DC_GCDA
) $(DC_GCNO
)
563 @
$(RM
) -f
$(HISTORY_GCDA
) $(HISTORY_GCNO
)
564 @
$(RM
) -f
$(RAND_GCDA
) $(RAND_GCNO
)
565 @
$(RM
) -f
$(BC_LIB_GCDA
) $(BC_LIB_GCNO
)
566 @
$(RM
) -f
$(BC_LIB2_GCDA
) $(BC_LIB2_GCNO
)
567 @
$(RM
) -f
$(BC_HELP_GCDA
) $(BC_HELP_GCNO
)
568 @
$(RM
) -f
$(DC_HELP_GCDA
) $(DC_HELP_GCNO
)
570 clean_tests
: clean clean_config clean_coverage
571 @printf
'Cleaning test files...\n'
572 @
$(RM
) -fr
$(BC_TEST_OUTPUTS
) $(DC_TEST_OUTPUTS
)
573 @
$(RM
) -fr
$(BC_FUZZ_OUTPUTS
) $(DC_FUZZ_OUTPUTS
)
574 @
$(RM
) -f
$(TESTSDIR
)/bc
/parse.txt
$(TESTSDIR
)/bc
/parse_results.txt
575 @
$(RM
) -f
$(TESTSDIR
)/bc
/print.txt
$(TESTSDIR
)/bc
/print_results.txt
576 @
$(RM
) -f
$(TESTSDIR
)/bc
/bessel.txt
$(TESTSDIR
)/bc
/bessel_results.txt
577 @
$(RM
) -f
$(TESTSDIR
)/bc
/strings2.txt
$(TESTSDIR
)/bc
/strings2_results.txt
578 @
$(RM
) -f
$(TESTSDIR
)/bc
/scripts
/bessel.txt
579 @
$(RM
) -f
$(TESTSDIR
)/bc
/scripts
/parse.txt
580 @
$(RM
) -f
$(TESTSDIR
)/bc
/scripts
/print.txt
581 @
$(RM
) -f
$(TESTSDIR
)/bc
/scripts
/add.txt
582 @
$(RM
) -f
$(TESTSDIR
)/bc
/scripts
/divide.txt
583 @
$(RM
) -f
$(TESTSDIR
)/bc
/scripts
/multiply.txt
584 @
$(RM
) -f
$(TESTSDIR
)/bc
/scripts
/subtract.txt
585 @
$(RM
) -f
$(TESTSDIR
)/bc
/scripts
/strings2.txt
586 @
$(RM
) -f
$(TESTSDIR
)/dc
/scripts
/prime.txt
588 @
$(RM
) -f .math.txt .results.txt .ops.txt
590 @
$(RM
) -f
tags .gdbbreakpoints .gdb_history .gdbsetup
593 @
$(RM
) -f
$(BITFUNCGEN_EXEC
)
599 $(SAFE_INSTALL
) $(MANPAGE_INSTALL_ARGS
) $(BC_MANPAGE
) $(DESTDIR
)$(MAN1DIR
)/$(BC_MANPAGE_NAME
)
602 $(SAFE_INSTALL
) $(MANPAGE_INSTALL_ARGS
) $(DC_MANPAGE
) $(DESTDIR
)$(MAN1DIR
)/$(DC_MANPAGE_NAME
)
605 $(SAFE_INSTALL
) $(MANPAGE_INSTALL_ARGS
) $(BCL_MANPAGE
) $(DESTDIR
)$(MAN3DIR
)/$(BCL_MANPAGE_NAME
)
608 $(SAFE_INSTALL
) $(MANPAGE_INSTALL_ARGS
) $(BCL_HEADER
) $(DESTDIR
)$(INCLUDEDIR
)/$(BCL_HEADER_NAME
)
611 $(INSTALL
) $(DESTDIR
)$(BINDIR
) "$(EXEC_SUFFIX)" "$(BUILDDIR)/bin"
613 install_library
: install_bcl_header
614 $(SAFE_INSTALL
) $(BINARY_INSTALL_ARGS
) $(LIBBC
) $(DESTDIR
)$(LIBDIR
)/$(LIB_NAME
)
615 %%PKG_CONFIG_INSTALL
%%
617 install:%%INSTALL_LOCALES_PREREQS
%%%%INSTALL_MAN_PREREQS
%%%%INSTALL_PREREQS
%%
620 $(LOCALE_UNINSTALL
) $(NLSPATH
) $(MAIN_EXEC
) $(DESTDIR
)
622 uninstall_bc_manpage
:
623 $(RM
) -f
$(DESTDIR
)$(MAN1DIR
)/$(BC_MANPAGE_NAME
)
626 $(RM
) -f
$(DESTDIR
)$(BINDIR
)/$(EXEC_PREFIX
)$(BC
)$(EXEC_SUFFIX
)
628 uninstall_dc_manpage
:
629 $(RM
) -f
$(DESTDIR
)$(MAN1DIR
)/$(DC_MANPAGE_NAME
)
632 $(RM
) -f
$(DESTDIR
)$(BINDIR
)/$(EXEC_PREFIX
)$(DC
)$(EXEC_SUFFIX
)
634 uninstall_library
: uninstall_bcl_header
635 $(RM
) -f
$(DESTDIR
)$(LIBDIR
)/$(LIB_NAME
)
636 %%PKG_CONFIG_UNINSTALL
%%
638 uninstall_bcl_header
:
639 $(RM
) -f
$(DESTDIR
)$(INCLUDEDIR
)/$(BCL_HEADER_NAME
)
641 uninstall_bcl_manpage
:
642 $(RM
) -f
$(DESTDIR
)$(MAN3DIR
)/$(BCL_MANPAGE_NAME
)
644 uninstall:%%UNINSTALL_LOCALES_PREREQS
%%%%UNINSTALL_MAN_PREREQS
%%%%UNINSTALL_PREREQS
%%