CC ?= clang
LD ?= ld.lld

ROOT := ../..
OUT := $(ROOT)/SYSTEM/system/deshab64/desktop.elf

CFLAGS := -target x86_64-unknown-none -std=c11 -ffreestanding -fno-builtin -fno-stack-protector -fpie -mno-red-zone -mno-sse -mno-sse2 -mno-mmx -msoft-float -m64 -Wall -Wextra -I../UTSM/include -O2
LDFLAGS := -nostdlib -static -pie -z max-page-size=0x1000 -T linker.ld

C_SOURCES := main.c input.c wm.c compositor.c apps_builtin.c appreg.c \
             launcher.c lxc.c shell.c pages.c f32io.c ascii_font.c zhfont.c \
             wallpaper.c taskbar.c textures.c prank.c files.c startmenu.c
OBJECTS := $(C_SOURCES:.c=.o)

.PHONY: all clean

all: $(OUT)

$(OUT): $(OBJECTS) linker.ld
	@mkdir -p $(dir $@)
	$(LD) $(LDFLAGS) -o $@ $(OBJECTS)

%.o: %.c ../tools/fat32_io.h
	$(CC) $(CFLAGS) -c $< -o $@

clean:
	powershell -NoProfile -Command "Get-ChildItem -Path . -Recurse -Filter *.o | Remove-Item -Force; if (Test-Path '$(OUT)') { Remove-Item '$(OUT)' -Force }"
