# =============================================================================
# Makefile for confidential-containers build system
# 版本: 1.0
#
# 功能说明:
# - 提供Makefile接口来构建机密容器相关组件
# - 支持模块化构建:kata-agent、initrd镜像、payload镜像、operator部署清单
# - 支持两种initrd构建模式:update(快速更新)和full(完整构建)
#
# 主要构建目标:
# - kata-agent: 构建kata-agent二进制文件
# - initrd: 构建initrd镜像(支持update/full模式)
# - payload-images: 构建payload相关容器镜像
# - coco-operator: 定制化coco-operator部署清单
#
# 使用方法:
# - 完整构建: make all
# - 分步构建: make <target_name>
# - 清理环境: make clean
# - 显示帮助: make help
# =============================================================================

# 默认目标
.PHONY: all kata-agent initrd-update initrd-full payload-images coco-operator clean help

# 构建脚本路径
BUILD_SCRIPT := ./build.sh

# 默认目标 - 根据当前build.conf的设置进行构建
all:
	@echo "根据当前build.conf的设置进行构建..."
	$(BUILD_SCRIPT)

# 构建kata-agent
kata-agent:
	@echo "开始构建kata-agent..."
	$(BUILD_SCRIPT) --only-steps "01_setup_build_env.sh,02_build_kata_agent.sh"

# 构建initrd镜像 - update模式(快速更新模式)
initrd-update: kata-agent
	@echo "开始构建initrd镜像 (update模式)..."
	INITRD_BUILD_MODE=update $(BUILD_SCRIPT) --only-steps "03_build_guest_components.sh,04_build_guest_kernel.sh,06_build_initrd.sh"

# 构建initrd镜像 - full模式(完整构建模式)
initrd-full: kata-agent
	@echo "开始构建initrd镜像 (full模式)..."
	INITRD_BUILD_MODE=full $(BUILD_SCRIPT) --only-steps "03_build_guest_components.sh,04_build_guest_kernel.sh,05_build_pause_bundle.sh,06_build_initrd.sh"

# 构建payload-images
payload-images: initrd-update
	@echo "开始构建payload相关镜像..."
	$(BUILD_SCRIPT) --only-steps "07_package_kata_artifacts.sh,08_build_reqs_payload_image.sh,09_build_kata_deploy_image.sh"

# 构建coco-operator部署清单
coco-operator:
	@echo "开始构建coco-operator部署清单..."
	$(BUILD_SCRIPT) --only-steps "10_customize_coco_operator.sh"

# 清理构建结果
clean:
	@echo "清理构建结果..."
	@if [ -d "./output" ]; then \
		rm -rf ./output; \
		echo "已删除output目录"; \
	fi
	@if [ -d "./logs" ]; then \
		rm -rf ./logs; \
		echo "已删除logs目录"; \
	fi
	@if [ -d "./source" ]; then \
		rm -rf ./source; \
		echo "已删除source目录"; \
	fi

# 显示帮助信息
help:
	@echo "Confidential Containers 构建系统 Makefile"
	@echo ""
	@echo "可用目标:"
	@echo "  all           - 根据build.conf配置构建所有组件 (默认)"
	@echo "  kata-agent    - 构建kata-agent二进制文件"
	@echo "  initrd-update - 快速构建initrd镜像 (update模式)"
	@echo "  initrd-full   - 完整构建initrd镜像 (full模式)"
	@echo "  payload-images- 构建payload相关容器镜像"
	@echo "  coco-operator - 定制化coco-operator部署清单和CcRuntime配置"
	@echo "  clean         - 清理构建结果 (output、logs、source目录)"
	@echo "  help          - 显示此帮助信息"
	@echo ""