CC = gcc CFLAGS = -Wall -Wextra -Werror -Wpedantic -I./3rdparty -isystem ./3rdparty SRC = ./src/ BIN = ./bin/ BUILD_CMD = $(CC) $(CFLAGS) $(SRC)main.c -o dobre all: test build_all run unit_test: build_fast buffer lexer parser dict script_test: build_fast -./bin/dobre ./tests/parser/double_class_declaration.dob ./bin/dobre ./tests/parser/assignment.dob -./bin/dobre ./tests/parser/double_extend_error.dob -./bin/dobre ./tests/parser/declare_unknown_type.dob -./bin/dobre ./tests/parser/while.dob ./bin/dobre ./tests/parser/for.dob ./bin/dobre ./tests/parser/operators.dob ./bin/dobre ./tests/parser/declare_function.dob test: script_test unit_test build: ensure_bin $(BUILD_CMD) -o dobre -Ofast cp dobre ./bin/dobre build_all: build $(BUILD_CMD) -o $(BIN)dobre_c99 -std=c99 $(BUILD_CMD) -o $(BIN)dobre_gnu99 -std=gnu99 $(BUILD_CMD) -o $(BIN)dobre_c11 -std=c11 $(BUILD_CMD) -o $(BIN)dobre_gnu11 -std=gnu11 $(BUILD_CMD) -o $(BIN)dobre_c17 -std=c17 $(BUILD_CMD) -o $(BIN)dobre_gnu17 -std=gnu17 $(BUILD_CMD) -o $(BIN)dobre_c2x -std=c2x $(BUILD_CMD) -o $(BIN)dobre_gnu2x -std=gnu2x build_fast: $(CC) $(SRC)main.c -o dobre -Werror -std=c17 cp dobre ./bin/dobre run: ./bin/dobre ./scripts/valgrind.dob format: @clang-format -i $(SRC)*.h $(SRC)*.c @echo "Formatted source code." valgrind: build valgrind --leak-check=full -s ./bin/dobre ./scripts/valgrind.dob ensure_bin: @mkdir ./bin 2> /dev/null | true buffer: ensure_bin $(CC) $(CFLAGS) $(SRC)buffer.c -o ./bin/buffer ./bin/buffer lexer: ensure_bin $(CC) $(CFLAGS) $(SRC)lexer.c -o ./bin/lexer ./bin/lexer parser: ensure_bin $(CC) $(CFLAGS) $(SRC)parser.c -o ./bin/parser ./bin/parser dict: ensure_bin $(CC) $(CFLAGS) $(SRC)dict.c -o ./bin/dict ./bin/dict big.disabled: ensure_bin $(CC) $(CFLAGS) $(SRC)big.c -o ./bin/big ./bin/big