NAME := SterlingCompiler SRC := $(wildcard source/*.c) OBJ := $(SRC:source/%.c=obj/%.o) CC := gcc CFLAG := -ggdb -Wall -Wextra -Werror -Wpedantic -I include -Og -fsignaling-nans -fsanitize=address -fsanitize=undefined LDFLAG := -lasan -lubsan -lpthread all: $(NAME) obj/%.o : source/%.c | makedir $(CC) $(CFLAG) -c $< -o $@ $(NAME): $(OBJ) $(CC) $(OBJ) $(LDFLAG) -o build/$(NAME) makedir: mkdir -p obj mkdir -p build clean: rm -rf obj/ fclean: clean rm -rf build/ re: fclean all .PHONY: all $(NAME) clean fclean makedir