#!/usr/bin/make -f

export DEB_BUILD_MAINT_OPTIONS = hardening=+all
export DEB_CARGO_PACKAGE = nginx-x402
export DEB_CARGO_BUILD_PROFILE = release

%:
	dh $@

override_dh_auto_build:
	# Set required environment variables for vendored feature
	# Note: NGX_CONFIGURE_ARGS may be set by parent process (e.g., GitHub Actions)
	# Set libclang path if available (Linux) and not already set
	if [ -z "$$LIBCLANG_PATH" ] && [ -d /usr/lib/llvm-*/lib ]; then \
		export LIBCLANG_PATH=$$(ls -d /usr/lib/llvm-*/lib | head -1); \
	fi; \
	# Set NGX_CONFIGURE_ARGS if not already set
	if [ -z "$$NGX_CONFIGURE_ARGS" ]; then \
		export NGX_CONFIGURE_ARGS="--without-http_rewrite_module"; \
	fi; \
	# Determine Rust target based on DEB_HOST_ARCH or DEB_BUILD_ARCH
	if [ -n "$$DEB_HOST_ARCH" ]; then \
		case "$$DEB_HOST_ARCH" in \
			amd64) RUST_TARGET=x86_64-unknown-linux-gnu ;; \
			arm64) RUST_TARGET=aarch64-unknown-linux-gnu ;; \
			armhf) RUST_TARGET=armv7-unknown-linux-gnueabihf ;; \
			*) RUST_TARGET=$$(dpkg-architecture -qDEB_HOST_GNU_TYPE) ;; \
		esac; \
		if [ "$$RUST_TARGET" != "x86_64-unknown-linux-gnu" ]; then \
			rustup target add $$RUST_TARGET || true; \
			cargo build --release --target $$RUST_TARGET; \
		else \
			cargo build --release; \
		fi; \
	else \
		cargo build --release; \
	fi

override_dh_auto_install:
	# Install files manually
	mkdir -p debian/nginx-x402/usr/lib/nginx/modules
	mkdir -p debian/nginx-x402/usr/share/doc/nginx-x402
	mkdir -p debian/nginx-x402/etc/nginx/modules-available
	# Copy the built module (find the correct architecture-specific path)
	# Try architecture-specific target directory first, then fallback to release
	if [ -n "$$DEB_HOST_ARCH" ]; then \
		case "$$DEB_HOST_ARCH" in \
			amd64) RUST_TARGET=x86_64-unknown-linux-gnu ;; \
			arm64) RUST_TARGET=aarch64-unknown-linux-gnu ;; \
			armhf) RUST_TARGET=armv7-unknown-linux-gnueabihf ;; \
			*) RUST_TARGET=$$(dpkg-architecture -qDEB_HOST_GNU_TYPE) ;; \
		esac; \
		if [ -f "target/$$RUST_TARGET/release/libnginx_x402.so" ]; then \
			cp target/$$RUST_TARGET/release/libnginx_x402.so debian/nginx-x402/usr/lib/nginx/modules/libnginx_x402.so; \
		else \
			find target -name "libnginx_x402.so" -type f | head -1 | xargs -I {} cp {} debian/nginx-x402/usr/lib/nginx/modules/libnginx_x402.so || \
			cp target/release/libnginx_x402.so debian/nginx-x402/usr/lib/nginx/modules/ || true; \
		fi \
	else \
		find target -name "libnginx_x402.so" -type f | head -1 | xargs -I {} cp {} debian/nginx-x402/usr/lib/nginx/modules/libnginx_x402.so || \
		find target -name "libnginx_x402.dylib" -type f | head -1 | xargs -I {} cp {} debian/nginx-x402/usr/lib/nginx/modules/libnginx_x402.so || \
	cp target/release/libnginx_x402.so debian/nginx-x402/usr/lib/nginx/modules/ || \
		cp target/*/release/libnginx_x402.so debian/nginx-x402/usr/lib/nginx/modules/ || true; \
	fi
	# Copy documentation
	cp README.md debian/nginx-x402/usr/share/doc/nginx-x402/
	cp LICENSE debian/nginx-x402/usr/share/doc/nginx-x402/
	cp nginx/example.conf debian/nginx-x402/usr/share/doc/nginx-x402/example.conf
	# Create module configuration snippet
	echo "load_module /usr/lib/nginx/modules/libnginx_x402.so;" > debian/nginx-x402/etc/nginx/modules-available/x402.conf

override_dh_auto_test:
	# Run tests (vendored feature is enabled by default)
	cargo test || true
