Nothing to see here, move along
at main 264 lines 8.2 kB view raw
1target_dir := "target/x86_64-lancer-none/debug" 2kernel_bin := target_dir / "lancer-kernel" 3kernel_release := "target/x86_64-lancer-none/release/lancer-kernel" 4iso_dir := "target/iso" 5iso_file := "target/lancer.iso" 6limine_dir := "target/limine" 7ovmf_code := "/usr/share/OVMF/OVMF_CODE_4M.fd" 8ovmf_vars_src := "/usr/share/OVMF/OVMF_VARS_4M.fd" 9ovmf_vars := "target/ovmf/OVMF_VARS_4M.fd" 10 11boot_modules := "lancer-init:init lancer-serial-driver:serial lancer-fbconsole-driver:fbconsole lancer-ps2kbd-driver:ps2kbd lancer-virtio-net-driver:virtio-net lancer-nvme-driver:nvme lancer-lancerfs:lancerfs lancer-vfs:vfs lancer-ramfs:ramfs lancer-netstack:netstack lancer-remote-shell:remote-shell lancer-hello:hello lancer-ping:ping lancer-udp:udp lancer-resolve:resolve lancer-help:help lancer-echo:echo lancer-uptime:uptime lancer-ifconfig:ifconfig lancer-arp:arp lancer-netstat:netstat lancer-fstest:fstest lancer-ls:ls lancer-cat:cat lancer-mkdir:mkdir lancer-rm:rm lancer-write:write lancer-stat:stat lancer-tree:tree lancer-cp:cp lancer-mv:mv lancer-touch:touch lancer-df:df lancer-cd:cd lancer-shell:shell lancer-dmesg:dmesg lancer-thread-test:thread-test" 12nvme_disk := "target/nvme-disk.img" 13 14build: 15 cargo build --workspace 16 17build-kernel: 18 cargo build -p lancer-kernel 19 20build-init: 21 cargo build -p lancer-init 22 23build-serial: 24 cargo build -p lancer-serial-driver 25 26build-fbconsole: 27 cargo build -p lancer-fbconsole-driver 28 29build-ps2kbd: 30 cargo build -p lancer-ps2kbd-driver 31 32build-virtio-net: 33 cargo build -p lancer-virtio-net-driver 34 35build-nvme: 36 cargo build -p lancer-nvme-driver 37 38build-netstack: 39 cargo build -p lancer-netstack 40 41build-remote-shell: 42 cargo build -p lancer-remote-shell 43 44build-hello: 45 cargo build -p lancer-hello 46 47build-ping: 48 cargo build -p lancer-ping 49 50build-udp: 51 cargo build -p lancer-udp 52 53build-resolve: 54 cargo build -p lancer-resolve 55 56build-help: 57 cargo build -p lancer-help 58 59build-echo: 60 cargo build -p lancer-echo 61 62build-uptime: 63 cargo build -p lancer-uptime 64 65build-ifconfig: 66 cargo build -p lancer-ifconfig 67 68build-arp: 69 cargo build -p lancer-arp 70 71build-netstat: 72 cargo build -p lancer-netstat 73 74build-lancerfs: 75 cargo build -p lancer-lancerfs 76 77build-vfs: 78 cargo build -p lancer-vfs 79 80build-ramfs: 81 cargo build -p lancer-ramfs 82 83build-fstest: 84 cargo build -p lancer-fstest 85 86build-thread-test: 87 cargo build -p lancer-thread-test 88 89release: 90 cargo build --workspace --release 91 92clippy: 93 cargo clippy --workspace -- -W clippy::all 94 95fmt: 96 cargo fmt --check 97 98fmt-fix: 99 cargo fmt 100 101clean: 102 cargo clean 103 rm -rf {{iso_dir}} {{iso_file}} 104 105limine-fetch: 106 #!/usr/bin/env bash 107 if [ ! -d "{{limine_dir}}" ]; then 108 git clone --depth 1 --branch v9.x-binary https://github.com/limine-bootloader/limine.git {{limine_dir}} 109 make -C {{limine_dir}} 110 fi 111 112create-nvme-disk: 113 #!/usr/bin/env bash 114 if [ ! -f "{{nvme_disk}}" ]; then 115 ROOT="$(pwd)" 116 cd /tmp 117 cargo run --manifest-path "$ROOT/Cargo.toml" -p lancer-lancerfs --no-default-features --features host --target x86_64-unknown-linux-gnu --bin mkfs_host -- "$ROOT/{{nvme_disk}}" 64M 118 fi 119 120format-nvme-disk: 121 #!/usr/bin/env bash 122 ROOT="$(pwd)" 123 rm -f "{{nvme_disk}}" 124 cd /tmp 125 cargo run --manifest-path "$ROOT/Cargo.toml" -p lancer-lancerfs --no-default-features --features host --target x86_64-unknown-linux-gnu --bin mkfs_host -- "$ROOT/{{nvme_disk}}" 64M 126 127ovmf-setup: 128 #!/usr/bin/env bash 129 mkdir -p "$(dirname "{{ovmf_vars}}")" 130 cp "{{ovmf_vars_src}}" "{{ovmf_vars}}" 131 132iso: build limine-fetch 133 #!/usr/bin/env bash 134 set -euo pipefail 135 rm -rf {{iso_dir}} 136 mkdir -p {{iso_dir}}/boot/limine {{iso_dir}}/EFI/BOOT 137 cp {{kernel_bin}} {{iso_dir}}/boot/kernel 138 for entry in {{boot_modules}}; do 139 bin="${entry%%:*}" 140 name="${entry##*:}" 141 src="{{target_dir}}/${bin}" 142 if [ -f "$src" ]; then 143 cp "$src" "{{iso_dir}}/boot/${name}" 144 fi 145 done 146 cp limine.conf {{iso_dir}}/boot/limine/limine.conf 147 cp {{limine_dir}}/limine-bios.sys {{iso_dir}}/boot/limine/ 148 cp {{limine_dir}}/limine-bios-cd.bin {{iso_dir}}/boot/limine/ 149 cp {{limine_dir}}/limine-uefi-cd.bin {{iso_dir}}/boot/limine/ 150 cp {{limine_dir}}/BOOTX64.EFI {{iso_dir}}/EFI/BOOT/ 151 cp {{limine_dir}}/BOOTIA32.EFI {{iso_dir}}/EFI/BOOT/ 152 xorriso -as mkisofs \ 153 -b boot/limine/limine-bios-cd.bin \ 154 -no-emul-boot -boot-load-size 4 -boot-info-table \ 155 --efi-boot boot/limine/limine-uefi-cd.bin \ 156 -efi-boot-part --efi-boot-image --protective-msdos-label \ 157 {{iso_dir}} -o {{iso_file}} 158 {{limine_dir}}/limine bios-install {{iso_file}} 159 160run: iso ovmf-setup create-nvme-disk 161 qemu-system-x86_64 \ 162 -M q35,accel=kvm:tcg,kernel-irqchip=split \ 163 -cpu host \ 164 -m 512M \ 165 -drive if=pflash,format=raw,readonly=on,file={{ovmf_code}} \ 166 -drive if=pflash,format=raw,file={{ovmf_vars}} \ 167 -cdrom {{iso_file}} \ 168 -device intel-iommu,intremap=on,caching-mode=on \ 169 -device virtio-net-pci,netdev=net0,iommu_platform=on,disable-legacy=on \ 170 -netdev user,id=net0,hostfwd=tcp::2222-:7,hostfwd=tcp::2323-:22,hostfwd=udp::5001-:5001 \ 171 -drive file={{nvme_disk}},if=none,id=nvm,format=raw \ 172 -device nvme,serial=lancernvme,drive=nvm \ 173 -serial stdio \ 174 -display gtk \ 175 -no-reboot \ 176 -no-shutdown 177 178run-tap: iso ovmf-setup create-nvme-disk 179 qemu-system-x86_64 \ 180 -M q35,accel=kvm:tcg,kernel-irqchip=split \ 181 -cpu host \ 182 -m 512M \ 183 -drive if=pflash,format=raw,readonly=on,file={{ovmf_code}} \ 184 -drive if=pflash,format=raw,file={{ovmf_vars}} \ 185 -cdrom {{iso_file}} \ 186 -device intel-iommu,intremap=on,caching-mode=on \ 187 -device virtio-net-pci,netdev=net0,iommu_platform=on,disable-legacy=on \ 188 -netdev tap,id=net0,ifname=tap-lancer,script=no,downscript=no \ 189 -drive file={{nvme_disk}},if=none,id=nvm,format=raw \ 190 -device nvme,serial=lancernvme,drive=nvm \ 191 -serial stdio \ 192 -display gtk \ 193 -no-reboot \ 194 -no-shutdown 195 196run-bios: iso 197 qemu-system-x86_64 \ 198 -M q35,accel=kvm:tcg \ 199 -cpu host \ 200 -m 512M \ 201 -cdrom {{iso_file}} \ 202 -serial stdio \ 203 -display none \ 204 -no-reboot \ 205 -no-shutdown 206 207debug: iso ovmf-setup create-nvme-disk 208 qemu-system-x86_64 \ 209 -M q35,accel=kvm:tcg,kernel-irqchip=split \ 210 -cpu host \ 211 -m 512M \ 212 -drive if=pflash,format=raw,readonly=on,file={{ovmf_code}} \ 213 -drive if=pflash,format=raw,file={{ovmf_vars}} \ 214 -cdrom {{iso_file}} \ 215 -device intel-iommu,intremap=on,caching-mode=on \ 216 -device virtio-net-pci,netdev=net0,iommu_platform=on,disable-legacy=on \ 217 -netdev user,id=net0 \ 218 -drive file={{nvme_disk}},if=none,id=nvm,format=raw \ 219 -device nvme,serial=lancernvme,drive=nvm \ 220 -serial stdio \ 221 -display none \ 222 -no-reboot \ 223 -no-shutdown \ 224 -s -S 225 226test-kernel: limine-fetch 227 ./scripts/run-kernel-tests.sh 228 229test-host: 230 #!/usr/bin/env bash 231 set -euo pipefail 232 ROOT="$(pwd)" 233 cd /tmp 234 cargo test --manifest-path "$ROOT/Cargo.toml" -p lancer-core --target x86_64-unknown-linux-gnu 235 cargo test --manifest-path "$ROOT/Cargo.toml" -p lancer-lancerfs --target x86_64-unknown-linux-gnu --no-default-features 236 237test-host-lancerfs: 238 #!/usr/bin/env bash 239 set -euo pipefail 240 ROOT="$(pwd)" 241 cd /tmp 242 cargo test --manifest-path "$ROOT/Cargo.toml" -p lancer-lancerfs --target x86_64-unknown-linux-gnu --no-default-features 243 244test: test-host test-kernel 245 246prove-kani: 247 #!/usr/bin/env bash 248 set -euo pipefail 249 ROOT="$(pwd)" 250 cd /tmp 251 cargo kani --manifest-path "$ROOT/lib/lancer-core/Cargo.toml" 252 253prove-verus: 254 #!/usr/bin/env bash 255 set -euo pipefail 256 ROOT="$(pwd)" 257 export PATH="/tmp/verus-x86-linux:$PATH" 258 cd /tmp 259 cargo verus verify --manifest-path "$ROOT/lib/lancer-proofs/Cargo.toml" 260 261prove: prove-kani prove-verus 262 263test-integration: limine-fetch 264 ./scripts/run-integration-tests.sh