You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

104 lines
2.3 KiB

#!/bin/bash
# ETCP Monitor Build Script for MSYS2 UCRT64 / MinGW
# Usage: ./build.sh
# Log is automatically saved to build.log
set -e
# Capture all output to log file
LOG_FILE="build.log"
# Function to log and print
log() {
echo "$1"
echo "$1" >> "$LOG_FILE"
}
# Clear or create log file
> "$LOG_FILE"
log "================================"
log "ETCP Monitor Build Script"
log "================================"
log ""
# Compiler settings
CC=${CC:-gcc}
CFLAGS="-Wall -O2 -DWIN32_LEAN_AND_MEAN"
LDFLAGS="-mwindows"
LIBS="-lws2_32 -lcomctl32 -luser32 -lgdi32"
TARGET="etcpmon.exe"
SRCS="etcpmon_main.c etcpmon_gui.c etcpmon_client.c etcpmon_graph.c"
OBJ_FILES=""
log "Compiler: $CC"
log "Target: $TARGET"
log "Sources: $SRCS"
log ""
# Clean previous build
log "[1/5] Cleaning previous build..."
rm -f *.o $TARGET
# Compile each source file
log ""
log "[2/5] Compiling source files..."
for src in $SRCS; do
obj="${src%.c}.o"
OBJ_FILES="$OBJ_FILES $obj"
log " CC $src -> $obj"
$CC $CFLAGS -c -o "$obj" "$src" 2>&1 | tee -a "$LOG_FILE" || {
log "[ERROR] Failed to compile $src"
exit 1
}
done
# Link
log ""
log "[3/5] Linking..."
log " LD $OBJ_FILES -> $TARGET"
$CC $LDFLAGS -o "$TARGET" $OBJ_FILES $LIBS 2>&1 | tee -a "$LOG_FILE" || {
log "[ERROR] Failed to link $TARGET"
exit 1
}
# Strip debug symbols (optional, for smaller size)
log ""
log "[4/5] Stripping debug symbols..."
strip "$TARGET" 2>/dev/null | tee -a "$LOG_FILE" || true
# Verify build
log ""
log "[5/5] Verifying build..."
if [ -f "$TARGET" ]; then
FILE_SIZE=$(du -h "$TARGET" | cut -f1)
log " OK: $TARGET created ($FILE_SIZE)"
# Check dependencies
log ""
log "Checking dependencies..."
if command -v objdump >/dev/null 2>&1; then
objdump -p "$TARGET" | grep "DLL Name:" | head -10 | tee -a "$LOG_FILE" || true
fi
log ""
log "================================"
log "Build SUCCESS!"
log "================================"
log ""
log "Executable: $TARGET"
log "Size: $FILE_SIZE"
log "Location: $(pwd)/$TARGET"
log ""
log "To run:"
log " cd $(pwd)"
log " ./$TARGET"
log ""
else
log ""
log "================================"
log "Build FAILED!"
log "================================"
exit 1
fi