# 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 ""