44 lines
770 B
Makefile
44 lines
770 B
Makefile
|
# Compiler and Flags
|
||
|
CC = gcc
|
||
|
# CFLAGS = -Wall -Wextra -Iinclude -g -pg
|
||
|
CFLAGS = -O2 -march=native -DNDEBUG -Wall -Wextra -Werror -Iinclude
|
||
|
LDFLAGS = -lm
|
||
|
|
||
|
# Directories
|
||
|
SRC_DIR = src
|
||
|
INCLUDE_DIR = include
|
||
|
BUILD_DIR = build
|
||
|
|
||
|
# Source and Object Files
|
||
|
SRC_FILES = $(wildcard $(SRC_DIR)/*.c)
|
||
|
OBJ_FILES = $(patsubst $(SRC_DIR)/%.c,$(BUILD_DIR)/%.o,$(SRC_FILES))
|
||
|
|
||
|
# Binaries
|
||
|
MAIN_BIN = $(BUILD_DIR)/main
|
||
|
|
||
|
# Targets
|
||
|
all: $(MAIN_BIN)
|
||
|
|
||
|
# Main Program
|
||
|
$(MAIN_BIN): $(OBJ_FILES) | $(BUILD_DIR)
|
||
|
$(CC) $(CFLAGS) $^ -o $@ $(LDFLAGS)
|
||
|
|
||
|
$(BUILD_DIR)/%.o: $(SRC_DIR)/%.c | $(BUILD_DIR)
|
||
|
$(CC) $(CFLAGS) -c $< -o $@
|
||
|
|
||
|
|
||
|
# Create Build Directories
|
||
|
$(BUILD_DIR):
|
||
|
mkdir -p $@
|
||
|
|
||
|
# Generate docs
|
||
|
docs:
|
||
|
doxygen Doxyfile
|
||
|
|
||
|
# Clean
|
||
|
clean:
|
||
|
rm -rf $(BUILD_DIR)
|
||
|
|
||
|
|
||
|
.PHONY: all tests clean run-tests
|