|
CC = gcc
|
|
CFLAGS = -Wall -Wextra -Werror -std=gnu99 -O3 -march=native -I.
|
|
LDFLAGS = -ldl -lm
|
|
|
|
LEXER_SOURCES = lexer/lexer_tokenizer.c lexer/lexer_keywords.c lexer/lexer_literals.c
|
|
LEXER_OBJECTS = $(LEXER_SOURCES:.c=.o)
|
|
|
|
PARSER_SOURCES = parser/parser.c parser/parser_expressions.c parser/parser_statements.c parser/parser_declarations.c parser/parser_printer.c
|
|
PARSER_OBJECTS = $(PARSER_SOURCES:.c=.o)
|
|
|
|
TYPES_SOURCES = types/types.c
|
|
TYPES_OBJECTS = $(TYPES_SOURCES:.c=.o)
|
|
|
|
SEMANTIC_SOURCES = semantic/symbol_table.c semantic/semantic.c
|
|
SEMANTIC_OBJECTS = $(SEMANTIC_SOURCES:.c=.o)
|
|
|
|
IR_SOURCES = ir/ir.c ir/ir_gen.c
|
|
IR_OBJECTS = $(IR_SOURCES:.c=.o)
|
|
|
|
RUNTIME_SOURCES = runtime/runtime.c runtime/runtime_array.c runtime/runtime_object.c runtime/runtime_collections.c runtime/labeltable.c runtime/methodcache.c runtime/fastframe.c runtime/superinst.c
|
|
RUNTIME_OBJECTS = $(RUNTIME_SOURCES:.c=.o)
|
|
|
|
PHASE0_SOURCES = runtime/fastframe.c runtime/labeltable.c runtime/methodcache.c
|
|
PHASE0_OBJECTS = $(PHASE0_SOURCES:.c=.o)
|
|
|
|
TEST_LEXER_SOURCES = tests/test_lexer.c
|
|
TEST_LEXER_OBJECTS = $(TEST_LEXER_SOURCES:.c=.o)
|
|
|
|
TEST_PARSER_SOURCES = tests/test_parser.c
|
|
TEST_PARSER_OBJECTS = $(TEST_PARSER_SOURCES:.c=.o)
|
|
|
|
TEST_SEMANTIC_SOURCES = tests/test_semantic.c
|
|
TEST_SEMANTIC_OBJECTS = $(TEST_SEMANTIC_SOURCES:.c=.o)
|
|
|
|
TEST_IR_SOURCES = tests/test_ir.c
|
|
TEST_IR_OBJECTS = $(TEST_IR_SOURCES:.c=.o)
|
|
|
|
TEST_RUNTIME_SOURCES = tests/test_runtime.c
|
|
TEST_RUNTIME_OBJECTS = $(TEST_RUNTIME_SOURCES:.c=.o)
|
|
|
|
TEST_STRINGS_SOURCES = tests/test_strings.c
|
|
TEST_STRINGS_OBJECTS = $(TEST_STRINGS_SOURCES:.c=.o)
|
|
|
|
TEST_ARRAYS_SOURCES = tests/test_arrays.c
|
|
TEST_ARRAYS_OBJECTS = $(TEST_ARRAYS_SOURCES:.c=.o)
|
|
|
|
TEST_OBJECTS_SOURCES = tests/test_objects.c
|
|
TEST_OBJECTS_OBJECTS = $(TEST_OBJECTS_SOURCES:.c=.o)
|
|
|
|
TEST_INSTANCE_SOURCES = tests/test_instance_methods.c
|
|
TEST_INSTANCE_OBJECTS = $(TEST_INSTANCE_SOURCES:.c=.o)
|
|
|
|
TEST_FILEIO_SOURCES = tests/test_fileio.c
|
|
TEST_FILEIO_OBJECTS = $(TEST_FILEIO_SOURCES:.c=.o)
|
|
|
|
TEST_DOWHILE_SOURCES = tests/test_dowhile.c
|
|
TEST_DOWHILE_OBJECTS = $(TEST_DOWHILE_SOURCES:.c=.o)
|
|
|
|
TEST_SWITCH_SOURCES = tests/test_switch.c
|
|
TEST_SWITCH_OBJECTS = $(TEST_SWITCH_SOURCES:.c=.o)
|
|
|
|
TEST_MATH_SOURCES = tests/test_math.c
|
|
TEST_MATH_OBJECTS = $(TEST_MATH_SOURCES:.c=.o)
|
|
|
|
TEST_STRING_METHODS_SOURCES = tests/test_string_methods.c
|
|
TEST_STRING_METHODS_OBJECTS = $(TEST_STRING_METHODS_SOURCES:.c=.o)
|
|
|
|
TEST_STATIC_SOURCES = tests/test_static.c
|
|
TEST_STATIC_OBJECTS = $(TEST_STATIC_SOURCES:.c=.o)
|
|
|
|
TEST_INTERFACES_SOURCES = tests/test_interfaces.c
|
|
TEST_INTERFACES_OBJECTS = $(TEST_INTERFACES_SOURCES:.c=.o)
|
|
|
|
TEST_EXCEPTIONS_SOURCES = tests/test_exceptions.c
|
|
TEST_EXCEPTIONS_OBJECTS = $(TEST_EXCEPTIONS_SOURCES:.c=.o)
|
|
|
|
TEST_TERNARY_SOURCES = tests/test_ternary.c
|
|
TEST_TERNARY_OBJECTS = $(TEST_TERNARY_SOURCES:.c=.o)
|
|
|
|
TEST_BITWISE_SOURCES = tests/test_bitwise.c
|
|
TEST_BITWISE_OBJECTS = $(TEST_BITWISE_SOURCES:.c=.o)
|
|
|
|
TEST_ENHANCED_FOR_SOURCES = tests/test_enhanced_for.c
|
|
TEST_ENHANCED_FOR_OBJECTS = $(TEST_ENHANCED_FOR_SOURCES:.c=.o)
|
|
|
|
TEST_ARRAY_INIT_SOURCES = tests/test_array_init.c
|
|
TEST_ARRAY_INIT_OBJECTS = $(TEST_ARRAY_INIT_SOURCES:.c=.o)
|
|
|
|
TEST_INSTANCEOF_SOURCES = tests/test_instanceof.c
|
|
TEST_INSTANCEOF_OBJECTS = $(TEST_INSTANCEOF_SOURCES:.c=.o)
|
|
|
|
TEST_SHORTCIRCUIT_SOURCES = tests/test_shortcircuit.c
|
|
TEST_SHORTCIRCUIT_OBJECTS = $(TEST_SHORTCIRCUIT_SOURCES:.c=.o)
|
|
|
|
TEST_MULTIDIM_ARRAYS_SOURCES = tests/test_multidim_arrays.c
|
|
TEST_MULTIDIM_ARRAYS_OBJECTS = $(TEST_MULTIDIM_ARRAYS_SOURCES:.c=.o)
|
|
|
|
TEST_STATIC_INIT_SOURCES = tests/test_static_init.c
|
|
TEST_STATIC_INIT_OBJECTS = $(TEST_STATIC_INIT_SOURCES:.c=.o)
|
|
|
|
TEST_NEGATIVE_SOURCES = tests/test_negative.c
|
|
TEST_NEGATIVE_OBJECTS = $(TEST_NEGATIVE_SOURCES:.c=.o)
|
|
|
|
TEST_ENUMS_SOURCES = tests/test_enums.c
|
|
TEST_ENUMS_OBJECTS = $(TEST_ENUMS_SOURCES:.c=.o)
|
|
|
|
TEST_COLLECTIONS_SOURCES = tests/test_collections.c
|
|
TEST_COLLECTIONS_OBJECTS = $(TEST_COLLECTIONS_SOURCES:.c=.o)
|
|
|
|
TEST_SUPER_SOURCES = tests/test_super.c
|
|
TEST_SUPER_OBJECTS = $(TEST_SUPER_SOURCES:.c=.o)
|
|
|
|
TEST_INHERITANCE_SOURCES = tests/test_inheritance.c
|
|
TEST_INHERITANCE_OBJECTS = $(TEST_INHERITANCE_SOURCES:.c=.o)
|
|
|
|
TEST_BREAK_SOURCES = tests/test_break.c
|
|
TEST_BREAK_OBJECTS = $(TEST_BREAK_SOURCES:.c=.o)
|
|
|
|
TEST_ELSEIF_SOURCES = tests/test_elseif.c
|
|
TEST_ELSEIF_OBJECTS = $(TEST_ELSEIF_SOURCES:.c=.o)
|
|
|
|
TEST_FORLOOP_SOURCES = tests/test_forloop.c
|
|
TEST_FORLOOP_OBJECTS = $(TEST_FORLOOP_SOURCES:.c=.o)
|
|
|
|
TEST_PRINTLN_SOURCES = tests/test_println.c
|
|
TEST_PRINTLN_OBJECTS = $(TEST_PRINTLN_SOURCES:.c=.o)
|
|
|
|
UNITTEST_SOURCES = tests/unittest.c
|
|
UNITTEST_OBJECTS = $(UNITTEST_SOURCES:.c=.o)
|
|
|
|
TEST_UNITTEST_DEMO_SOURCES = tests/test_unittest_demo.c
|
|
TEST_UNITTEST_DEMO_OBJECTS = $(TEST_UNITTEST_DEMO_SOURCES:.c=.o)
|
|
|
|
all: test_lexer test_parser test_semantic test_ir test_runtime test_strings test_arrays test_objects test_instance_methods test_fileio test_dowhile test_switch test_math test_string_methods test_static test_interfaces test_exceptions test_ternary test_bitwise test_enhanced_for test_array_init test_instanceof test_shortcircuit test_multidim_arrays test_static_init test_negative test_enums test_collections test_super test_inheritance test_break test_elseif test_forloop test_println
|
|
|
|
test_lexer: $(LEXER_OBJECTS) $(UNITTEST_OBJECTS) $(TEST_LEXER_OBJECTS)
|
|
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
|
|
|
test_parser: $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(UNITTEST_OBJECTS) $(TEST_PARSER_OBJECTS)
|
|
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
|
|
|
test_semantic: $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(UNITTEST_OBJECTS) $(TEST_SEMANTIC_OBJECTS)
|
|
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
|
|
|
test_ir: $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(IR_OBJECTS) runtime/labeltable.o $(UNITTEST_OBJECTS) $(TEST_IR_OBJECTS)
|
|
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
|
|
|
test_runtime: $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(IR_OBJECTS) $(RUNTIME_OBJECTS) $(UNITTEST_OBJECTS) $(TEST_RUNTIME_OBJECTS)
|
|
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
|
|
|
test_strings: $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(IR_OBJECTS) $(RUNTIME_OBJECTS) $(UNITTEST_OBJECTS) $(TEST_STRINGS_OBJECTS)
|
|
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
|
|
|
test_arrays: $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(IR_OBJECTS) $(RUNTIME_OBJECTS) $(UNITTEST_OBJECTS) $(TEST_ARRAYS_OBJECTS)
|
|
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
|
|
|
test_objects: $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(IR_OBJECTS) $(RUNTIME_OBJECTS) $(UNITTEST_OBJECTS) $(TEST_OBJECTS_OBJECTS)
|
|
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
|
|
|
test_instance_methods: $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(IR_OBJECTS) $(RUNTIME_OBJECTS) $(UNITTEST_OBJECTS) $(TEST_INSTANCE_OBJECTS)
|
|
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
|
|
|
test_fileio: $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(IR_OBJECTS) $(RUNTIME_OBJECTS) $(UNITTEST_OBJECTS) $(TEST_FILEIO_OBJECTS)
|
|
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
|
|
|
test_dowhile: $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(IR_OBJECTS) $(RUNTIME_OBJECTS) $(UNITTEST_OBJECTS) $(TEST_DOWHILE_OBJECTS)
|
|
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
|
|
|
test_switch: $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(IR_OBJECTS) $(RUNTIME_OBJECTS) $(UNITTEST_OBJECTS) $(TEST_SWITCH_OBJECTS)
|
|
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
|
|
|
test_math: $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(IR_OBJECTS) $(RUNTIME_OBJECTS) $(UNITTEST_OBJECTS) $(TEST_MATH_OBJECTS)
|
|
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
|
|
|
test_string_methods: $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(IR_OBJECTS) $(RUNTIME_OBJECTS) $(UNITTEST_OBJECTS) $(TEST_STRING_METHODS_OBJECTS)
|
|
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
|
|
|
test_static: $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(IR_OBJECTS) $(RUNTIME_OBJECTS) $(UNITTEST_OBJECTS) $(TEST_STATIC_OBJECTS)
|
|
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
|
|
|
test_interfaces: $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(IR_OBJECTS) $(RUNTIME_OBJECTS) $(UNITTEST_OBJECTS) $(TEST_INTERFACES_OBJECTS)
|
|
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
|
|
|
test_exceptions: $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(IR_OBJECTS) $(RUNTIME_OBJECTS) $(UNITTEST_OBJECTS) $(TEST_EXCEPTIONS_OBJECTS)
|
|
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
|
|
|
test_ternary: $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(IR_OBJECTS) $(RUNTIME_OBJECTS) $(UNITTEST_OBJECTS) $(TEST_TERNARY_OBJECTS)
|
|
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
|
|
|
test_bitwise: $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(IR_OBJECTS) $(RUNTIME_OBJECTS) $(UNITTEST_OBJECTS) $(TEST_BITWISE_OBJECTS)
|
|
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
|
|
|
test_enhanced_for: $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(IR_OBJECTS) $(RUNTIME_OBJECTS) $(UNITTEST_OBJECTS) $(TEST_ENHANCED_FOR_OBJECTS)
|
|
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
|
|
|
test_array_init: $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(IR_OBJECTS) $(RUNTIME_OBJECTS) $(UNITTEST_OBJECTS) $(TEST_ARRAY_INIT_OBJECTS)
|
|
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
|
|
|
test_instanceof: $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(IR_OBJECTS) $(RUNTIME_OBJECTS) $(UNITTEST_OBJECTS) $(TEST_INSTANCEOF_OBJECTS)
|
|
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
|
|
|
test_shortcircuit: $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(IR_OBJECTS) $(RUNTIME_OBJECTS) $(UNITTEST_OBJECTS) $(TEST_SHORTCIRCUIT_OBJECTS)
|
|
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
|
|
|
test_multidim_arrays: $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(IR_OBJECTS) $(RUNTIME_OBJECTS) $(UNITTEST_OBJECTS) $(TEST_MULTIDIM_ARRAYS_OBJECTS)
|
|
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
|
|
|
test_static_init: $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(IR_OBJECTS) $(RUNTIME_OBJECTS) $(UNITTEST_OBJECTS) $(TEST_STATIC_INIT_OBJECTS)
|
|
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
|
|
|
test_negative: $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(IR_OBJECTS) $(RUNTIME_OBJECTS) $(UNITTEST_OBJECTS) $(TEST_NEGATIVE_OBJECTS)
|
|
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
|
|
|
test_enums: $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(IR_OBJECTS) $(RUNTIME_OBJECTS) $(UNITTEST_OBJECTS) $(TEST_ENUMS_OBJECTS)
|
|
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
|
|
|
test_collections: $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(IR_OBJECTS) $(RUNTIME_OBJECTS) $(UNITTEST_OBJECTS) $(TEST_COLLECTIONS_OBJECTS)
|
|
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
|
|
|
test_super: $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(IR_OBJECTS) $(RUNTIME_OBJECTS) $(UNITTEST_OBJECTS) $(TEST_SUPER_OBJECTS)
|
|
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
|
|
|
test_inheritance: $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(IR_OBJECTS) $(RUNTIME_OBJECTS) $(UNITTEST_OBJECTS) $(TEST_INHERITANCE_OBJECTS)
|
|
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
|
|
|
test_break: $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(IR_OBJECTS) $(RUNTIME_OBJECTS) $(UNITTEST_OBJECTS) $(TEST_BREAK_OBJECTS)
|
|
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
|
|
|
test_elseif: $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(IR_OBJECTS) $(RUNTIME_OBJECTS) $(UNITTEST_OBJECTS) $(TEST_ELSEIF_OBJECTS)
|
|
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
|
|
|
test_forloop: $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(IR_OBJECTS) $(RUNTIME_OBJECTS) $(UNITTEST_OBJECTS) $(TEST_FORLOOP_OBJECTS)
|
|
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
|
|
|
test_println: $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(IR_OBJECTS) $(RUNTIME_OBJECTS) $(UNITTEST_OBJECTS) $(TEST_PRINTLN_OBJECTS)
|
|
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
|
|
|
test_unittest_demo: $(UNITTEST_OBJECTS) $(TEST_UNITTEST_DEMO_OBJECTS)
|
|
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
|
|
|
%.o: %.c
|
|
$(CC) $(CFLAGS) -c $< -o $@
|
|
|
|
TEST_BENCHMARK_SOURCES = tests/test_benchmark.c
|
|
TEST_BENCHMARK_OBJECTS = $(TEST_BENCHMARK_SOURCES:.c=.o)
|
|
|
|
test_benchmark: $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(IR_OBJECTS) $(RUNTIME_OBJECTS) $(TEST_BENCHMARK_OBJECTS)
|
|
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
|
|
|
benchmark: test_benchmark
|
|
@echo ""
|
|
@echo "========================================"
|
|
@echo " RAVA INTERPRETER"
|
|
@echo "========================================"
|
|
@./test_benchmark
|
|
@echo ""
|
|
@echo "========================================"
|
|
@echo " PYTHON 3"
|
|
@echo "========================================"
|
|
@python3 examples/benchmark.py
|
|
@echo ""
|
|
|
|
test_nanbox: tests/test_nanbox.c runtime/nanbox.h
|
|
$(CC) $(CFLAGS) -o $@ tests/test_nanbox.c $(LDFLAGS)
|
|
|
|
test_fastframe: tests/test_fastframe.c runtime/fastframe.c runtime/nanbox.h runtime/fastframe.h
|
|
$(CC) $(CFLAGS) -o $@ tests/test_fastframe.c runtime/fastframe.c $(LDFLAGS)
|
|
|
|
test_labeltable: tests/test_labeltable.c runtime/labeltable.c $(IR_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS)
|
|
$(CC) $(CFLAGS) -o $@ tests/test_labeltable.c runtime/labeltable.c $(IR_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(LDFLAGS)
|
|
|
|
test_methodcache: tests/test_methodcache.c runtime/methodcache.c runtime/methodcache.h
|
|
$(CC) $(CFLAGS) -o $@ tests/test_methodcache.c runtime/methodcache.c $(LDFLAGS)
|
|
|
|
test_phase0: test_nanbox test_fastframe test_labeltable test_methodcache
|
|
@echo "=== Running Phase 0 Tests ==="
|
|
@./test_nanbox
|
|
@./test_fastframe
|
|
@./test_labeltable
|
|
@./test_methodcache
|
|
@echo "=== All Phase 0 Tests Passed ==="
|
|
|
|
ALL_SOURCES = $(LEXER_SOURCES) $(PARSER_SOURCES) $(TYPES_SOURCES) $(SEMANTIC_SOURCES) $(IR_SOURCES) $(RUNTIME_SOURCES) $(TEST_BENCHMARK_SOURCES)
|
|
|
|
test_benchmark_pgo_gen:
|
|
rm -f *.gcda */*.gcda
|
|
$(CC) -Wall -Wextra -std=gnu99 -O3 -march=native -I. -fprofile-generate -o test_benchmark_pgo $(ALL_SOURCES) $(LDFLAGS)
|
|
|
|
pgo_run: test_benchmark_pgo_gen
|
|
./test_benchmark_pgo
|
|
./test_benchmark_pgo
|
|
./test_benchmark_pgo
|
|
|
|
test_benchmark_pgo: pgo_run
|
|
$(CC) -Wall -Wextra -std=gnu99 -O3 -march=native -I. -fprofile-use -fprofile-correction -o test_benchmark_pgo $(ALL_SOURCES) $(LDFLAGS)
|
|
|
|
pgo: test_benchmark_pgo
|
|
@echo "=== PGO Benchmark ==="
|
|
./test_benchmark_pgo
|
|
|
|
clean:
|
|
rm -f $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(IR_OBJECTS) $(RUNTIME_OBJECTS) \
|
|
$(PHASE0_OBJECTS) $(UNITTEST_OBJECTS) $(TEST_UNITTEST_DEMO_OBJECTS) \
|
|
$(TEST_LEXER_OBJECTS) $(TEST_PARSER_OBJECTS) $(TEST_SEMANTIC_OBJECTS) $(TEST_IR_OBJECTS) $(TEST_RUNTIME_OBJECTS) \
|
|
$(TEST_STRINGS_OBJECTS) $(TEST_ARRAYS_OBJECTS) $(TEST_OBJECTS_OBJECTS) $(TEST_INSTANCE_OBJECTS) $(TEST_FILEIO_OBJECTS) \
|
|
$(TEST_DOWHILE_OBJECTS) $(TEST_SWITCH_OBJECTS) $(TEST_MATH_OBJECTS) $(TEST_STRING_METHODS_OBJECTS) $(TEST_STATIC_OBJECTS) $(TEST_INTERFACES_OBJECTS) $(TEST_EXCEPTIONS_OBJECTS) $(TEST_TERNARY_OBJECTS) $(TEST_BITWISE_OBJECTS) $(TEST_ENHANCED_FOR_OBJECTS) $(TEST_ARRAY_INIT_OBJECTS) $(TEST_INSTANCEOF_OBJECTS) $(TEST_SHORTCIRCUIT_OBJECTS) $(TEST_MULTIDIM_ARRAYS_OBJECTS) $(TEST_STATIC_INIT_OBJECTS) $(TEST_NEGATIVE_OBJECTS) $(TEST_ENUMS_OBJECTS) $(TEST_COLLECTIONS_OBJECTS) $(TEST_SUPER_OBJECTS) $(TEST_INHERITANCE_OBJECTS) $(TEST_BREAK_OBJECTS) $(TEST_ELSEIF_OBJECTS) $(TEST_FORLOOP_OBJECTS) $(TEST_PRINTLN_OBJECTS) $(TEST_BENCHMARK_OBJECTS) \
|
|
test_lexer test_parser test_semantic test_ir test_runtime test_strings test_arrays test_objects test_instance_methods test_fileio test_dowhile test_switch test_math test_string_methods test_static test_interfaces test_exceptions test_ternary test_bitwise test_enhanced_for test_array_init test_instanceof test_shortcircuit test_multidim_arrays test_static_init test_negative test_enums test_collections test_super test_inheritance test_break test_elseif test_forloop test_println test_benchmark \
|
|
test_nanbox test_fastframe test_labeltable test_methodcache test_benchmark_pgo test_unittest_demo *.gcda */*.gcda
|
|
|
|
.PHONY: all clean benchmark test_phase0 pgo test_benchmark_pgo_gen pgo_run test_benchmark_pgo test
|
|
|
|
test: all
|
|
@echo "=== Running All Tests ==="
|
|
@./test_lexer && ./test_parser && ./test_semantic && ./test_ir && ./test_runtime && \
|
|
./test_strings && ./test_arrays && ./test_objects && ./test_instance_methods && \
|
|
./test_fileio && ./test_dowhile && ./test_switch && ./test_math && ./test_string_methods && \
|
|
./test_static && ./test_interfaces && ./test_exceptions && ./test_ternary && \
|
|
./test_bitwise && ./test_enhanced_for && ./test_array_init && ./test_instanceof && \
|
|
./test_shortcircuit && ./test_multidim_arrays && ./test_static_init && ./test_negative && \
|
|
./test_enums && ./test_collections && ./test_super && ./test_inheritance && ./test_break && \
|
|
./test_elseif && ./test_forloop && ./test_println && \
|
|
echo "" && echo "=== All Tests Passed ==="
|