diff options
| -rw-r--r-- | BuildConfig | 1 | ||||
| -rw-r--r-- | Makefile | 7 | ||||
| -rw-r--r-- | kernel/riscv/linker.ld (renamed from linker.ld) | 1 |
3 files changed, 5 insertions, 4 deletions
diff --git a/BuildConfig b/BuildConfig index 000d4ee..c985c6c 100644 --- a/BuildConfig +++ b/BuildConfig @@ -1,4 +1,5 @@ kernel: kernel/riscv/*.c kernel/riscv/*.S kernel/common/*.c +linker_script: kernel/riscv/linker.ld kernel_target: kernel/riscv modules: console console: console/*.c @@ -33,7 +33,7 @@ INCLUDE_FLAG = -Iinclude -Ikernel OPT_FLAG = -O2 -g3 WARN_FLAG = -Wall -Wextra -Werror -Wundef -KERNEL_LD_FLAG = -T linker.ld -nostdlib -m elf32lriscv --gc-sections +KERNEL_LD_FLAG = -T $(KERNEL_LD) -nostdlib -m elf32lriscv --gc-sections MODULE_LD_FLAG = -nostdlib -shared -m elf32lriscv --gc-sections KERNEL_OBJCOPY_FLAG = -O binary \ @@ -85,6 +85,7 @@ endef $(foreach module,$(MODULES),$(eval $(call module_template,$(module)))) KERNEL_SRCS = $(wildcard $(shell grep '^kernel:' BuildConfig | sed 's/^kernel://' | awk '{$$1=$$1; print}')) +KERNEL_LD := $(shell grep '^linker_script:' BuildConfig | sed 's/^linker_script://' | awk '{$$1=$$1; print}') KERNEL_OBJS = $(KERNEL_SRCS:.c=.o) KERNEL_OBJS := $(KERNEL_OBJS:.S=.o) KERNEL_BIN = kernel/kernel.bin @@ -112,7 +113,7 @@ $(MODULES): $(MODULE_OBJECTS) @echo " AS $<" $(CC) $(KERNEL_CFLAGS) -c $< -o $@ -$(KERNEL_ELF): $(KERNEL_OBJS) linker.ld | $(KERNEL_OUTDIR)/ +$(KERNEL_ELF): $(KERNEL_OBJS) $(KERNEL_LD) | $(KERNEL_OUTDIR)/ @echo " LD $@" $(LD) $(KERNEL_LD_FLAG) $(KERNEL_OBJS) -o $@ @@ -121,5 +122,5 @@ $(KERNEL_BIN): $(KERNEL_ELF) | $(KERNEL_OUTDIR)/ $(OBJCOPY) $(KERNEL_OBJCOPY_FLAG) $(KERNEL_ELF) $(KERNEL_BIN) clean: - @echo " CLEAN" + @echo " CLEAN $(GENERATED)" $(RM) $(GENERATED) diff --git a/linker.ld b/kernel/riscv/linker.ld index 4fec2bf..5bf6586 100644 --- a/linker.ld +++ b/kernel/riscv/linker.ld @@ -71,5 +71,4 @@ SECTIONS *(.llvm_*) *(.rela.*) } - _end = .; } |
