init
This commit is contained in:
44
kernel/GNUmakefile
Normal file
44
kernel/GNUmakefile
Normal file
@@ -0,0 +1,44 @@
|
||||
# Nuke built-in rules and variables.
|
||||
MAKEFLAGS += -rR
|
||||
.SUFFIXES:
|
||||
|
||||
# This is the name that our final executable will have.
|
||||
# Change as needed.
|
||||
override OUTPUT := kernel
|
||||
|
||||
# Convenience macro to reliably declare user overridable variables.
|
||||
override USER_VARIABLE = $(if $(filter $(origin $(1)),default undefined),$(eval override $(1) := $(2)))
|
||||
|
||||
# Target architecture to build for. Default to x86_64.
|
||||
$(call USER_VARIABLE,KARCH,x86_64)
|
||||
|
||||
ifeq ($(RUST_TARGET),)
|
||||
override RUST_TARGET := $(KARCH)-unknown-none
|
||||
ifeq ($(KARCH),riscv64)
|
||||
override RUST_TARGET := riscv64gc-unknown-none-elf
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(RUST_PROFILE),)
|
||||
override RUST_PROFILE := dev
|
||||
endif
|
||||
|
||||
override RUST_PROFILE_SUBDIR := $(RUST_PROFILE)
|
||||
ifeq ($(RUST_PROFILE),dev)
|
||||
override RUST_PROFILE_SUBDIR := debug
|
||||
endif
|
||||
|
||||
# Default target.
|
||||
.PHONY: all
|
||||
all:
|
||||
RUSTFLAGS="-C relocation-model=static" cargo build --target $(RUST_TARGET) --profile $(RUST_PROFILE)
|
||||
cp target/$(RUST_TARGET)/$(RUST_PROFILE_SUBDIR)/$$(cd target/$(RUST_TARGET)/$(RUST_PROFILE_SUBDIR) && find -maxdepth 1 -perm -111 -type f) kernel
|
||||
|
||||
# Remove object files and the final executable.
|
||||
.PHONY: clean
|
||||
clean:
|
||||
cargo clean
|
||||
rm -rf kernel
|
||||
|
||||
.PHONY: distclean
|
||||
distclean: clean
|
||||
Reference in New Issue
Block a user