Let cargo track changed files

This should enable incremental compilation monitored by cargo.
pull/54/head
Andre Richter 4 years ago
parent a4266ba978
commit 0a1616d8b2
No known key found for this signature in database
GPG Key ID: 2116C1AB102F615E

@ -13,6 +13,8 @@ source_files_exts = ['.S', '.rs', '.rb']
staged_files = `git --no-pager diff --name-only --cached --diff-filter=d`.split(/\n/)
staged_files.select! do |f|
next if f.include?('build.rs')
f.include?('Makefile') ||
f.include?('Dockerfile') ||
source_files_exts.include?(File.extname(f))

@ -24,7 +24,8 @@ else ifeq ($(BSP),rpi4)
RUSTC_MISC_ARGS = -C target-cpu=cortex-a72
endif
SOURCES = $(shell find . -name '*.rs' -o -name '*.S' -o -name '*.ld')
# Export for build.rs
export LINKER_FILE
RUSTFLAGS = -C link-arg=-T$(LINKER_FILE) $(RUSTC_MISC_ARGS)
RUSTFLAGS_PEDANTIC = $(RUSTFLAGS) -D warnings -D missing_docs
@ -51,14 +52,12 @@ EXEC_QEMU = $(QEMU_BINARY) -M $(QEMU_MACHINE_TYPE)
.PHONY: all doc qemu clippy clean readelf objdump nm
all: clean $(OUTPUT)
$(KERNEL_ELF): $(SOURCES)
all:
RUSTFLAGS="$(RUSTFLAGS_PEDANTIC)" $(RUSTC_CMD)
$(OUTPUT): $(KERNEL_ELF)
cp $< .
$(OBJCOPY_CMD) $< $(OUTPUT)
@if [ ! -f kernel ] || [ $(KERNEL_ELF) -nt kernel ]; then \
cp $(KERNEL_ELF) .; \
$(OBJCOPY_CMD) kernel $(OUTPUT); \
fi
doc:
$(DOC_CMD) --document-private-items --open
@ -77,11 +76,11 @@ clippy:
clean:
rm -rf target
readelf:
readelf: all
readelf -a $(KERNEL_ELF)
objdump:
objdump: all
rust-objdump --arch-name aarch64 -disassemble -no-show-raw-insn -print-imm-hex $(KERNEL_ELF)
nm:
nm: all
rust-nm --demangle --print-size $(KERNEL_ELF) | sort

@ -0,0 +1,7 @@
use std::env;
fn main() {
let linker_file = env::var("LINKER_FILE").unwrap();
println!("cargo:rerun-if-changed={}", linker_file);
}

@ -24,7 +24,8 @@ else ifeq ($(BSP),rpi4)
RUSTC_MISC_ARGS = -C target-cpu=cortex-a72
endif
SOURCES = $(shell find . -name '*.rs' -o -name '*.S' -o -name '*.ld')
# Export for build.rs
export LINKER_FILE
RUSTFLAGS = -C link-arg=-T$(LINKER_FILE) $(RUSTC_MISC_ARGS)
RUSTFLAGS_PEDANTIC = $(RUSTFLAGS) -D warnings -D missing_docs
@ -51,14 +52,12 @@ EXEC_QEMU = $(QEMU_BINARY) -M $(QEMU_MACHINE_TYPE)
.PHONY: all doc qemu clippy clean readelf objdump nm
all: clean $(OUTPUT)
$(KERNEL_ELF): $(SOURCES)
all:
RUSTFLAGS="$(RUSTFLAGS_PEDANTIC)" $(RUSTC_CMD)
$(OUTPUT): $(KERNEL_ELF)
cp $< .
$(OBJCOPY_CMD) $< $(OUTPUT)
@if [ ! -f kernel ] || [ $(KERNEL_ELF) -nt kernel ]; then \
cp $(KERNEL_ELF) .; \
$(OBJCOPY_CMD) kernel $(OUTPUT); \
fi
doc:
$(DOC_CMD) --document-private-items --open
@ -77,11 +76,11 @@ clippy:
clean:
rm -rf target
readelf:
readelf: all
readelf -a $(KERNEL_ELF)
objdump:
objdump: all
rust-objdump --arch-name aarch64 -disassemble -no-show-raw-insn -print-imm-hex $(KERNEL_ELF)
nm:
nm: all
rust-nm --demangle --print-size $(KERNEL_ELF) | sort

@ -0,0 +1,7 @@
use std::env;
fn main() {
let linker_file = env::var("LINKER_FILE").unwrap();
println!("cargo:rerun-if-changed={}", linker_file);
}

@ -24,7 +24,8 @@ else ifeq ($(BSP),rpi4)
RUSTC_MISC_ARGS = -C target-cpu=cortex-a72
endif
SOURCES = $(shell find . -name '*.rs' -o -name '*.S' -o -name '*.ld')
# Export for build.rs
export LINKER_FILE
RUSTFLAGS = -C link-arg=-T$(LINKER_FILE) $(RUSTC_MISC_ARGS)
RUSTFLAGS_PEDANTIC = $(RUSTFLAGS) -D warnings -D missing_docs
@ -51,14 +52,12 @@ EXEC_QEMU = $(QEMU_BINARY) -M $(QEMU_MACHINE_TYPE)
.PHONY: all doc qemu clippy clean readelf objdump nm
all: clean $(OUTPUT)
$(KERNEL_ELF): $(SOURCES)
all:
RUSTFLAGS="$(RUSTFLAGS_PEDANTIC)" $(RUSTC_CMD)
$(OUTPUT): $(KERNEL_ELF)
cp $< .
$(OBJCOPY_CMD) $< $(OUTPUT)
@if [ ! -f kernel ] || [ $(KERNEL_ELF) -nt kernel ]; then \
cp $(KERNEL_ELF) .; \
$(OBJCOPY_CMD) kernel $(OUTPUT); \
fi
doc:
$(DOC_CMD) --document-private-items --open
@ -77,11 +76,11 @@ clippy:
clean:
rm -rf target
readelf:
readelf: all
readelf -a $(KERNEL_ELF)
objdump:
objdump: all
rust-objdump --arch-name aarch64 -disassemble -no-show-raw-insn -print-imm-hex $(KERNEL_ELF)
nm:
nm: all
rust-nm --demangle --print-size $(KERNEL_ELF) | sort

@ -0,0 +1,7 @@
use std::env;
fn main() {
let linker_file = env::var("LINKER_FILE").unwrap();
println!("cargo:rerun-if-changed={}", linker_file);
}

@ -24,7 +24,8 @@ else ifeq ($(BSP),rpi4)
RUSTC_MISC_ARGS = -C target-cpu=cortex-a72
endif
SOURCES = $(shell find . -name '*.rs' -o -name '*.S' -o -name '*.ld')
# Export for build.rs
export LINKER_FILE
RUSTFLAGS = -C link-arg=-T$(LINKER_FILE) $(RUSTC_MISC_ARGS)
RUSTFLAGS_PEDANTIC = $(RUSTFLAGS) -D warnings -D missing_docs
@ -51,14 +52,12 @@ EXEC_QEMU = $(QEMU_BINARY) -M $(QEMU_MACHINE_TYPE)
.PHONY: all doc qemu clippy clean readelf objdump nm
all: clean $(OUTPUT)
$(KERNEL_ELF): $(SOURCES)
all:
RUSTFLAGS="$(RUSTFLAGS_PEDANTIC)" $(RUSTC_CMD)
$(OUTPUT): $(KERNEL_ELF)
cp $< .
$(OBJCOPY_CMD) $< $(OUTPUT)
@if [ ! -f kernel ] || [ $(KERNEL_ELF) -nt kernel ]; then \
cp $(KERNEL_ELF) .; \
$(OBJCOPY_CMD) kernel $(OUTPUT); \
fi
doc:
$(DOC_CMD) --document-private-items --open
@ -77,11 +76,11 @@ clippy:
clean:
rm -rf target
readelf:
readelf: all
readelf -a $(KERNEL_ELF)
objdump:
objdump: all
rust-objdump --arch-name aarch64 -disassemble -no-show-raw-insn -print-imm-hex $(KERNEL_ELF)
nm:
nm: all
rust-nm --demangle --print-size $(KERNEL_ELF) | sort

@ -0,0 +1,7 @@
use std::env;
fn main() {
let linker_file = env::var("LINKER_FILE").unwrap();
println!("cargo:rerun-if-changed={}", linker_file);
}

@ -24,7 +24,8 @@ else ifeq ($(BSP),rpi4)
RUSTC_MISC_ARGS = -C target-cpu=cortex-a72
endif
SOURCES = $(shell find . -name '*.rs' -o -name '*.S' -o -name '*.ld')
# Export for build.rs
export LINKER_FILE
RUSTFLAGS = -C link-arg=-T$(LINKER_FILE) $(RUSTC_MISC_ARGS)
RUSTFLAGS_PEDANTIC = $(RUSTFLAGS) -D warnings -D missing_docs
@ -51,14 +52,12 @@ EXEC_QEMU = $(QEMU_BINARY) -M $(QEMU_MACHINE_TYPE)
.PHONY: all doc qemu clippy clean readelf objdump nm
all: clean $(OUTPUT)
$(KERNEL_ELF): $(SOURCES)
all:
RUSTFLAGS="$(RUSTFLAGS_PEDANTIC)" $(RUSTC_CMD)
$(OUTPUT): $(KERNEL_ELF)
cp $< .
$(OBJCOPY_CMD) $< $(OUTPUT)
@if [ ! -f kernel ] || [ $(KERNEL_ELF) -nt kernel ]; then \
cp $(KERNEL_ELF) .; \
$(OBJCOPY_CMD) kernel $(OUTPUT); \
fi
doc:
$(DOC_CMD) --document-private-items --open
@ -77,11 +76,11 @@ clippy:
clean:
rm -rf target
readelf:
readelf: all
readelf -a $(KERNEL_ELF)
objdump:
objdump: all
rust-objdump --arch-name aarch64 -disassemble -no-show-raw-insn -print-imm-hex $(KERNEL_ELF)
nm:
nm: all
rust-nm --demangle --print-size $(KERNEL_ELF) | sort

@ -0,0 +1,7 @@
use std::env;
fn main() {
let linker_file = env::var("LINKER_FILE").unwrap();
println!("cargo:rerun-if-changed={}", linker_file);
}

@ -24,7 +24,8 @@ else ifeq ($(BSP),rpi4)
RUSTC_MISC_ARGS = -C target-cpu=cortex-a72
endif
SOURCES = $(shell find . -name '*.rs' -o -name '*.S' -o -name '*.ld')
# Export for build.rs
export LINKER_FILE
RUSTFLAGS = -C link-arg=-T$(LINKER_FILE) $(RUSTC_MISC_ARGS)
RUSTFLAGS_PEDANTIC = $(RUSTFLAGS) -D warnings -D missing_docs
@ -51,14 +52,12 @@ EXEC_QEMU = $(QEMU_BINARY) -M $(QEMU_MACHINE_TYPE)
.PHONY: all doc qemu clippy clean readelf objdump nm
all: clean $(OUTPUT)
$(KERNEL_ELF): $(SOURCES)
all:
RUSTFLAGS="$(RUSTFLAGS_PEDANTIC)" $(RUSTC_CMD)
$(OUTPUT): $(KERNEL_ELF)
cp $< .
$(OBJCOPY_CMD) $< $(OUTPUT)
@if [ ! -f kernel ] || [ $(KERNEL_ELF) -nt kernel ]; then \
cp $(KERNEL_ELF) .; \
$(OBJCOPY_CMD) kernel $(OUTPUT); \
fi
doc:
$(DOC_CMD) --document-private-items --open
@ -77,11 +76,11 @@ clippy:
clean:
rm -rf target
readelf:
readelf: all
readelf -a $(KERNEL_ELF)
objdump:
objdump: all
rust-objdump --arch-name aarch64 -disassemble -no-show-raw-insn -print-imm-hex $(KERNEL_ELF)
nm:
nm: all
rust-nm --demangle --print-size $(KERNEL_ELF) | sort

@ -0,0 +1,7 @@
use std::env;
fn main() {
let linker_file = env::var("LINKER_FILE").unwrap();
println!("cargo:rerun-if-changed={}", linker_file);
}

@ -32,7 +32,8 @@ else ifeq ($(BSP),rpi4)
CHAINBOOT_DEMO_PAYLOAD = demo_payload_rpi4.img
endif
SOURCES = $(shell find . -name '*.rs' -o -name '*.S' -o -name '*.ld')
# Export for build.rs
export LINKER_FILE
RUSTFLAGS = -C link-arg=-T$(LINKER_FILE) $(RUSTC_MISC_ARGS)
RUSTFLAGS_PEDANTIC = $(RUSTFLAGS) -D warnings -D missing_docs
@ -69,14 +70,12 @@ EXEC_MINIPUSH = ruby ../utils/minipush.rb
.PHONY: all doc qemu qemuasm chainboot clippy clean readelf objdump nm
all: clean $(OUTPUT)
$(KERNEL_ELF): $(SOURCES)
all:
RUSTFLAGS="$(RUSTFLAGS_PEDANTIC)" $(RUSTC_CMD)
$(OUTPUT): $(KERNEL_ELF)
cp $< .
$(OBJCOPY_CMD) $< $(OUTPUT)
@if [ ! -f kernel ] || [ $(KERNEL_ELF) -nt kernel ]; then \
cp $(KERNEL_ELF) .; \
$(OBJCOPY_CMD) kernel $(OUTPUT); \
fi
doc:
$(DOC_CMD) --document-private-items --open
@ -101,11 +100,11 @@ clippy:
clean:
rm -rf target
readelf:
readelf: all
readelf -a $(KERNEL_ELF)
objdump:
objdump: all
rust-objdump --arch-name aarch64 -disassemble -no-show-raw-insn -print-imm-hex $(KERNEL_ELF)
nm:
nm: all
rust-nm --demangle --print-size $(KERNEL_ELF) | sort

@ -126,8 +126,8 @@ diff -uNr 06_drivers_gpio_uart/Makefile 07_uart_chainloader/Makefile
+ CHAINBOOT_DEMO_PAYLOAD = demo_payload_rpi4.img
endif
SOURCES = $(shell find . -name '*.rs' -o -name '*.S' -o -name '*.ld')
@@ -44,12 +52,22 @@
# Export for build.rs
@@ -45,12 +53,22 @@
DOCKER_IMAGE = rustembedded/osdev-utils
DOCKER_CMD = docker run -it --rm -v $(shell pwd):/work/tutorial -w /work/tutorial
@ -150,9 +150,9 @@ diff -uNr 06_drivers_gpio_uart/Makefile 07_uart_chainloader/Makefile
+
+.PHONY: all doc qemu qemuasm chainboot clippy clean readelf objdump nm
all: clean $(OUTPUT)
@@ -64,13 +82,19 @@
all:
RUSTFLAGS="$(RUSTFLAGS_PEDANTIC)" $(RUSTC_CMD)
@@ -63,13 +81,19 @@
$(DOC_CMD) --document-private-items --open
ifeq ($(QEMU_MACHINE_TYPE),)

@ -0,0 +1,7 @@
use std::env;
fn main() {
let linker_file = env::var("LINKER_FILE").unwrap();
println!("cargo:rerun-if-changed={}", linker_file);
}

@ -30,7 +30,8 @@ else ifeq ($(BSP),rpi4)
RUSTC_MISC_ARGS = -C target-cpu=cortex-a72
endif
SOURCES = $(shell find . -name '*.rs' -o -name '*.S' -o -name '*.ld')
# Export for build.rs
export LINKER_FILE
RUSTFLAGS = -C link-arg=-T$(LINKER_FILE) $(RUSTC_MISC_ARGS)
RUSTFLAGS_PEDANTIC = $(RUSTFLAGS) -D warnings -D missing_docs
@ -67,14 +68,12 @@ EXEC_MINIPUSH = ruby ../utils/minipush.rb
.PHONY: all doc qemu chainboot clippy clean readelf objdump nm
all: clean $(OUTPUT)
$(KERNEL_ELF): $(SOURCES)
all:
RUSTFLAGS="$(RUSTFLAGS_PEDANTIC)" $(RUSTC_CMD)
$(OUTPUT): $(KERNEL_ELF)
cp $< .
$(OBJCOPY_CMD) $< $(OUTPUT)
@if [ ! -f kernel ] || [ $(KERNEL_ELF) -nt kernel ]; then \
cp $(KERNEL_ELF) .; \
$(OBJCOPY_CMD) kernel $(OUTPUT); \
fi
doc:
$(DOC_CMD) --document-private-items --open
@ -96,11 +95,11 @@ clippy:
clean:
rm -rf target
readelf:
readelf: all
readelf -a $(KERNEL_ELF)
objdump:
objdump: all
rust-objdump --arch-name aarch64 -disassemble -no-show-raw-insn -print-imm-hex $(KERNEL_ELF)
nm:
nm: all
rust-nm --demangle --print-size $(KERNEL_ELF) | sort

@ -65,17 +65,17 @@ diff -uNr 07_uart_chainloader/Makefile 08_timestamps/Makefile
+ RUSTC_MISC_ARGS = -C target-cpu=cortex-a72
endif
SOURCES = $(shell find . -name '*.rs' -o -name '*.S' -o -name '*.ld')
@@ -67,7 +65,7 @@
# Export for build.rs
@@ -68,7 +66,7 @@
EXEC_QEMU = $(QEMU_BINARY) -M $(QEMU_MACHINE_TYPE)
EXEC_MINIPUSH = ruby ../utils/minipush.rb
-.PHONY: all doc qemu qemuasm chainboot clippy clean readelf objdump nm
+.PHONY: all doc qemu chainboot clippy clean readelf objdump nm
all: clean $(OUTPUT)
@@ -82,18 +80,15 @@
all:
RUSTFLAGS="$(RUSTFLAGS_PEDANTIC)" $(RUSTC_CMD)
@@ -81,18 +79,15 @@
$(DOC_CMD) --document-private-items --open
ifeq ($(QEMU_MACHINE_TYPE),)

@ -0,0 +1,7 @@
use std::env;
fn main() {
let linker_file = env::var("LINKER_FILE").unwrap();
println!("cargo:rerun-if-changed={}", linker_file);
}

@ -34,7 +34,8 @@ else ifeq ($(BSP),rpi4)
RUSTC_MISC_ARGS = -C target-cpu=cortex-a72
endif
SOURCES = $(shell find . -name '*.rs' -o -name '*.S' -o -name '*.ld')
# Export for build.rs
export LINKER_FILE
RUSTFLAGS = -C link-arg=-T$(LINKER_FILE) $(RUSTC_MISC_ARGS)
RUSTFLAGS_PEDANTIC = $(RUSTFLAGS) -D warnings -D missing_docs
@ -78,14 +79,12 @@ EXEC_MINIPUSH = ruby ../utils/minipush.rb
.PHONY: all doc qemu chainboot jtagboot openocd gdb gdb-opt0 clippy clean readelf objdump nm
all: clean $(OUTPUT)
$(KERNEL_ELF): $(SOURCES)
all:
RUSTFLAGS="$(RUSTFLAGS_PEDANTIC)" $(RUSTC_CMD)
$(OUTPUT): $(KERNEL_ELF)
cp $< .
$(OBJCOPY_CMD) $< $(OUTPUT)
@if [ ! -f kernel ] || [ $(KERNEL_ELF) -nt kernel ]; then \
cp $(KERNEL_ELF) .; \
$(OBJCOPY_CMD) kernel $(OUTPUT); \
fi
doc:
$(DOC_CMD) --document-private-items --open
@ -113,10 +112,10 @@ define gen_gdb
@$(DOCKER_GDB) gdb-multiarch -q kernel_for_jtag
endef
gdb: clean $(SOURCES)
gdb:
$(call gen_gdb,-C debuginfo=2)
gdb-opt0: clean $(SOURCES)
gdb-opt0:
$(call gen_gdb,-C debuginfo=2 -C opt-level=0)
clippy:
@ -125,11 +124,11 @@ clippy:
clean:
rm -rf target
readelf:
readelf: all
readelf -a $(KERNEL_ELF)
objdump:
objdump: all
rust-objdump --arch-name aarch64 -disassemble -no-show-raw-insn -print-imm-hex $(KERNEL_ELF)
nm:
nm: all
rust-nm --demangle --print-size $(KERNEL_ELF) | sort

@ -323,7 +323,7 @@ diff -uNr 08_timestamps/Makefile 09_hw_debug_JTAG/Makefile
LINKER_FILE = src/bsp/raspberrypi/link.ld
RUSTC_MISC_ARGS = -C target-cpu=cortex-a72
endif
@@ -51,21 +55,28 @@
@@ -52,21 +56,28 @@
DOCKER_IMAGE = rustembedded/osdev-utils
DOCKER_CMD = docker run -it --rm -v $(shell pwd):/work/tutorial -w /work/tutorial
DOCKER_ARG_DIR_UTILS = -v $(shell pwd)/../utils:/work/utils
@ -351,9 +351,9 @@ diff -uNr 08_timestamps/Makefile 09_hw_debug_JTAG/Makefile
-.PHONY: all doc qemu chainboot clippy clean readelf objdump nm
+.PHONY: all doc qemu chainboot jtagboot openocd gdb gdb-opt0 clippy clean readelf objdump nm
all: clean $(OUTPUT)
@@ -90,6 +101,24 @@
all:
RUSTFLAGS="$(RUSTFLAGS_PEDANTIC)" $(RUSTC_CMD)
@@ -89,6 +100,24 @@
chainboot: all
@$(DOCKER_CHAINBOOT) $(EXEC_MINIPUSH) $(DEV_SERIAL) $(OUTPUT)
@ -369,10 +369,10 @@ diff -uNr 08_timestamps/Makefile 09_hw_debug_JTAG/Makefile
+ @$(DOCKER_GDB) gdb-multiarch -q kernel_for_jtag
+endef
+
+gdb: clean $(SOURCES)
+gdb:
+ $(call gen_gdb,-C debuginfo=2)
+
+gdb-opt0: clean $(SOURCES)
+gdb-opt0:
+ $(call gen_gdb,-C debuginfo=2 -C opt-level=0)
+
clippy:

@ -0,0 +1,7 @@
use std::env;
fn main() {
let linker_file = env::var("LINKER_FILE").unwrap();
println!("cargo:rerun-if-changed={}", linker_file);
}

@ -34,7 +34,8 @@ else ifeq ($(BSP),rpi4)
RUSTC_MISC_ARGS = -C target-cpu=cortex-a72
endif
SOURCES = $(shell find . -name '*.rs' -o -name '*.S' -o -name '*.ld')
# Export for build.rs
export LINKER_FILE
RUSTFLAGS = -C link-arg=-T$(LINKER_FILE) $(RUSTC_MISC_ARGS)
RUSTFLAGS_PEDANTIC = $(RUSTFLAGS) -D warnings -D missing_docs
@ -78,14 +79,12 @@ EXEC_MINIPUSH = ruby ../utils/minipush.rb
.PHONY: all doc qemu chainboot jtagboot openocd gdb gdb-opt0 clippy clean readelf objdump nm
all: clean $(OUTPUT)
$(KERNEL_ELF): $(SOURCES)
all:
RUSTFLAGS="$(RUSTFLAGS_PEDANTIC)" $(RUSTC_CMD)
$(OUTPUT): $(KERNEL_ELF)
cp $< .
$(OBJCOPY_CMD) $< $(OUTPUT)
@if [ ! -f kernel ] || [ $(KERNEL_ELF) -nt kernel ]; then \
cp $(KERNEL_ELF) .; \
$(OBJCOPY_CMD) kernel $(OUTPUT); \
fi
doc:
$(DOC_CMD) --document-private-items --open
@ -113,10 +112,10 @@ define gen_gdb
@$(DOCKER_GDB) gdb-multiarch -q kernel_for_jtag
endef
gdb: clean $(SOURCES)
gdb:
$(call gen_gdb,-C debuginfo=2)
gdb-opt0: clean $(SOURCES)
gdb-opt0:
$(call gen_gdb,-C debuginfo=2 -C opt-level=0)
clippy:
@ -125,11 +124,11 @@ clippy:
clean:
rm -rf target
readelf:
readelf: all
readelf -a $(KERNEL_ELF)
objdump:
objdump: all
rust-objdump --arch-name aarch64 -disassemble -no-show-raw-insn -print-imm-hex $(KERNEL_ELF)
nm:
nm: all
rust-nm --demangle --print-size $(KERNEL_ELF) | sort

@ -0,0 +1,7 @@
use std::env;
fn main() {
let linker_file = env::var("LINKER_FILE").unwrap();
println!("cargo:rerun-if-changed={}", linker_file);
}

@ -34,7 +34,8 @@ else ifeq ($(BSP),rpi4)
RUSTC_MISC_ARGS = -C target-cpu=cortex-a72
endif
SOURCES = $(shell find . -name '*.rs' -o -name '*.S' -o -name '*.ld')
# Export for build.rs
export LINKER_FILE
RUSTFLAGS = -C link-arg=-T$(LINKER_FILE) $(RUSTC_MISC_ARGS)
RUSTFLAGS_PEDANTIC = $(RUSTFLAGS) -D warnings -D missing_docs
@ -78,14 +79,12 @@ EXEC_MINIPUSH = ruby ../utils/minipush.rb
.PHONY: all doc qemu chainboot jtagboot openocd gdb gdb-opt0 clippy clean readelf objdump nm
all: clean $(OUTPUT)
$(KERNEL_ELF): $(SOURCES)
all:
RUSTFLAGS="$(RUSTFLAGS_PEDANTIC)" $(RUSTC_CMD)
$(OUTPUT): $(KERNEL_ELF)
cp $< .
$(OBJCOPY_CMD) $< $(OUTPUT)
@if [ ! -f kernel ] || [ $(KERNEL_ELF) -nt kernel ]; then \
cp $(KERNEL_ELF) .; \
$(OBJCOPY_CMD) kernel $(OUTPUT); \
fi
doc:
$(DOC_CMD) --document-private-items --open
@ -113,10 +112,10 @@ define gen_gdb
@$(DOCKER_GDB) gdb-multiarch -q kernel_for_jtag
endef
gdb: clean $(SOURCES)
gdb:
$(call gen_gdb,-C debuginfo=2)
gdb-opt0: clean $(SOURCES)
gdb-opt0:
$(call gen_gdb,-C debuginfo=2 -C opt-level=0)
clippy:
@ -125,11 +124,11 @@ clippy:
clean:
rm -rf target
readelf:
readelf: all
readelf -a $(KERNEL_ELF)
objdump:
objdump: all
rust-objdump --arch-name aarch64 -disassemble -no-show-raw-insn -print-imm-hex $(KERNEL_ELF)
nm:
nm: all
rust-nm --demangle --print-size $(KERNEL_ELF) | sort

@ -0,0 +1,7 @@
use std::env;
fn main() {
let linker_file = env::var("LINKER_FILE").unwrap();
println!("cargo:rerun-if-changed={}", linker_file);
}

@ -34,7 +34,8 @@ else ifeq ($(BSP),rpi4)
RUSTC_MISC_ARGS = -C target-cpu=cortex-a72
endif
SOURCES = $(shell find . -name '*.rs' -o -name '*.S' -o -name '*.ld')
# Export for build.rs
export LINKER_FILE
RUSTFLAGS = -C link-arg=-T$(LINKER_FILE) $(RUSTC_MISC_ARGS)
RUSTFLAGS_PEDANTIC = $(RUSTFLAGS) -D warnings -D missing_docs
@ -78,14 +79,12 @@ EXEC_MINIPUSH = ruby ../utils/minipush.rb
.PHONY: all doc qemu chainboot jtagboot openocd gdb gdb-opt0 clippy clean readelf objdump nm
all: clean $(OUTPUT)
$(KERNEL_ELF): $(SOURCES)
all:
RUSTFLAGS="$(RUSTFLAGS_PEDANTIC)" $(RUSTC_CMD)
$(OUTPUT): $(KERNEL_ELF)
cp $< .
$(OBJCOPY_CMD) $< $(OUTPUT)
@if [ ! -f kernel ] || [ $(KERNEL_ELF) -nt kernel ]; then \
cp $(KERNEL_ELF) .; \
$(OBJCOPY_CMD) kernel $(OUTPUT); \
fi
doc:
$(DOC_CMD) --document-private-items --open
@ -113,10 +112,10 @@ define gen_gdb
@$(DOCKER_GDB) gdb-multiarch -q kernel_for_jtag
endef
gdb: clean $(SOURCES)
gdb:
$(call gen_gdb,-C debuginfo=2)
gdb-opt0: clean $(SOURCES)
gdb-opt0:
$(call gen_gdb,-C debuginfo=2 -C opt-level=0)
clippy:
@ -125,11 +124,11 @@ clippy:
clean:
rm -rf target
readelf:
readelf: all
readelf -a $(KERNEL_ELF)
objdump:
objdump: all
rust-objdump --arch-name aarch64 -disassemble -no-show-raw-insn -print-imm-hex $(KERNEL_ELF)
nm:
nm: all
rust-nm --demangle --print-size $(KERNEL_ELF) | sort

@ -0,0 +1,7 @@
use std::env;
fn main() {
let linker_file = env::var("LINKER_FILE").unwrap();
println!("cargo:rerun-if-changed={}", linker_file);
}

@ -36,6 +36,9 @@ else ifeq ($(BSP),rpi4)
RUSTC_MISC_ARGS = -C target-cpu=cortex-a72
endif
# Export for build.rs
export LINKER_FILE
# Testing-specific arguments
ifdef TEST
ifeq ($(TEST),unit)
@ -47,8 +50,6 @@ endif
QEMU_MISSING_STRING = "This board is not yet supported for QEMU."
SOURCES = $(shell find . -name '*.rs' -o -name '*.S' -o -name '*.ld')
RUSTFLAGS = -C link-arg=-T$(LINKER_FILE) $(RUSTC_MISC_ARGS)
RUSTFLAGS_PEDANTIC = $(RUSTFLAGS) -D warnings -D missing_docs
@ -94,14 +95,12 @@ EXEC_MINIPUSH = ruby ../utils/minipush.rb
.PHONY: all doc qemu chainboot jtagboot openocd gdb gdb-opt0 clippy clean readelf objdump nm test
all: clean $(OUTPUT)
$(KERNEL_ELF): $(SOURCES)
all:
RUSTFLAGS="$(RUSTFLAGS_PEDANTIC)" $(RUSTC_CMD)
$(OUTPUT): $(KERNEL_ELF)
cp $< .
$(OBJCOPY_CMD) $< $(OUTPUT)
@if [ ! -f kernel ] || [ $(KERNEL_ELF) -nt kernel ]; then \
cp $(KERNEL_ELF) .; \
$(OBJCOPY_CMD) kernel $(OUTPUT); \
fi
doc:
$(DOC_CMD) --document-private-items --open
@ -122,7 +121,7 @@ define KERNEL_TEST_RUNNER
endef
export KERNEL_TEST_RUNNER
test: $(SOURCES)
test:
@mkdir -p target
@echo "$$KERNEL_TEST_RUNNER" > target/kernel_test_runner.sh
@chmod +x target/kernel_test_runner.sh
@ -144,10 +143,10 @@ define gen_gdb
@$(DOCKER_GDB) gdb-multiarch -q kernel_for_jtag
endef
gdb: clean $(SOURCES)
gdb:
$(call gen_gdb,-C debuginfo=2)
gdb-opt0: clean $(SOURCES)
gdb-opt0:
$(call gen_gdb,-C debuginfo=2 -C opt-level=0)
clippy:
@ -156,11 +155,11 @@ clippy:
clean:
rm -rf target
readelf:
readelf: all
readelf -a $(KERNEL_ELF)
objdump:
objdump: all
rust-objdump --arch-name aarch64 -disassemble -no-show-raw-insn -print-imm-hex $(KERNEL_ELF)
nm:
nm: all
rust-nm --demangle --print-size $(KERNEL_ELF) | sort

@ -354,7 +354,7 @@ define KERNEL_TEST_RUNNER
endef
export KERNEL_TEST_RUNNER
test: $(SOURCES)
test:
@mkdir -p target
@echo "$$KERNEL_TEST_RUNNER" > target/kernel_test_runner.sh
@chmod +x target/kernel_test_runner.sh
@ -827,7 +827,7 @@ diff -uNr 12_exceptions_part1_groundwork/Makefile 13_integrated_testing/Makefile
OPENOCD_ARG = -f /openocd/tcl/interface/ftdi/olimex-arm-usb-tiny-h.cfg -f /openocd/rpi3.cfg
JTAG_BOOT_IMAGE = ../X1_JTAG_boot/jtag_boot_rpi3.img
LINKER_FILE = src/bsp/raspberrypi/link.ld
@@ -28,12 +29,24 @@
@@ -28,6 +29,7 @@
QEMU_BINARY = qemu-system-aarch64
QEMU_MACHINE_TYPE =
QEMU_RELEASE_ARGS = -serial stdio -display none
@ -835,8 +835,9 @@ diff -uNr 12_exceptions_part1_groundwork/Makefile 13_integrated_testing/Makefile
OPENOCD_ARG = -f /openocd/tcl/interface/ftdi/olimex-arm-usb-tiny-h.cfg -f /openocd/rpi4.cfg
JTAG_BOOT_IMAGE = ../X1_JTAG_boot/jtag_boot_rpi4.img
LINKER_FILE = src/bsp/raspberrypi/link.ld
RUSTC_MISC_ARGS = -C target-cpu=cortex-a72
endif
@@ -37,6 +39,17 @@
# Export for build.rs
export LINKER_FILE
+# Testing-specific arguments
+ifdef TEST
@ -849,10 +850,10 @@ diff -uNr 12_exceptions_part1_groundwork/Makefile 13_integrated_testing/Makefile
+
+QEMU_MISSING_STRING = "This board is not yet supported for QEMU."
+
SOURCES = $(shell find . -name '*.rs' -o -name '*.S' -o -name '*.ld')
RUSTFLAGS = -C link-arg=-T$(LINKER_FILE) $(RUSTC_MISC_ARGS)
@@ -46,6 +59,7 @@
RUSTFLAGS_PEDANTIC = $(RUSTFLAGS) -D warnings -D missing_docs
@@ -47,6 +60,7 @@
RUSTC_CMD = cargo rustc $(COMPILER_ARGS)
DOC_CMD = cargo doc $(COMPILER_ARGS)
CLIPPY_CMD = cargo clippy $(COMPILER_ARGS)
@ -860,7 +861,7 @@ diff -uNr 12_exceptions_part1_groundwork/Makefile 13_integrated_testing/Makefile
OBJCOPY_CMD = rust-objcopy \
--strip-all \
-O binary
@@ -53,18 +67,20 @@
@@ -54,18 +68,20 @@
KERNEL_ELF = target/$(TARGET)/release/kernel
DOCKER_IMAGE = rustembedded/osdev-utils
@ -885,16 +886,16 @@ diff -uNr 12_exceptions_part1_groundwork/Makefile 13_integrated_testing/Makefile
DOCKER_CHAINBOOT = $(DOCKER_CMD_DEV) $(DOCKER_ARG_DIR_UTILS) $(DOCKER_IMAGE)
DOCKER_JTAGBOOT = $(DOCKER_CMD_DEV) $(DOCKER_ARG_DIR_UTILS) $(DOCKER_ARG_DIR_JTAG) $(DOCKER_IMAGE)
@@ -76,7 +92,7 @@
@@ -77,7 +93,7 @@
EXEC_QEMU = $(QEMU_BINARY) -M $(QEMU_MACHINE_TYPE)
EXEC_MINIPUSH = ruby ../utils/minipush.rb
-.PHONY: all doc qemu chainboot jtagboot openocd gdb gdb-opt0 clippy clean readelf objdump nm
+.PHONY: all doc qemu chainboot jtagboot openocd gdb gdb-opt0 clippy clean readelf objdump nm test
all: clean $(OUTPUT)
@@ -91,11 +107,26 @@
all:
RUSTFLAGS="$(RUSTFLAGS_PEDANTIC)" $(RUSTC_CMD)
@@ -90,11 +106,26 @@
$(DOC_CMD) --document-private-items --open
ifeq ($(QEMU_MACHINE_TYPE),)
@ -915,7 +916,7 @@ diff -uNr 12_exceptions_part1_groundwork/Makefile 13_integrated_testing/Makefile
+endef
+
+export KERNEL_TEST_RUNNER
+test: $(SOURCES)
+test:
+ @mkdir -p target
+ @echo "$$KERNEL_TEST_RUNNER" > target/kernel_test_runner.sh
+ @chmod +x target/kernel_test_runner.sh

@ -0,0 +1,7 @@
use std::env;
fn main() {
let linker_file = env::var("LINKER_FILE").unwrap();
println!("cargo:rerun-if-changed={}", linker_file);
}

@ -36,6 +36,9 @@ else ifeq ($(BSP),rpi4)
RUSTC_MISC_ARGS = -C target-cpu=cortex-a72
endif
# Export for build.rs
export LINKER_FILE
# Testing-specific arguments
ifdef TEST
ifeq ($(TEST),unit)
@ -47,8 +50,6 @@ endif
QEMU_MISSING_STRING = "This board is not yet supported for QEMU."
SOURCES = $(shell find . -name '*.rs' -o -name '*.S' -o -name '*.ld')
RUSTFLAGS = -C link-arg=-T$(LINKER_FILE) $(RUSTC_MISC_ARGS)
RUSTFLAGS_PEDANTIC = $(RUSTFLAGS) -D warnings -D missing_docs
@ -95,14 +96,12 @@ EXEC_MINIPUSH = ruby ../utils/minipush.rb
.PHONY: all doc qemu chainboot jtagboot openocd gdb gdb-opt0 clippy clean readelf objdump nm test
all: clean $(OUTPUT)
$(KERNEL_ELF): $(SOURCES)
all:
RUSTFLAGS="$(RUSTFLAGS_PEDANTIC)" $(RUSTC_CMD)
$(OUTPUT): $(KERNEL_ELF)
cp $< .
$(OBJCOPY_CMD) $< $(OUTPUT)
@if [ ! -f kernel ] || [ $(KERNEL_ELF) -nt kernel ]; then \
cp $(KERNEL_ELF) .; \
$(OBJCOPY_CMD) kernel $(OUTPUT); \
fi
doc:
$(DOC_CMD) --document-private-items --open
@ -125,7 +124,7 @@ endef
export KERNEL_TEST_RUNNER
test: FEATURES += --features qemu-quirks
test: $(SOURCES)
test:
@mkdir -p target
@echo "$$KERNEL_TEST_RUNNER" > target/kernel_test_runner.sh
@chmod +x target/kernel_test_runner.sh
@ -147,10 +146,10 @@ define gen_gdb
@$(DOCKER_GDB) gdb-multiarch -q kernel_for_jtag
endef
gdb: clean $(SOURCES)
gdb:
$(call gen_gdb,-C debuginfo=2)
gdb-opt0: clean $(SOURCES)
gdb-opt0:
$(call gen_gdb,-C debuginfo=2 -C opt-level=0)
clippy:
@ -159,11 +158,11 @@ clippy:
clean:
rm -rf target
readelf:
readelf: all
readelf -a $(KERNEL_ELF)
objdump:
objdump: all
rust-objdump --arch-name aarch64 -disassemble -no-show-raw-insn -print-imm-hex $(KERNEL_ELF)
nm:
nm: all
rust-nm --demangle --print-size $(KERNEL_ELF) | sort

@ -762,7 +762,7 @@ diff -uNr 13_integrated_testing/Cargo.toml 14_exceptions_part2_peripheral_IRQs/C
diff -uNr 13_integrated_testing/Makefile 14_exceptions_part2_peripheral_IRQs/Makefile
--- 13_integrated_testing/Makefile
+++ 14_exceptions_part2_peripheral_IRQs/Makefile
@@ -52,8 +52,9 @@
@@ -53,8 +53,9 @@
RUSTFLAGS = -C link-arg=-T$(LINKER_FILE) $(RUSTC_MISC_ARGS)
RUSTFLAGS_PEDANTIC = $(RUSTFLAGS) -D warnings -D missing_docs
@ -773,7 +773,7 @@ diff -uNr 13_integrated_testing/Makefile 14_exceptions_part2_peripheral_IRQs/Mak
--release
RUSTC_CMD = cargo rustc $(COMPILER_ARGS)
@@ -106,6 +107,7 @@
@@ -105,6 +106,7 @@
doc:
$(DOC_CMD) --document-private-items --open
@ -781,12 +781,12 @@ diff -uNr 13_integrated_testing/Makefile 14_exceptions_part2_peripheral_IRQs/Mak
ifeq ($(QEMU_MACHINE_TYPE),)
qemu test:
@echo $(QEMU_MISSING_STRING)
@@ -122,6 +124,7 @@
@@ -121,6 +123,7 @@
endef
export KERNEL_TEST_RUNNER
+test: FEATURES += --features qemu-quirks
test: $(SOURCES)
test:
@mkdir -p target
@echo "$$KERNEL_TEST_RUNNER" > target/kernel_test_runner.sh

@ -0,0 +1,7 @@
use std::env;
fn main() {
let linker_file = env::var("LINKER_FILE").unwrap();
println!("cargo:rerun-if-changed={}", linker_file);
}

@ -30,7 +30,8 @@ else ifeq ($(BSP),rpi4)
RUSTC_MISC_ARGS = -C target-cpu=cortex-a72
endif
SOURCES = $(shell find . -name '*.rs' -o -name '*.S' -o -name '*.ld')
# Export for build.rs
export LINKER_FILE
RUSTFLAGS = -C link-arg=-T$(LINKER_FILE) $(RUSTC_MISC_ARGS)
RUSTFLAGS_PEDANTIC = $(RUSTFLAGS) -D warnings -D missing_docs
@ -67,14 +68,12 @@ EXEC_MINIPUSH = ruby ../utils/minipush.rb
.PHONY: all doc qemu chainboot clippy clean readelf objdump nm
all: clean $(OUTPUT)
$(KERNEL_ELF): $(SOURCES)
all:
RUSTFLAGS="$(RUSTFLAGS_PEDANTIC)" $(RUSTC_CMD)
$(OUTPUT): $(KERNEL_ELF)
cp $< .
$(OBJCOPY_CMD) $< $(OUTPUT)
@if [ ! -f kernel ] || [ $(KERNEL_ELF) -nt kernel ]; then \
cp $(KERNEL_ELF) .; \
$(OBJCOPY_CMD) kernel $(OUTPUT); \
fi
doc:
$(DOC_CMD) --document-private-items --open
@ -96,11 +95,11 @@ clippy:
clean:
rm -rf target
readelf:
readelf: all
readelf -a $(KERNEL_ELF)
objdump:
objdump: all
rust-objdump --arch-name aarch64 -disassemble -no-show-raw-insn -print-imm-hex $(KERNEL_ELF)
nm:
nm: all
rust-nm --demangle --print-size $(KERNEL_ELF) | sort

@ -0,0 +1,7 @@
use std::env;
fn main() {
let linker_file = env::var("LINKER_FILE").unwrap();
println!("cargo:rerun-if-changed={}", linker_file);
}

@ -239,6 +239,7 @@ class DevTool
files = tracked_files.select do |f|
next unless File.exist?(f)
next if f.include?('build.rs')
f.include?('Makefile') ||
f.include?('Dockerfile') ||

Loading…
Cancel
Save