# Example 6: Batch mode - multiple files obfuscated together
# =============================================================================

CC = clang
TARGET = x86_64-w64-mingw32
OBFUSCATOR = ../../obfuscator/enc_pic_str
CFLAGS = --target=$(TARGET) -I../.. -O2

BUILD_DIR = build
SOURCES = main.c greet.c info.c
OBFUSCATED = $(addprefix $(BUILD_DIR)/,$(SOURCES))
OUTPUT = $(BUILD_DIR)/example6.exe

.PHONY: all clean

all: clean $(OUTPUT)

$(BUILD_DIR):
	@mkdir -p $(BUILD_DIR)

$(OBFUSCATOR):
	@echo "[*] Building obfuscator..."
	@cd ../../obfuscator && go build -o enc_pic_str

$(OBFUSCATED): $(SOURCES) $(OBFUSCATOR) | $(BUILD_DIR)
	@echo "[*] Copying header file to build directory..."
	@cp ../../pic_str.h $(BUILD_DIR)/
	@echo "[*] Obfuscating multiple C files in batch mode..."
	$(OBFUSCATOR) -mode batch -i $(shell echo $(SOURCES) | tr ' ' ',') -o $(BUILD_DIR)

$(OUTPUT): $(OBFUSCATED)
	@echo "[*] Compiling..."
	cd $(BUILD_DIR) && $(CC) $(SOURCES) $(CFLAGS) -o $(notdir $(OUTPUT))
	@echo "[+] Success: $(OUTPUT)"

clean:
	@rm -rf $(BUILD_DIR)
