38 lines
751 B
Makefile
38 lines
751 B
Makefile
# ====== Configuration ======
|
|
VHEADERS ?=
|
|
TARGET ?= i686-elf
|
|
CC := $(TARGET)-gcc
|
|
AR := $(TARGET)-ar
|
|
CFLAGS := -Wall -Wextra -ffreestanding -I . -I ../ -O2
|
|
|
|
# ====== Directories ======
|
|
OBJ_DIR := obj
|
|
|
|
# ====== File Discovery ======
|
|
SRCS := $(wildcard *.c)
|
|
OBJS := $(patsubst %.c, $(OBJ_DIR)/%.o, $(SRCS))
|
|
HEADERS := $(wildcard *.h)
|
|
|
|
# ====== Output ======
|
|
LIB := $(OBJ_DIR)/exec.a
|
|
|
|
# ====== Default Rule ======
|
|
all: $(LIB)
|
|
|
|
# ====== Build Static Library ======
|
|
$(LIB): $(OBJS)
|
|
$(AR) rcs $@ $(OBJS)
|
|
|
|
# ====== Object File Compilation ======
|
|
$(OBJ_DIR)/%.o: %.c $(HEADERS) obj
|
|
$(CC) $(CFLAGS) -c $< -o $@
|
|
|
|
# ====== Clean Rule ======
|
|
clean:
|
|
rm -rf $(OBJ_DIR) $(LIB)
|
|
|
|
obj:
|
|
mkdir -p $(OBJ_DIR)
|
|
|
|
# ====== Phony Targets ======
|
|
.PHONY: all clean obj |