diff --git a/kernel/Makefile b/kernel/Makefile index 5ef94db..9d8482d 100644 --- a/kernel/Makefile +++ b/kernel/Makefile @@ -21,7 +21,7 @@ INCLUDEDIR?=$(PREFIX)/include # Updated compiler flags -CFLAGS:=$(CFLAGS) -ffreestanding -D__is_kernel -Iinclude -Wall -Wextra -Werror +CFLAGS:=$(CFLAGS) -ffreestanding -D__is_kernel -Iinclude -Wall -Wextra -Werror CPPFLAGS:=$(CPPFLAGS) LDFLAGS:=$(LDFLAGS) LIB_INCLUDE_FLAGS=-L./lib/so @@ -114,7 +114,7 @@ library_clean: os.kernel: library_all module_all $(OBJS) $(ARCHDIR)/linker.ld $(CC) -T $(ARCHDIR)/linker.ld -o $@ $(CFLAGS) $(LINK_LIST) $(MODULE_OBJS) \ - $(LIB_INCLUDE_FLAGS) $(LIBS) + $(LIB_INCLUDE_FLAGS) $(LIBS) grub-file --is-x86-multiboot os.kernel $(ARCHDIR)/crtbegin.o $(ARCHDIR)/crtend.o: diff --git a/kernel/Makefile.Module b/kernel/Makefile.Module index 9f1a4cb..409eb29 100644 --- a/kernel/Makefile.Module +++ b/kernel/Makefile.Module @@ -28,6 +28,10 @@ OBJ += $(ASM:$(ASM_DIR)/%.S=$(OBJ_DIR)/%.o) HFLAGS = -MMD CFLAGS+=-c +# Linker settings. + +LDFLAGS = -r -nostdlib -ffreestanding -lgcc + # Include directories INCFLAGS = $(foreach TMP, $(LIB_INCLUDE_DIRS), -I$(TMP)) @@ -37,8 +41,8 @@ INCFLAGS += $(foreach TMP, $(INCLUDE_DIRS), -I$(TMP)) all: $(MOD_OBJ) -$(MOD_OBJ): $(OBJ) | $(MOBJ_DIR) - $(AR) rcs $@ $(OBJ) +$(MOD_OBJ): $(OBJ) + $(CC) $(OBJ) -o $@ $(LDFLAGS) $(OBJ_DIR)/%.o: $(SRC_DIR)/%.c | $(OBJ_DIR) $(CC) $< -o $@ $(CFLAGS) $(HFLAGS) $(INCFLAGS) @@ -46,10 +50,10 @@ $(OBJ_DIR)/%.o: $(SRC_DIR)/%.c | $(OBJ_DIR) $(OBJ_DIR)/%.o: $(ASM_DIR)/%.S | $(OBJ_DIR) $(CC) $< -o $@ $(CFLAGS) $(HFLAGS) $(INCFLAGS) -$(OBJ_DIR) $(MOBJ_DIR): +$(OBJ_DIR): mkdir -p $@ clean: - @$(RM) -rv $(OBJ_DIR) $(MOBJ_DIR) + @$(RM) -rv $(OBJ_DIR) -include $(OBJ:.o=.d)