Initial commit of dem beast./plot.py
This commit is contained in:
@@ -0,0 +1,157 @@
|
||||
CC = gcc
|
||||
CFLAGS = -Wall -Wextra -Werror -std=gnu99 -O3 -march=native -I.
|
||||
LDFLAGS = -ldl
|
||||
|
||||
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/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)
|
||||
|
||||
all: test_lexer test_parser test_semantic test_ir test_runtime test_strings test_arrays test_objects test_instance_methods test_fileio
|
||||
|
||||
test_lexer: $(LEXER_OBJECTS) $(TEST_LEXER_OBJECTS)
|
||||
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
||||
|
||||
test_parser: $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TEST_PARSER_OBJECTS)
|
||||
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
||||
|
||||
test_semantic: $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(TEST_SEMANTIC_OBJECTS)
|
||||
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
||||
|
||||
test_ir: $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(IR_OBJECTS) runtime/labeltable.o $(TEST_IR_OBJECTS)
|
||||
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
||||
|
||||
test_runtime: $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(IR_OBJECTS) $(RUNTIME_OBJECTS) $(TEST_RUNTIME_OBJECTS)
|
||||
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
||||
|
||||
test_strings: $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(IR_OBJECTS) $(RUNTIME_OBJECTS) $(TEST_STRINGS_OBJECTS)
|
||||
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
||||
|
||||
test_arrays: $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(IR_OBJECTS) $(RUNTIME_OBJECTS) $(TEST_ARRAYS_OBJECTS)
|
||||
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
||||
|
||||
test_objects: $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(IR_OBJECTS) $(RUNTIME_OBJECTS) $(TEST_OBJECTS_OBJECTS)
|
||||
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
||||
|
||||
test_instance_methods: $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(IR_OBJECTS) $(RUNTIME_OBJECTS) $(TEST_INSTANCE_OBJECTS)
|
||||
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
||||
|
||||
test_fileio: $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(IR_OBJECTS) $(RUNTIME_OBJECTS) $(TEST_FILEIO_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) \
|
||||
$(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_BENCHMARK_OBJECTS) \
|
||||
test_lexer test_parser test_semantic test_ir test_runtime test_strings test_arrays test_objects test_instance_methods test_fileio test_benchmark \
|
||||
test_nanbox test_fastframe test_labeltable test_methodcache test_benchmark_pgo *.gcda */*.gcda
|
||||
|
||||
.PHONY: all clean benchmark test_phase0 pgo test_benchmark_pgo_gen pgo_run test_benchmark_pgo
|
||||
Reference in New Issue
Block a user