feat: init
This commit is contained in:
parent
7f4fadfa30
commit
9375cc74bd
7 changed files with 1184 additions and 0 deletions
66
kernel/GNUmakefile
Normal file
66
kernel/GNUmakefile
Normal file
|
@ -0,0 +1,66 @@
|
|||
# EMK 1.0 Copyright (c) 2025 Piraterna
|
||||
MAKEFLAGS += -rR
|
||||
.SUFFIXES:
|
||||
|
||||
SRCDIR := src
|
||||
INCDIR := src
|
||||
OBJDIR := build
|
||||
BINDIR := bin
|
||||
|
||||
TARGET := $(BINDIR)/emk.elf
|
||||
|
||||
CC := gcc
|
||||
AS := gcc
|
||||
NASM := nasm
|
||||
|
||||
CFLAGS := -g -O2 -pipe -Wall -Wextra -Werror -std=gnu11 -ffreestanding \
|
||||
-fno-stack-protector -fno-stack-check -fno-PIC \
|
||||
-ffunction-sections -fdata-sections -m64 -march=x86-64 \
|
||||
-mno-80387 -mno-mmx -mno-sse -mno-sse2 -mno-red-zone \
|
||||
-mcmodel=kernel -Wno-unused-variable
|
||||
CPPFLAGS := -I$(INCDIR) -I$(SRCDIR) -MMD -MP -DLIMINE_API_REVISION=3
|
||||
NASMFLAGS := -F dwarf -g
|
||||
LDFLAGS := -nostdlib -static -z max-page-size=0x1000 -Wl,--gc-sections \
|
||||
-T linker.ld -Wl,-m,elf_x86_64
|
||||
|
||||
SRCS := $(shell find $(SRCDIR) -type f \( -name '*.c' -o -name '*.S' -o -name '*.asm' \))
|
||||
OBJS := $(patsubst %.c,$(OBJDIR)/%.o,$(filter %.c,$(SRCS))) \
|
||||
$(patsubst %.S,$(OBJDIR)/%.o,$(filter %.S,$(SRCS))) \
|
||||
$(patsubst %.asm,$(OBJDIR)/%.o,$(filter %.asm,$(SRCS)))
|
||||
|
||||
DEPS := $(OBJS:.o=.d)
|
||||
|
||||
.PHONY: all clean distclean
|
||||
all: $(TARGET)
|
||||
|
||||
$(OBJDIR) $(BINDIR):
|
||||
@mkdir -p $@
|
||||
|
||||
$(TARGET): $(OBJS) | $(BINDIR)
|
||||
@echo " LD $@"
|
||||
@$(CC) $(LDFLAGS) -o $@ $(OBJS)
|
||||
|
||||
$(OBJDIR)/%.o: %.c | $(OBJDIR)
|
||||
@mkdir -p $(dir $@)
|
||||
@echo " CC $<"
|
||||
@$(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@
|
||||
|
||||
$(OBJDIR)/%.o: %.S | $(OBJDIR)
|
||||
@mkdir -p $(dir $@)
|
||||
@echo " AS $<"
|
||||
@$(AS) $(CPPFLAGS) $(CFLAGS) -c $< -o $@
|
||||
|
||||
$(OBJDIR)/%.o: %.asm | $(OBJDIR)
|
||||
@mkdir -p $(dir $@)
|
||||
@echo " NASM $<"
|
||||
@$(NASM) $(NASMFLAGS) $< -o $@
|
||||
|
||||
clean:
|
||||
@echo " CLEAN"
|
||||
@rm -rf $(OBJDIR) $(TARGET)
|
||||
|
||||
distclean: clean
|
||||
@echo " DISTCLEAN"
|
||||
@rm -rf $(BINDIR)
|
||||
|
||||
-include $(DEPS)
|
Loading…
Add table
Add a link
Reference in a new issue