# pg_strcrypt - PostgreSQL Extension for STRCrypt
#
# 빌드 요구사항:
#   - PostgreSQL 개발 패키지 (postgresql-server-dev-XX 또는 postgresql-devel)
#   - pg_config이 PATH에 있어야 함
#   - libstrcrypt.so가 빌드되어 있어야 함
#
# 사용법:
#   make                    # 빌드
#   make install            # 설치 (sudo 필요)
#   make clean              # 정리

# STRCrypt 프로젝트 루트 (상대 경로)
# rpath 에 들어가므로 절대 경로로 둔다. 상대 경로는 DB 서버의 작업 디렉토리 기준으로 풀려 엉뚱한 libstrcrypt.so 를 로드할 수 있다.
STRCRYPT_ROOT := $(abspath $(dir $(lastword $(MAKEFILE_LIST)))../..)
STRCRYPT_LIB_DIR = $(STRCRYPT_ROOT)/target/release
STRCRYPT_INCLUDE_DIR = ../include

MODULE_big = pg_strcrypt
OBJS = pg_strcrypt.o

EXTENSION = pg_strcrypt
DATA = pg_strcrypt--1.1.sql pg_strcrypt--1.0--1.1.sql

PG_CPPFLAGS = -I$(STRCRYPT_INCLUDE_DIR)
SHLIB_LINK = -L$(STRCRYPT_LIB_DIR) -lstrcrypt -Wl,-rpath,'$$ORIGIN' -Wl,-rpath,$(STRCRYPT_LIB_DIR)

PG_CONFIG ?= pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
include $(PGXS)

# libstrcrypt.so 빌드 확인
.PHONY: check-strcrypt
check-strcrypt:
	@if [ ! -f "$(STRCRYPT_LIB_DIR)/libstrcrypt.so" ]; then \
		echo "Error: libstrcrypt.so not found."; \
		echo "Run 'cargo build --release' in $(STRCRYPT_ROOT) first."; \
		exit 1; \
	fi

pg_strcrypt.o: $(STRCRYPT_INCLUDE_DIR)/strcrypt.h | check-strcrypt
