diff options
Diffstat (limited to 'Makefile')
| -rw-r--r-- | Makefile | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..1269521 --- /dev/null +++ b/Makefile @@ -0,0 +1,47 @@ +# need to make a test command to run them easily +CC = gcc +CFLAGS_BASE = -Wall -Wextra -Wpedantic -Werror -std=c99 -Isrc +CFLAGS_DEBUG = $(CFLAGS_BASE) -g -DDEBUG +CFLAGS_PROD = $(CFLAGS_BASE) -O2 -DNDEBUG +LDFLAGS = + +SRC_DIR = src +TEST_DIR = test +BUILD_DIR = build + +TARGET = hoodsgate +SOURCES := $(shell find $(SRC_DIR) -type f -name '*.c') +OBJECTS = $(patsubst $(SRC_DIR)/%.c,$(BUILD_DIR)/%.o,$(SOURCES)) + +CFLAGS = $(CFLAGS_DEBUG) +CFLAGS += -D_POSIX_C_SOURCE=200809L + +all: $(BUILD_DIR) $(TARGET) + +prod: CFLAGS = $(CFLAGS_PROD) +prod: clean all + @echo "Production build complete" + +debug: CFLAGS = $(CFLAGS_DEBUG) +debug: clean all + @echo "Debug build complete" + +$(BUILD_DIR): + mkdir -p $(BUILD_DIR) + +$(TARGET): $(OBJECTS) + $(CC) $(OBJECTS) $(LDFLAGS) -o $(TARGET) + +$(BUILD_DIR)/%.o: $(SRC_DIR)/%.c + @mkdir -p $(dir $@) + $(CC) $(CFLAGS) -c $< -o $@ + +clean: + rm -rf $(BUILD_DIR) $(TARGET) + +rebuild: clean all + +run: $(TARGET) + ./$(TARGET) + +.PHONY: all prod debug clean rebuild run |
