# This file includes code generated or modified by xAI's Grok 3 
# over multiple rounds of prompting for reviews and improvements that were
# suggested by Grok 3, GPT-5 and Gemini 2.5 Flash.

ERL_ROOT_DIR := $(shell erl -noshell -eval 'io:format("~s", [code:root_dir()])' -s init stop)
ERL_INCLUDE_DIR := $(ERL_ROOT_DIR)/usr/include

CC ?= gcc
CFLAGS := -I$(ERL_INCLUDE_DIR) -O2 -Wall -fPIC
LDFLAGS :=

SRC = disk_space.c
PRIV_DIR = ../priv

UNAME_S := $(shell uname)
LIB_EXT = .so

ifeq ($(UNAME_S),Darwin)
	CC = clang
	CFLAGS += -arch arm64
    LDFLAGS += -dynamiclib -undefined dynamic_lookup -arch arm64
else ifeq ($(OS),Windows_NT)
    LIB_EXT = .dll
    LDFLAGS += -shared
else
    LDFLAGS += -shared
endif

TARGET = $(PRIV_DIR)/disk_space$(LIB_EXT)

all: $(TARGET)

$(TARGET): $(SRC) | $(PRIV_DIR)
	$(CC) $(CFLAGS) $(SRC) $(LDFLAGS) -o $(TARGET)

$(PRIV_DIR):
	mkdir -p $(PRIV_DIR)

clean:
	rm -f $(TARGET)

.PHONY: all clean

