# Makefile for Network Monitoring Suite
# Cross-compilation for Windows on Linux using MinGW-w64

CC = x86_64-w64-mingw32-gcc
CFLAGS = -Wall -Wextra -O2 -static
LDFLAGS =

# Check if Detours is available
DETOURS_PATH ?= /usr/local/detours
DETOURS_LIB = $(DETOURS_PATH)/lib64/detours.lib

# Alternative: build without Detours (limited functionality)
NO_DETOURS ?= 0

# Targets
all: network_monitor.exe ssl_hook.dll packet_capture.dll bgvnc.exe

network_monitor.exe: network_monitor.c
	$(CC) $(CFLAGS) -o $@ $< -lws2_32 -liphlpapi $(LDFLAGS)

ssl_hook.dll: ssl_hook.c ssl_hook.h
ifeq ($(NO_DETOURS),1)
	@echo "Building ssl_hook.dll without Detours (limited functionality)"
	$(CC) $(CFLAGS) -shared -o $@ $< -DNO_DETOURS $(LDFLAGS)
else
	$(CC) $(CFLAGS) -shared -o $@ $< -L$(DETOURS_PATH)/lib64 -ldetours -lsspi $(LDFLAGS)
endif

packet_capture.dll: packet_capture.c
	$(CC) $(CFLAGS) -shared -o $@ $< -lws2_32 $(LDFLAGS)

bgvnc.exe: bgvnc.c
	$(CC) $(CFLAGS) -o $@ $< -lws2_32 -lgdi32 -luser32 $(LDFLAGS)

# Clean build artifacts
clean:
	rm -f *.exe *.dll

# Install dependencies (run with sudo if needed)
install-deps:
	apt-get update && apt-get install -y gcc-mingw-w64

# Check if Detours is installed
check-detours:
	@if [ ! -f "$(DETOURS_LIB)" ]; then \
		echo "Microsoft Detours not found at $(DETOURS_LIB)"; \
		echo "Please download and install Detours from:"; \
		echo "https://github.com/microsoft/Detours"; \
		echo "Then set DETOURS_PATH to the installation directory"; \
		exit 1; \
	fi

# Build with dependency check
build: check-detours all

.PHONY: all clean install-deps check-detours build