Bad makefile
This commit is contained in:
parent
2830ad60e1
commit
13b91e7aae
1 changed files with 72 additions and 8 deletions
80
Makefile
80
Makefile
|
@ -1,4 +1,6 @@
|
||||||
TOOLPREFIX = riscv-none-elf
|
# TOOLPREFIX = riscv64-linux-gnu
|
||||||
|
# TOOLPREFIX = toolchain/xpack-riscv-none-elf-gcc-14.2.0-3/bin/riscv-none-elf
|
||||||
|
TOOLPREFIX = toolchain/gcc/bin/riscv-none-elf
|
||||||
|
|
||||||
CC = $(TOOLPREFIX)-gcc
|
CC = $(TOOLPREFIX)-gcc
|
||||||
AS = $(TOOLPREFIX)-as
|
AS = $(TOOLPREFIX)-as
|
||||||
|
@ -17,25 +19,32 @@ CFLAGS += -mcmodel=medany
|
||||||
CFLAGS += -march=rv64gc -mabi=lp64
|
CFLAGS += -march=rv64gc -mabi=lp64
|
||||||
CFLAGS += -ffreestanding -fno-common -nostdlib -mno-relax
|
CFLAGS += -ffreestanding -fno-common -nostdlib -mno-relax
|
||||||
|
|
||||||
CFLAGS += -I.
|
|
||||||
CFLAGS += -Ilib
|
|
||||||
CFLAGS += -Ikern
|
|
||||||
|
|
||||||
CFLAGS += -fno-stack-protector # Prevents code that needs libc / runtime support
|
CFLAGS += -fno-stack-protector # Prevents code that needs libc / runtime support
|
||||||
CFLAGS += -MD # Generate header dependency files (.d)
|
CFLAGS += -MD # Generate header dependency files (.d)
|
||||||
CFLAGS += -fno-pie -no-pie # Fixed address linking
|
CFLAGS += -fno-pie -no-pie # Fixed address linking
|
||||||
CFLAGS += -ggdb -gdwarf-2 # GDB debug info
|
CFLAGS += -ggdb -gdwarf-2 # GDB debug info
|
||||||
CFLAGS += -fno-omit-frame-pointer # More reliable backtraces in GDB
|
CFLAGS += -fno-omit-frame-pointer # More reliable backtraces in GDB
|
||||||
|
|
||||||
|
KCFLAGS += $(CGFLAGS)
|
||||||
|
KCFLAGS += -DNEPTUNE_KERNEL
|
||||||
|
KCFLAGS += -Ikern
|
||||||
|
KCFLAGS += -Ikern/libkern
|
||||||
|
KCFLAGS += -I.
|
||||||
|
|
||||||
|
CFLAGS += -I.
|
||||||
|
CFLAGS += -Ilib
|
||||||
|
|
||||||
all: kernel.elf
|
all: kernel.elf
|
||||||
|
|
||||||
kernel.elf: entry.o start.o lib/string.o lib/proc.o lib/proc.o lib/uart.o lib/panic.o kern/kalloc.o lib/memory.o kern/ispinlock.o lib/spinlock.o
|
main: main.o
|
||||||
|
|
||||||
|
kernel.elf: entry.o start.o kern/libkern/string.o kern/libkern/proc.o kern/libkern/uart.o kern/libkern/panic.o kern/kalloc.o kern/libkern/memory.o kern/ispinlock.o kern/libkern/spinlock.o kern/libkern/string.o kern/libkern/mini-printf.o
|
||||||
@echo LD $@
|
@echo LD $@
|
||||||
@$(LD) $(LDFLAGS) -o $@ $^
|
@$(LD) $(LDFLAGS) -o $@ $^
|
||||||
|
|
||||||
%.o: %.c
|
%.o: %.c
|
||||||
@echo CC $@
|
@echo CC $@
|
||||||
@$(CC) $(CFLAGS) -nostdinc -I. -c $< -o $@
|
@$(CC) $(KCFLAGS) -nostdinc -I. -c $< -o $@
|
||||||
|
|
||||||
%.o: %.S
|
%.o: %.S
|
||||||
@echo AS $@
|
@echo AS $@
|
||||||
|
@ -47,7 +56,62 @@ qemu: kernel.elf
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o *.elf *.d lib/*.o lib/*.d
|
rm -f *.o *.elf *.d lib/*.o lib/*.d
|
||||||
|
fd -e o -x rm # TODO: Should only depend on posix
|
||||||
|
|
||||||
-include *.d
|
-include *.d
|
||||||
|
|
||||||
.PHONY: all
|
# --------------------------------------------------------------------
|
||||||
|
# Toolchain configuration
|
||||||
|
# --------------------------------------------------------------------
|
||||||
|
|
||||||
|
TOOLCHAIN_DIR := toolchain
|
||||||
|
|
||||||
|
# Versions
|
||||||
|
QEMU_VER := 8.2.6-1
|
||||||
|
GCC_VER := 14.2.0-3
|
||||||
|
|
||||||
|
# Filenames
|
||||||
|
QEMU_TARBALL := xpack-qemu-riscv-$(QEMU_VER)-linux-arm.tar.gz
|
||||||
|
GCC_TARBALL := xpack-riscv-none-elf-gcc-$(GCC_VER)-linux-arm.tar.gz
|
||||||
|
|
||||||
|
# URLs
|
||||||
|
QEMU_URL := https://github.com/xpack-dev-tools/qemu-riscv-xpack/releases/download/v$(QEMU_VER)/$(QEMU_TARBALL)
|
||||||
|
GCC_URL := https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack/releases/download/v$(GCC_VER)/$(GCC_TARBALL)
|
||||||
|
|
||||||
|
# Paths
|
||||||
|
QEMU_TARPATH := toolchain/xpack-qemu-riscv-8.2.6-1-linux-arm.tar.gz
|
||||||
|
GCC_TARPATH := toolchain/xpack-riscv-none-elf-gcc-14.2.0-3-linux-arm.tar.gz
|
||||||
|
|
||||||
|
# Extracted directories
|
||||||
|
QEMU_DIR := $(TOOLCHAIN_DIR)/xpack-qemu-riscv-$(QEMU_VER)
|
||||||
|
GCC_DIR := $(TOOLCHAIN_DIR)/xpack-riscv-none-elf-gcc-$(GCC_VER)
|
||||||
|
|
||||||
|
# Symlink targets
|
||||||
|
QEMU_SYM_DIR := xpack-qemu-riscv-$(QEMU_VER)
|
||||||
|
GCC_SYM_DIR := xpack-riscv-none-elf-gcc-$(GCC_VER)
|
||||||
|
|
||||||
|
# Final symlink/alias
|
||||||
|
GCC_ALIAS := gcc
|
||||||
|
QEMU_ALIAS := qemu
|
||||||
|
|
||||||
|
QEMU_TARPATH:
|
||||||
|
curl -# -L -o $@ $(QEMU_URL)
|
||||||
|
|
||||||
|
GCC_TARPATH:
|
||||||
|
curl -# -L -o $@ $(GCC_URL)
|
||||||
|
|
||||||
|
extractions:
|
||||||
|
cd toolchain && tar xf $(QEMU_TARBALL)
|
||||||
|
cd toolchain && tar xf $(GCC_TARBALL)
|
||||||
|
|
||||||
|
toolchain: $(QEMU_TARPATH) $(GCC_TARPATH)
|
||||||
|
mkdir -p toolchain
|
||||||
|
cd toolchain && tar xf $(QEMU_TARBALL)
|
||||||
|
cd toolchain && tar xf $(GCC_TARBALL)
|
||||||
|
cd $(TOOLCHAIN_DIR) && ln -sfn $(QEMU_SYM_DIR) $(QEMU_ALIAS)
|
||||||
|
cd $(TOOLCHAIN_DIR) && ln -sfn $(GCC_SYM_DIR) $(GCC_ALIAS)
|
||||||
|
|
||||||
|
distclean: clean
|
||||||
|
rm -rf $(TOOLCHAIN_DIR)
|
||||||
|
|
||||||
|
.PHONY: all toolchain
|
||||||
|
|
Loading…
Add table
Reference in a new issue