CC ?= cc
CFLAGS ?= -std=c11 -Wall -Wextra -Werror -I../../include

all: test_command_queue test_game_domain test_bot_player test_game_lifecycle test_state_presenter test_http_api test_sync_service test_human_game_integration

test_command_queue: test_command_queue.c ../../src/command_queue.c
	$(CC) $(CFLAGS) $^ -o $@

run: all
	./test_command_queue
	./test_game_domain
	./test_bot_player
	./test_game_lifecycle
	./test_state_presenter
	./test_http_api
	./test_sync_service
	./test_human_game_integration

test_game_domain: test_game_domain.c ../../src/fleet_generator.c ../../src/game_engine.c
	$(CC) $(CFLAGS) $^ -o $@

test_bot_player: test_bot_player.c ../../src/bot_player.c ../../src/fleet_generator.c ../../src/game_engine.c
	$(CC) $(CFLAGS) $^ -o $@

test_game_lifecycle: test_game_lifecycle.c ../../src/session_manager.c ../../src/game_lifecycle.c ../../src/fleet_generator.c ../../src/game_engine.c
	$(CC) $(CFLAGS) $^ -o $@

test_state_presenter: test_state_presenter.c ../../src/state_presenter.c
	$(CC) $(CFLAGS) $^ -o $@

test_http_api: test_http_api.c ../../src/http_api.c ../../src/application.c ../../src/command_queue.c ../../src/session_manager.c ../../src/game_lifecycle.c ../../src/fleet_generator.c ../../src/game_engine.c ../../src/state_presenter.c
	$(CC) $(CFLAGS) $^ -o $@

test_sync_service: test_sync_service.c ../../src/sync_service.c ../../src/application.c ../../src/command_queue.c ../../src/session_manager.c ../../src/game_lifecycle.c ../../src/fleet_generator.c ../../src/game_engine.c ../../src/state_presenter.c
	$(CC) $(CFLAGS) $^ -o $@

test_human_game_integration: test_human_game_integration.c ../../src/http_api.c ../../src/application.c ../../src/command_queue.c ../../src/session_manager.c ../../src/game_lifecycle.c ../../src/fleet_generator.c ../../src/game_engine.c ../../src/state_presenter.c
	$(CC) $(CFLAGS) $^ -o $@

clean:
	rm -f test_command_queue test_game_domain test_bot_player test_game_lifecycle test_state_presenter test_http_api test_sync_service test_human_game_integration
