diff options
Diffstat (limited to 'Makefile')
| -rw-r--r-- | Makefile | 25 |
1 files changed, 16 insertions, 9 deletions
@@ -22,11 +22,19 @@ LINK_FILE = linker.ld LDFLAGS = -O2 -nostdlib -lgcc -ffreestanding OBJS = -C_OBJS := $(C:$(SRC)/%.c=$(BUILD)/C/%.o) -ASM_OBJS := $(ASM:$(SRC)/%.s=$(BUILD)/ASM/%.o) +C_OBJS := $(C:$(SRC)/%.c=$(BUILD)/%.o) +ASM_OBJS := $(ASM:$(SRC)/%.s=$(BUILD)/%.o) -OBJS += $(C_OBJS) -OBJS += $(ASM_OBJS) +CRTBEGIN_OBJ := $(shell $(CC) $(CFLAGS) -print-file-name=crtbegin.o) +CRTEND_OBJ := $(shell $(CC) $(CFLAGS) -print-file-name=crtend.o) +CRTI_OBJ = $(BUILD)/header/crti.o +CRTN_OBJ = $(BUILD)/header/crtn.o + +OBJS += $(CRTI_OBJ) $(CRTBEGIN_OBJ) +OBJS += $(C_OBJS) $(ASM_OBJS) +OBJS += $(CRTEND_OBJ) $(CRTN_OBJ) + +INTERNAL_OBJS = $(CRTI_OBJ) $(ASM_OBJS) $(C_OBJS) $(CRTN_OBJ) DEPS := $(OBJS:.o=.d) .PHONY: all @@ -42,19 +50,18 @@ $(OUT_DIR)/$(ISO).iso : $(OUT_DIR)/isodir/boot/$(ISO).bin $(OUT_DIR)/isodir/boot/$(ISO).bin : $(OBJS) $(CC) -T $(SRC)/$(LINK_FILE) -o $@ $(LDFLAGS) $^ -$(BUILD)/ASM/%.o: $(SRC)/%.s +$(BUILD)/%.o: $(SRC)/%.s mkdir -p $(BUILD) - mkdir -p $(BUILD)/ASM mkdir -p $(@D) $(ASSEMBLER) $^ -o $@ -$(BUILD)/C/%.o: $(SRC)/%.c +$(BUILD)/%.o: $(SRC)/%.c mkdir -p $(BUILD) - mkdir -p $(BUILD)/C mkdir -p $(@D) $(CC) $(CFLAGS) -c $^ -o $@ + clean: - rm -rf $(BUILD) + rm -rf $(INTERNAL_OBJS) rm -rf $(OUT_DIR)/$(ISO).iso rm -rf $(OUT_DIR)/isodir/boot/$(ISO).bin |
