79
Makefile
Archivo normal
79
Makefile
Archivo normal
@@ -0,0 +1,79 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
# Rust Kernel Makefile
|
||||
|
||||
RUST_KERNEL_VERSION := 0.1.0
|
||||
ARCH ?= x86_64
|
||||
BUILD_TYPE ?= release
|
||||
|
||||
# Enable unstable features on stable compiler
|
||||
export RUSTC_BOOTSTRAP := 1
|
||||
|
||||
# Cargo configuration
|
||||
CARGO := cargo
|
||||
|
||||
ifeq ($(BUILD_TYPE),debug)
|
||||
CARGO_FLAGS :=
|
||||
else
|
||||
CARGO_FLAGS := --release
|
||||
endif
|
||||
|
||||
# Kernel build command
|
||||
KERNEL_BUILD_CMD := cd kernel && $(CARGO) build $(CARGO_FLAGS) \
|
||||
--target x86_64-unknown-none \
|
||||
-Z build-std=core,alloc \
|
||||
-Z build-std-features=compiler-builtins-mem
|
||||
|
||||
# Binary locations
|
||||
KERNEL_BIN := kernel/target/x86_64-unknown-none/$(BUILD_TYPE)/rust-kernel
|
||||
ISO_BOOT := iso/boot/rust-kernel
|
||||
|
||||
# Default target
|
||||
all: iso
|
||||
|
||||
# Build the kernel binary
|
||||
kernel:
|
||||
@echo "Building Rust kernel ($(ARCH), $(BUILD_TYPE))"
|
||||
@$(KERNEL_BUILD_CMD)
|
||||
@echo "Kernel binary: $(KERNEL_BIN)"
|
||||
|
||||
# Create bootable ISO
|
||||
iso: kernel
|
||||
@echo "Creating bootable ISO..."
|
||||
@mkdir -p iso/boot/grub
|
||||
@cp $(KERNEL_BIN) $(ISO_BOOT)
|
||||
@grub-mkrescue -o rust-kernel.iso iso 2>/dev/null && echo "ISO created: rust-kernel.iso"
|
||||
|
||||
# Run in QEMU
|
||||
run: iso
|
||||
@echo "Starting kernel in QEMU (Ctrl+C to exit)..."
|
||||
@qemu-system-x86_64 -m 512M -cdrom rust-kernel.iso -serial stdio -no-reboot
|
||||
|
||||
# Quick test run
|
||||
test-run: iso
|
||||
@echo "Testing kernel (10s timeout)..."
|
||||
@timeout 10s qemu-system-x86_64 -m 512M -cdrom rust-kernel.iso -serial stdio -no-reboot 2>&1 || true
|
||||
|
||||
# Run with debug output
|
||||
debug: iso
|
||||
@qemu-system-x86_64 -m 512M -cdrom rust-kernel.iso -serial stdio -no-reboot -d int,cpu_reset
|
||||
|
||||
# Clean build artifacts
|
||||
clean:
|
||||
@cd kernel && $(CARGO) clean
|
||||
@rm -f rust-kernel.iso
|
||||
@echo "Clean complete"
|
||||
|
||||
# Format code
|
||||
fmt:
|
||||
@cd kernel && $(CARGO) fmt
|
||||
|
||||
# Check formatting
|
||||
fmt-check:
|
||||
@cd kernel && $(CARGO) fmt --check
|
||||
|
||||
# Generate documentation
|
||||
doc:
|
||||
@cd kernel && $(CARGO) doc --no-deps
|
||||
|
||||
.PHONY: all kernel iso run test-run debug clean fmt fmt-check doc
|
||||
Referencia en una nueva incidencia
Block a user