2020-02-13 08:42:22 +00:00
|
|
|
.PHONY: setup image qemu
|
|
|
|
.EXPORT_ALL_VARIABLES:
|
|
|
|
|
|
|
|
setup:
|
2022-04-05 10:03:31 +00:00
|
|
|
curl https://sh.rustup.rs -sSf | sh -s -- -y
|
2020-02-13 08:42:22 +00:00
|
|
|
rustup install nightly
|
|
|
|
rustup default nightly
|
2020-07-31 08:31:59 +00:00
|
|
|
cargo install bootimage
|
2020-02-13 08:42:22 +00:00
|
|
|
|
2022-05-05 21:05:39 +00:00
|
|
|
output = video, # video, serial
|
|
|
|
keyboard = qwerty # qwerty, azerty, dvorak
|
|
|
|
nic = rtl8139 # rtl8139, pcnet
|
2020-02-13 08:42:22 +00:00
|
|
|
|
2021-08-04 20:07:26 +00:00
|
|
|
export MOROS_KEYBOARD = $(keyboard)
|
|
|
|
|
2021-09-24 16:19:37 +00:00
|
|
|
# Build userspace binaries
|
2021-10-14 07:49:30 +00:00
|
|
|
user-nasm:
|
|
|
|
basename -s .s dsk/src/bin/*.s | xargs -I {} \
|
2022-06-09 20:59:33 +00:00
|
|
|
nasm dsk/src/bin/{}.s -o dsk/bin/{}.tmp
|
|
|
|
basename -s .s dsk/src/bin/*.s | xargs -I {} \
|
|
|
|
sh -c "printf '\x7FBIN' | cat - dsk/bin/{}.tmp > dsk/bin/{}"
|
|
|
|
rm dsk/bin/*.tmp
|
2021-10-14 07:49:30 +00:00
|
|
|
user-rust:
|
|
|
|
basename -s .rs src/bin/*.rs | xargs -I {} \
|
|
|
|
touch dsk/bin/{}
|
|
|
|
basename -s .rs src/bin/*.rs | xargs -I {} \
|
|
|
|
cargo rustc --release --bin {} -- \
|
|
|
|
-C relocation-model=static
|
|
|
|
basename -s .rs src/bin/*.rs | xargs -I {} \
|
|
|
|
cp target/x86_64-moros/release/{} dsk/bin/{}
|
2022-06-14 20:43:33 +00:00
|
|
|
strip dsk/bin/*
|
2021-09-24 16:19:37 +00:00
|
|
|
|
2021-08-04 20:07:26 +00:00
|
|
|
bin = target/x86_64-moros/release/bootimage-moros.bin
|
|
|
|
img = disk.img
|
2020-02-13 08:42:22 +00:00
|
|
|
|
|
|
|
$(img):
|
|
|
|
qemu-img create $(img) 32M
|
|
|
|
|
|
|
|
# Rebuild MOROS if the features list changed
|
|
|
|
image: $(img)
|
|
|
|
touch src/lib.rs
|
2021-08-04 20:07:26 +00:00
|
|
|
env | grep MOROS
|
2022-05-11 07:47:11 +00:00
|
|
|
cargo bootimage --no-default-features --features $(output) --release --bin moros
|
2020-02-13 08:42:22 +00:00
|
|
|
dd conv=notrunc if=$(bin) of=$(img)
|
|
|
|
|
2021-08-21 08:57:39 +00:00
|
|
|
opts = -m 32 -cpu max -nic model=$(nic) -hda $(img) -soundhw pcspk
|
2020-02-13 08:42:22 +00:00
|
|
|
ifeq ($(output),serial)
|
|
|
|
opts += -display none -serial stdio
|
|
|
|
endif
|
|
|
|
|
|
|
|
qemu:
|
|
|
|
qemu-system-x86_64 $(opts)
|
2020-11-14 20:52:07 +00:00
|
|
|
|
|
|
|
test:
|
2022-05-05 21:05:39 +00:00
|
|
|
cargo test --release --lib --no-default-features --features serial -- \
|
2021-08-07 09:29:45 +00:00
|
|
|
-m 32 -display none -serial stdio -device isa-debug-exit,iobase=0xf4,iosize=0x04
|
2021-02-04 09:06:06 +00:00
|
|
|
|
|
|
|
clean:
|
|
|
|
cargo clean
|