From e14a65df735ce1b00533c73533ce91f8e591ea68 Mon Sep 17 00:00:00 2001 From: Nic Gaffney Date: Mon, 6 Nov 2023 02:00:07 -0600 Subject: global constructors --- Makefile | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) (limited to 'Makefile') 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 -- cgit v1.2.3