# HDGL-OS Build System — solo build (no Copilot/Qwen dependency for Phase 1)
NASM    := /snap/lxd/38800/bin/nasm
CC      := gcc
LD      := ld

BUILD   := /sessions/wizardly-great-newton/mnt/HDGL\ P2P\ Internet/HDGL-OS
ANALOG  := /sessions/wizardly-great-newton/mnt/HDGL\ P2P\ Internet/Analog-Prime-main/Analog-Prime-main/codebase

CFLAGS  := -O2 -std=c99 -ffreestanding -fno-stack-protector -fno-pic \
           -mno-red-zone -mno-mmx -mno-sse -mno-sse2 \
           -Wall -Wno-unused-parameter \
           -I$(ANALOG) \
           -I$(BUILD)

OUT     := /tmp/hdgl-os-build
ISO_DIR := /tmp/hdgl-iso
KERNEL  := $(OUT)/hdgl-kernel.elf
ISO     := /tmp/hdgl-os.iso

SRCS_C := boot/long_mode_init.c \
          kernel/temple2_bridge.c \
          kernel/holyc_syscall.c \
          kernel/scheduler.c \
          hdgl/phi_engine.c \
          hdgl/kuramoto.c \
          hdgl/hdgl_glyph.c \
          bot/mcp_confined.c \
          conscious/zchg_phy.c \
          conscious/phi_router.c

OBJS_C  := $(patsubst %.c,$(OUT)/%.o,$(SRCS_C))
OBJ_ASM := $(OUT)/boot/multiboot_entry.o

ALL_OBJS := $(OBJ_ASM) $(OBJS_C)

.PHONY: all dirs kernel iso clean

all: dirs kernel iso

dirs:
	mkdir -p $(OUT)/boot $(OUT)/kernel $(OUT)/hdgl $(OUT)/bot $(OUT)/conscious

$(OBJ_ASM): boot/multiboot_entry.asm
	$(NASM) -f elf64 -o $@ $<

$(OUT)/%.o: %.c
	$(CC) $(CFLAGS) -c -o $@ $<

kernel: dirs $(ALL_OBJS)
	$(LD) -nostdlib -z max-page-size=0x1000 \
	      -T boot/linker.ld -o $(KERNEL) $(ALL_OBJS)
	@echo "[LINK] $(KERNEL)"
	@size $(KERNEL)

iso: kernel
	mkdir -p $(ISO_DIR)/boot/grub
	cp $(KERNEL) $(ISO_DIR)/boot/hdgl-kernel.elf
	cp iso/grub/grub.cfg $(ISO_DIR)/boot/grub/grub.cfg
	grub-mkrescue -o $(ISO) $(ISO_DIR) 2>&1 | grep -v "^$$" || true
	@echo "[ISO]  $(ISO)"

clean:
	rm -rf $(OUT) $(ISO_DIR) $(ISO)
