#!/bin/bash # build.sh — Build script for Battleship (Phase 1) # Works without CMake / make when Xcode license is not accepted. set -e CXX="${CXX:-/Library/Developer/CommandLineTools/usr/bin/c++}" SYSROOT="${SYSROOT:-/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk}" CXXFLAGS="-std=c++17 -isysroot $SYSROOT -Wall -Wextra -O2" OUTDIR="build" mkdir -p "$OUTDIR" echo "=== Compiling common ===" $CXX $CXXFLAGS -c -I common/include \ common/src/serialization.cpp -o "$OUTDIR/serialization.o" echo "=== Compiling server ===" $CXX $CXXFLAGS -c -I common/include -I server/include \ server/src/game_thread.cpp -o "$OUTDIR/game_thread.o" $CXX $CXXFLAGS -c -I common/include -I server/include \ server/src/server.cpp -o "$OUTDIR/server.o" $CXX $CXXFLAGS -c -I common/include -I server/include \ server/src/main.cpp -o "$OUTDIR/server_main.o" echo "=== Compiling client ===" $CXX $CXXFLAGS -c -I common/include -I client/include \ client/src/display.cpp -o "$OUTDIR/display.o" $CXX $CXXFLAGS -c -I common/include -I client/include \ client/src/client.cpp -o "$OUTDIR/client.o" $CXX $CXXFLAGS -c -I common/include -I client/include \ client/src/main.cpp -o "$OUTDIR/client_main.o" echo "=== Linking server ===" $CXX -isysroot "$SYSROOT" \ "$OUTDIR/serialization.o" \ "$OUTDIR/game_thread.o" \ "$OUTDIR/server.o" \ "$OUTDIR/server_main.o" \ -lpthread -o "$OUTDIR/battleship_server" echo "=== Linking client ===" $CXX -isysroot "$SYSROOT" \ "$OUTDIR/serialization.o" \ "$OUTDIR/display.o" \ "$OUTDIR/client.o" \ "$OUTDIR/client_main.o" \ -lpthread -o "$OUTDIR/battleship_client" echo "" echo "Build complete!" echo " Server: $OUTDIR/battleship_server" echo " Client: $OUTDIR/battleship_client" echo "" echo "Usage:" echo " $OUTDIR/battleship_server [port] # default port: 8080" echo " $OUTDIR/battleship_client [host] [port] # default: 127.0.0.1:8080"