2022-06-28 16:40:51 +00:00
|
|
|
# Stand-alone directories
|
|
|
|
|
|
|
|
SRC_DIR := src
|
|
|
|
OBJ_DIR := obj
|
2022-06-28 16:40:51 +00:00
|
|
|
ASM_DIR := asm
|
2022-06-28 16:40:51 +00:00
|
|
|
INCLUDE_DIRS := ../include ./include ../arch/i386/include
|
2022-06-28 16:40:51 +00:00
|
|
|
|
|
|
|
# MOD_OBJ - Module Object. Its name will be the same as the module so it is
|
|
|
|
# a good idea to automate that.
|
|
|
|
|
|
|
|
CURR_DIR = $(notdir $(shell pwd))
|
|
|
|
MOD_OBJ := $(CURR_DIR).o
|
|
|
|
|
|
|
|
# Library dependencies
|
|
|
|
|
|
|
|
LIB_INCLUDE_DIRS := ../lib/include
|
|
|
|
|
|
|
|
# Module sources and their object files
|
|
|
|
|
|
|
|
SRC = $(wildcard $(SRC_DIR)/*.c)
|
2022-06-28 16:40:51 +00:00
|
|
|
ASM := $(wildcard $(ASM_DIR)/*.S)
|
2022-06-28 16:40:51 +00:00
|
|
|
|
2022-06-28 16:40:51 +00:00
|
|
|
OBJ := $(SRC:$(SRC_DIR)/%.c=$(OBJ_DIR)/%.o)
|
2022-06-28 16:40:51 +00:00
|
|
|
OBJ += $(ASM:$(ASM_DIR)/%.S=$(OBJ_DIR)/%.o)
|
2022-06-28 16:40:51 +00:00
|
|
|
|
|
|
|
# Compiler settings
|
|
|
|
|
|
|
|
HFLAGS = -MMD
|
|
|
|
CFLAGS+=-c
|
|
|
|
|
2022-06-28 16:40:51 +00:00
|
|
|
# Linker settings.
|
|
|
|
|
|
|
|
LDFLAGS = -r -nostdlib -ffreestanding -lgcc
|
|
|
|
|
2022-06-28 16:40:51 +00:00
|
|
|
# Include directories
|
|
|
|
|
|
|
|
INCFLAGS = $(foreach TMP, $(LIB_INCLUDE_DIRS), -I$(TMP))
|
|
|
|
INCFLAGS += $(foreach TMP, $(INCLUDE_DIRS), -I$(TMP))
|
|
|
|
|
|
|
|
.PHONY: all clean
|
|
|
|
|
|
|
|
all: $(MOD_OBJ)
|
|
|
|
|
2022-06-28 16:40:51 +00:00
|
|
|
$(MOD_OBJ): $(OBJ)
|
|
|
|
$(CC) $(OBJ) -o $@ $(LDFLAGS)
|
2022-06-28 16:40:51 +00:00
|
|
|
|
|
|
|
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c | $(OBJ_DIR)
|
|
|
|
$(CC) $< -o $@ $(CFLAGS) $(HFLAGS) $(INCFLAGS)
|
|
|
|
|
2022-06-28 16:40:51 +00:00
|
|
|
$(OBJ_DIR)/%.o: $(ASM_DIR)/%.S | $(OBJ_DIR)
|
2022-06-28 16:40:51 +00:00
|
|
|
$(CC) $< -o $@ $(CFLAGS) $(HFLAGS) $(INCFLAGS)
|
|
|
|
|
2022-06-28 16:40:51 +00:00
|
|
|
$(OBJ_DIR):
|
2022-06-28 16:40:51 +00:00
|
|
|
mkdir -p $@
|
|
|
|
|
|
|
|
clean:
|
2022-06-28 16:40:51 +00:00
|
|
|
@$(RM) -rv $(OBJ_DIR)
|
2022-06-28 16:40:51 +00:00
|
|
|
|
|
|
|
-include $(OBJ:.o=.d)
|