diffblue-cbmc/unit/Makefile

172 lines
6.5 KiB
Makefile

.PHONY: all cprover.dir test testing-utils-clean
# Source files for test utilities
SRC = unit_tests.cpp \
# Empty last line
# Test source files
SRC += analyses/ai/ai.cpp \
analyses/ai/ai_simplify_lhs.cpp \
analyses/call_graph.cpp \
analyses/constant_propagator.cpp \
analyses/dependence_graph.cpp \
analyses/disconnect_unreachable_nodes_in_graph.cpp \
analyses/does_remove_const/does_expr_lose_const.cpp \
analyses/does_remove_const/does_type_preserve_const_correctness.cpp \
analyses/does_remove_const/is_type_at_least_as_const_as.cpp \
big-int/big-int.cpp \
compound_block_locations.cpp \
goto-instrument/cover/cover_only.cpp \
goto-programs/goto_model_function_type_consistency.cpp \
goto-programs/goto_program_assume.cpp \
goto-programs/goto_program_dead.cpp \
goto-programs/goto_program_declaration.cpp \
goto-programs/goto_program_function_call.cpp \
goto-programs/goto_program_goto_target.cpp \
goto-programs/goto_program_symbol_type_table_consistency.cpp \
goto-programs/goto_program_table_consistency.cpp \
goto-programs/goto_program_validate.cpp \
goto-programs/goto_trace_output.cpp \
goto-programs/xml_expr.cpp \
goto-symex/ssa_equation.cpp \
interpreter/interpreter.cpp \
json/json_parser.cpp \
json_symbol_table.cpp \
memory-analyzer/gdb_api.cpp \
path_strategies.cpp \
pointer-analysis/value_set.cpp \
solvers/bdd/miniBDD/miniBDD.cpp \
solvers/floatbv/float_utils.cpp \
solvers/lowering/byte_operators.cpp \
solvers/prop/bdd_expr.cpp \
solvers/strings/array_pool/array_pool.cpp \
solvers/strings/string_constraint_generator_valueof/calculate_max_string_length.cpp \
solvers/strings/string_constraint_generator_valueof/get_numeric_value_from_character.cpp \
solvers/strings/string_constraint_generator_valueof/is_digit_with_radix.cpp \
solvers/strings/string_refinement/concretize_array.cpp \
solvers/strings/string_refinement/sparse_array.cpp \
solvers/strings/string_refinement/substitute_array_list.cpp \
solvers/strings/string_refinement/union_find_replace.cpp \
util/allocate_objects.cpp \
util/cmdline.cpp \
util/expr_cast/expr_cast.cpp \
util/expr.cpp \
util/expr_iterator.cpp \
util/file_util.cpp \
util/format_number_range.cpp \
util/get_base_name.cpp \
util/graph.cpp \
util/irep.cpp \
util/irep_sharing.cpp \
util/json_array.cpp \
util/json_object.cpp \
util/memory_info.cpp \
util/message.cpp \
util/optional.cpp \
util/optional_utils.cpp \
util/parse_options.cpp \
util/pointer_offset_size.cpp \
util/range.cpp \
util/replace_symbol.cpp \
util/sharing_map.cpp \
util/sharing_node.cpp \
util/simplify_expr.cpp \
util/small_map.cpp \
util/small_shared_two_way_ptr.cpp \
util/std_expr.cpp \
util/string2int.cpp \
util/string_utils/join_string.cpp \
util/string_utils/split_string.cpp \
util/string_utils/strip_string.cpp \
util/symbol_table.cpp \
util/symbol.cpp \
util/unicode.cpp \
# Empty last line
INCLUDES= -I ../src/ -I.
CPROVER_DIR = .
include ../src/config.inc
include ../src/common
cprover.dir:
$(MAKE) $(MAKEARGS) -C ../src
testing-utils/testing-utils$(LIBEXT): cprover.dir
$(MAKE) $(MAKEARGS) -C testing-utils
testing-utils-clean:
$(MAKE) $(MAKEARGS) -C testing-utils clean
# We need to link bmc.o to the unit test, so here's everything it depends on...
BMC_DEPS =../src/cbmc/c_test_input_generator$(OBJEXT) \
../src/cbmc/cbmc_languages$(OBJEXT) \
../src/cbmc/cbmc_parse_options$(OBJEXT) \
../src/cbmc/xml_interface$(OBJEXT) \
../src/goto-instrument/source_lines$(OBJEXT) \
../src/goto-instrument/cover$(OBJEXT) \
../src/goto-instrument/cover_basic_blocks$(OBJEXT) \
../src/goto-instrument/cover_filter$(OBJEXT) \
../src/goto-instrument/cover_instrument_branch$(OBJEXT) \
../src/goto-instrument/cover_instrument_condition$(OBJEXT) \
../src/goto-instrument/cover_instrument_decision$(OBJEXT) \
../src/goto-instrument/cover_instrument_location$(OBJEXT) \
../src/goto-instrument/cover_instrument_mcdc$(OBJEXT) \
../src/goto-instrument/cover_instrument_other$(OBJEXT) \
../src/goto-instrument/cover_util$(OBJEXT) \
../src/goto-instrument/goto_program2code$(OBJEXT) \
../src/goto-instrument/reachability_slicer$(OBJEXT) \
../src/goto-instrument/nondet_static$(OBJEXT) \
../src/goto-instrument/full_slicer$(OBJEXT) \
../src/goto-instrument/unwindset$(OBJEXT) \
../src/xmllang/xmllang$(LIBEXT) \
../src/goto-symex/goto-symex$(LIBEXT) \
../src/jsil/jsil$(LIBEXT) \
# Empty last line
#
CPROVER_LIBS =../src/ansi-c/ansi-c$(LIBEXT) \
../src/cpp/cpp$(LIBEXT) \
../src/json/json$(LIBEXT) \
../src/json-symtab-language/json-symtab-language$(LIBEXT) \
../src/linking/linking$(LIBEXT) \
../src/util/util$(LIBEXT) \
../src/big-int/big-int$(LIBEXT) \
../src/goto-checker/goto-checker$(LIBEXT) \
../src/goto-programs/goto-programs$(LIBEXT) \
../src/pointer-analysis/pointer-analysis$(LIBEXT) \
../src/langapi/langapi$(LIBEXT) \
../src/assembler/assembler$(LIBEXT) \
../src/analyses/analyses$(LIBEXT) \
../src/solvers/solvers$(LIBEXT) \
$(BMC_DEPS)
# Empty last line
OBJ += $(CPROVER_LIBS) testing-utils/testing-utils$(LIBEXT)
CATCH_TEST = unit_tests$(EXEEXT)
N_CATCH_TESTS = $(shell \
cat $$(find . -name "*.cpp" \
-a -not -name "expr_undefined_casts.cpp") | \
grep -c -E "(SCENARIO|TEST_CASE)")
CLEANFILES = $(CATCH_TEST) testing-utils/testing-utils$(LIBEXT)
# only add a dependency for libraries to avoid triggering implicit rules, which
# would cause unnecessary rebuilds
$(filter %$(LIBEXT), $(CPROVER_LIBS)): cprover.dir
all: $(CATCH_TEST)
clean: testing-utils-clean
test: $(CATCH_TEST)
if ! ./$(CATCH_TEST) -l | grep -q "^$(N_CATCH_TESTS) test cases" ; then \
./$(CATCH_TEST) -l ; fi
./$(CATCH_TEST)
###############################################################################
unit_tests$(EXEEXT): $(OBJ)
$(LINKBIN)