Better makefile, working toolchain fetching
This commit is contained in:
parent
0d8a1af1ff
commit
f2c4a3ed28
1 changed files with 55 additions and 5 deletions
60
Makefile
60
Makefile
|
@ -1,6 +1,21 @@
|
||||||
TOOLPREFIX = riscv64-linux-gnu
|
# See: https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack/releases
|
||||||
# TOOLPREFIX = toolchain/xpack-riscv-none-elf-gcc-14.2.0-3/bin/riscv-none-elf
|
# See: https://github.com/xpack-dev-tools/qemu-riscv-xpack/releases
|
||||||
# TOOLPREFIX = toolchain/gcc/bin/riscv-none-elf
|
GCC_VER := 14.2.0-3
|
||||||
|
QEMU_VER := 8.2.6-1
|
||||||
|
|
||||||
|
SYS_TOOLPREFIX ?= riscv64-linux-gnu
|
||||||
|
|
||||||
|
GCC_PATH := toolchain/gcc/bin
|
||||||
|
LOCAL_TOOLPREFIX := $(GCC_PATH)/riscv-none-elf
|
||||||
|
|
||||||
|
# TODO: Some wildcard condition to detect prefix
|
||||||
|
TOOLPREFIX := $(LOCAL_TOOLPREFIX)
|
||||||
|
# TOOLPREFIX := $(SYS_TOOLPREFIX)
|
||||||
|
$(info Using toolchain: $(TOOLPREFIX))
|
||||||
|
|
||||||
|
QEMU_PATH := toolchain/qemu/bin
|
||||||
|
QEMU = $(QEMU_PATH)/qemu-system-riscv64
|
||||||
|
$(info Using qemu: $(QEMU))
|
||||||
|
|
||||||
CC = $(TOOLPREFIX)-gcc
|
CC = $(TOOLPREFIX)-gcc
|
||||||
AS = $(TOOLPREFIX)-as
|
AS = $(TOOLPREFIX)-as
|
||||||
|
@ -62,7 +77,7 @@ kern/kernel.elf: $(KERNEL_OBJ)
|
||||||
|
|
||||||
qemu: kern/kernel.elf
|
qemu: kern/kernel.elf
|
||||||
@echo QEMU $<
|
@echo QEMU $<
|
||||||
@qemu-system-riscv64 -machine virt -bios none -nographic -m 128M -smp 4 -kernel $<
|
@$(QEMU) -machine virt -bios none -nographic -m 128M -smp 4 -kernel $<
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o *.elf *.d lib/*.o lib/*.d
|
rm -f *.o *.elf *.d lib/*.o lib/*.d
|
||||||
|
@ -71,6 +86,41 @@ clean:
|
||||||
format:
|
format:
|
||||||
find . -type f -name '*.[ch]' -exec clang-format -i {} +
|
find . -type f -name '*.[ch]' -exec clang-format -i {} +
|
||||||
|
|
||||||
|
TOOLCHAIN_DIR := toolchain
|
||||||
|
|
||||||
|
QEMU_TARBALL := xpack-qemu-riscv-$(QEMU_VER)-linux-x64.tar.gz
|
||||||
|
GCC_TARBALL := xpack-riscv-none-elf-gcc-$(GCC_VER)-linux-x64.tar.gz
|
||||||
|
|
||||||
|
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)
|
||||||
|
|
||||||
|
QEMU_TARPATH := toolchain/$(QEMU_TARBALL)
|
||||||
|
GCC_TARPATH := toolchain/$(GCC_TARBALL)
|
||||||
|
|
||||||
|
QEMU_SYM_DIR := xpack-qemu-riscv-$(QEMU_VER)
|
||||||
|
GCC_SYM_DIR := xpack-riscv-none-elf-gcc-$(GCC_VER)
|
||||||
|
|
||||||
|
QEMU_ALIAS := qemu
|
||||||
|
GCC_ALIAS := gcc
|
||||||
|
|
||||||
|
$(TOOLCHAIN_DIR):
|
||||||
|
mkdir -p $@
|
||||||
|
|
||||||
|
$(QEMU_TARPATH): $(TOOLCHAIN_DIR)
|
||||||
|
curl -# -L -o $@ $(QEMU_URL)
|
||||||
|
|
||||||
|
$(GCC_TARPATH): $(TOOLCHAIN_DIR)
|
||||||
|
curl -# -L -o $@ $(GCC_URL)
|
||||||
|
|
||||||
|
get_toolchain: $(TOOLCHAIN_DIR) $(GCC_TARPATH) $(QEMU_TARPATH)
|
||||||
|
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)
|
||||||
|
|
||||||
-include *.d
|
-include *.d
|
||||||
|
|
||||||
.PHONY: all
|
.PHONY: all qemu
|
||||||
|
|
Loading…
Add table
Reference in a new issue