# Makefile for GP Sampler C Examples
#
# Usage:
#   make              # Build the C example
#   make run          # Build and run
#   make clean        # Remove build artifacts

CC = gcc
CFLAGS = -O3 -Wall -Wextra $(shell gsl-config --cflags)
LDFLAGS = $(shell gsl-config --libs) -lm

# Directories
SRC_DIR = ..
INCLUDES = -I$(SRC_DIR)

# Targets
TARGET = c_example
SOURCES = c_integration_example.c $(SRC_DIR)/gp_sampler_core.c
OBJECTS = $(SOURCES:.c=.o)
HEADERS = $(SRC_DIR)/gp_sampler_core.h

# Build rules
all: $(TARGET)

$(TARGET): $(OBJECTS)
	$(CC) -o $@ $^ $(LDFLAGS)
	@echo "Build successful! Run with: ./$(TARGET)"

%.o: %.c $(HEADERS)
	$(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@

run: $(TARGET)
	./$(TARGET)

clean:
	rm -f $(OBJECTS) $(TARGET)
	rm -f $(SRC_DIR)/gp_sampler_core.o
	@echo "Cleaned build artifacts"

# Static library (optional)
libgp4c.a: $(SRC_DIR)/gp_sampler_core.o
	ar rcs $@ $^
	@echo "Created static library: libgp4c.a"

.PHONY: all run clean
