| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- # Determine project root relative to this Makefile (arkos/Makefile)
- ROOT := $(realpath $(dir $(lastword $(MAKEFILE_LIST)))/..)
- TOOLS := $(ROOT)/tools
- ARKOS := $(ROOT)/arkos
- CLANG := $(ARKOS)/prebuilts/clang/bin/clang
- .PHONY: build run clean run-uefi
- build:
- @$(MAKE) --no-print-directory -C $(TOOLS)
- @$(TOOLS)/build $(ARKOS)
- run:
- @echo "Starting ArkOS Testing Window in QEMU (BIOS)..."
- @qemu-system-x86_64 \
- -m 2048 \
- -smp 2 \
- -drive file=finished/boot.img,format=raw,index=0,media=disk \
- -drive file=finished/sys.img,format=raw,index=1,media=disk \
- -drive file=finished/vend.img,format=raw,index=2,media=disk \
- -vga virtio \
- -enable-kvm 2>/dev/null || \
- qemu-system-x86_64 \
- -m 2048 \
- -smp 2 \
- -drive file=finished/boot.img,format=raw,index=0,media=disk \
- -drive file=finished/sys.img,format=raw,index=1,media=disk \
- -drive file=finished/vend.img,format=raw,index=2,media=disk \
- -vga virtio
- run-uefi:
- @echo "Starting ArkOS Testing Window in QEMU (UEFI)..."
- @qemu-system-x86_64 \
- -bios /usr/share/edk2/x64/OVMF.4m.fd \
- -m 2048 \
- -smp 2 \
- -drive file=finished/boot.img,format=raw,index=0,media=disk \
- -drive file=finished/sys.img,format=raw,index=1,media=disk \
- -drive file=finished/vend.img,format=raw,index=2,media=disk \
- -vga virtio \
- -enable-kvm 2>/dev/null || \
- qemu-system-x86_64 \
- -bios /usr/share/edk2/x64/OVMF.4m.fd \
- -m 2048 \
- -smp 2 \
- -drive file=finished/boot.img,format=raw,index=0,media=disk \
- -drive file=finished/sys.img,format=raw,index=1,media=disk \
- -drive file=finished/vend.img,format=raw,index=2,media=disk \
- -vga virtio
- clean:
- rm -rf out_staging finished boot/assets
- @$(MAKE) --no-print-directory -C $(TOOLS) clean
- # Extract securebuild key
- ARK_KEY := $(shell if [ -f vendor/verify/securebuild.ark ]; then grep "^ARK-OS-" vendor/verify/securebuild.ark | tr -d '[:space:]'; else echo "NO_KEY"; fi)
- # Compilation targets for ArkOS binaries
- out_staging/fb_helper.o: system/fb_helper.c
- gcc -c system/fb_helper.c -o out_staging/fb_helper.o
- out_staging/swift_splash: system/swift_splash.swift out_staging/fb_helper.o
- swiftc -O -static-executable system/swift_splash.swift out_staging/fb_helper.o -o out_staging/swift_splash
- out_staging/arkrt: arkrt/main.swift arkrt/KernelBridge.swift arkrt/CommandRouter.swift arkrt/IPC.swift
- swiftc -O -static-executable arkrt/main.swift arkrt/KernelBridge.swift arkrt/CommandRouter.swift arkrt/IPC.swift -o out_staging/arkrt
- out_staging/init: system/init.c vendor/verify/sha256.c
- gcc -static vendor/verify/sha256.c system/init.c -Ivendor/verify -DARK_KEY="\"$(ARK_KEY)\"" -o out_staging/init
- out_staging/bootloader.bin: boot/source/bootloader.asm
- nasm -f bin boot/source/bootloader.asm -o out_staging/bootloader.bin
- out_staging/stage2.bin: boot/source/stage2.asm
- nasm -f bin boot/source/stage2.asm -o out_staging/stage2.bin
- out_staging/BOOTX64.EFI: boot/source/bootloader.c
- gcc -I/usr/include/efi -I/usr/include/efi/x86_64 -I/usr/include/efi/protocol \
- -fno-stack-protector -fpic -fshort-wchar -mno-red-zone -DEFI_FUNCTION_WRAPPER \
- -c boot/source/bootloader.c -o out_staging/bootloader_uefi.o
- ld -nostdlib -znocombreloc -T /usr/lib/elf_x86_64_efi.lds -shared -Bsymbolic \
- /usr/lib/crt0-efi-x86_64.o out_staging/bootloader_uefi.o -o out_staging/bootloader_uefi.so \
- -lgnuefi -lefi -L/usr/lib
- objcopy -j .text -j .sdata -j .data -j .rodata -j .dynamic -j .dynsym -j .rel -j .rela -j .reloc -j .eh_frame \
- -O pei-x86-64 --subsystem 10 out_staging/bootloader_uefi.so out_staging/BOOTX64.EFI
|