aboutsummaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile25
1 files changed, 16 insertions, 9 deletions
diff --git a/Makefile b/Makefile
index a64980d..258638f 100644
--- a/Makefile
+++ b/Makefile
@@ -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