# Makefile for pg_morbac PostgreSQL Extension
# Multi-OrBAC: Organization-Based Access Control

PROJECT_FILENAME = pg_morbac

# Read version from control file using centralized script
PROJECT_VERSION = $(shell ./tools/get_version.sh $(PROJECT_FILENAME).control)

# For development, work on source files in src/
SRC_DIR = src
OUTPUT_DEV_FILENAME = $(PROJECT_FILENAME).sql
OUTPUT_RELEASE_FILENAME = $(PROJECT_FILENAME)--$(PROJECT_VERSION).sql

# PostgreSQL Extension build
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
include $(PGXS)

# Custom targets

.PHONY: build
build:
	@./tools/build.sh $(SRC_DIR) $(OUTPUT_DEV_FILENAME)
	@if [ ! -f $(OUTPUT_DEV_FILENAME) ]; then \
		echo "Error: Build failed" >&2; \
		exit 1; \
	fi

# Rename development file to versioned release file
.PHONY: release
release: build
	mv $(OUTPUT_DEV_FILENAME) $(OUTPUT_RELEASE_FILENAME)
	@echo "Release $(PROJECT_VERSION) built at $(OUTPUT_RELEASE_FILENAME)."

# Build and install extension in PostgreSQL
.PHONY: install
install: build
	@cp $(OUTPUT_DEV_FILENAME) $(OUTPUT_RELEASE_FILENAME)
	@./tools/install.sh $(PROJECT_FILENAME) $(PROJECT_VERSION)

.PHONY: test
test: build
	@dropdb morbac_test 2>/dev/null || true
	@createdb morbac_test
	@./tools/test.sh morbac_test $(OUTPUT_DEV_FILENAME)
	@dropdb morbac_test

# Uninstall extension from PostgreSQL
.PHONY: uninstall
uninstall:
	@echo "Uninstalling $(PROJECT_FILENAME)..."
	@./tools/uninstall.sh $(PROJECT_FILENAME)

# Clean up generated files
.PHONY: clean
clean:
	@rm -f $(OUTPUT_DEV_FILENAME) $(OUTPUT_RELEASE_FILENAME)

# Show help
.PHONY: help
help:
	@echo "pg_morbac Makefile targets:"
	@echo "  make build        - Build $(OUTPUT_DEV_FILENAME) from src/"
	@echo "  make release      - Build versioned $(PROJECT_FILENAME)--X.Y.Z.sql from src/"
	@echo "  make test         - Build and run test suite"
	@echo "  make install      - Build and install $(PROJECT_FILENAME) to PostgreSQL"
	@echo "  make uninstall    - Uninstall $(PROJECT_FILENAME) from PostgreSQL"
	@echo "  make clean        - Clean up generated files"
	@echo "  make help         - Show this help"
	@echo ""
