aboutsummaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorNic Gaffney <gaffney_nic@protonmail.com>2023-11-06 02:00:07 -0600
committerNic Gaffney <gaffney_nic@protonmail.com>2023-11-06 02:00:07 -0600
commite14a65df735ce1b00533c73533ce91f8e591ea68 (patch)
tree6105dc57bbbdd88b6c6b1cec5da87e930cdd9dc8 /Makefile
parent036398ab051f2df5b70303e03f4f6506d36cb6eb (diff)
downloadgftos-e14a65df735ce1b00533c73533ce91f8e591ea68.tar.gz
global constructors
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