#!/bin/bash # ============================================================================= # V2G EXI Decoder - 전체 플랫폼 빌드 스크립트 (Linux/macOS) # 설명: C, VC2022 (gcc), .NET Core 모든 버전을 한 번에 빌드 # ============================================================================= echo echo "==========================================" echo "V2G EXI Decoder 전체 빌드 시작" echo "==========================================" echo BUILD_ERROR=0 SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" cd "$SCRIPT_DIR" # .NET Core 빌드 echo "[1/3] .NET Core 빌드 중..." dotnet build DotNet/V2GDecoderNet.csproj -c Release if [ $? -ne 0 ]; then echo "ERROR: .NET Core 빌드 실패" BUILD_ERROR=1 else echo "SUCCESS: .NET Core 빌드 완료" fi echo # VC -> GCC 빌드 echo "[2/3] GCC로 VC 소스 빌드 중..." if [ -d "VC/src" ]; then # GCC 컴파일 명령어 gcc -I"VC/src" \ -I"VC/src/codec" \ -I"VC/src/iso1" \ -I"VC/src/iso2" \ -I"VC/src/din" \ -I"VC/src/xmldsig" \ -I"VC/src/appHandshake" \ -I"VC/src/transport" \ -I"VC/src/compat" \ -O2 -Wall \ VC/V2GDecoder.c \ VC/src/codec/*.c \ VC/src/iso1/*.c \ VC/src/iso2/*.c \ VC/src/din/*.c \ VC/src/xmldsig/*.c \ VC/src/appHandshake/*.c \ VC/src/transport/*.c \ -o V2GDecoder_gcc if [ $? -ne 0 ]; then echo "ERROR: GCC 빌드 실패" BUILD_ERROR=1 else echo "SUCCESS: GCC 빌드 완료" fi else echo "WARNING: VC 소스 폴더를 찾을 수 없습니다" fi echo # C++ 빌드 확인 echo "[3/3] C++ 빌드 확인 중..." if [ -f "C++/build.sh" ]; then cd C++ ./build.sh if [ $? -ne 0 ]; then echo "ERROR: C++ 빌드 실패" BUILD_ERROR=1 else echo "SUCCESS: C++ 빌드 완료" fi cd "$SCRIPT_DIR" elif [ -f "Makefile" ]; then make clean && make if [ $? -ne 0 ]; then echo "ERROR: C 빌드 실패" BUILD_ERROR=1 else echo "SUCCESS: C 빌드 완료" fi else echo "INFO: C++/Makefile이 없어 C++ 빌드를 건너뜁니다" fi echo # 결과 요약 echo "==========================================" echo "빌드 결과 요약" echo "==========================================" if [ $BUILD_ERROR -eq 0 ]; then echo "✅ 모든 빌드가 성공적으로 완료되었습니다" echo echo "생성된 실행 파일들:" [ -f "DotNet/bin/Release/net8.0/V2GDecoderNet.dll" ] && echo " 📦 .NET: DotNet/bin/Release/net8.0/V2GDecoderNet.dll" [ -f "V2GDecoder_gcc" ] && echo " 📦 GCC: V2GDecoder_gcc" [ -f "C++/bin/V2GDecoder" ] && echo " 📦 C++: C++/bin/V2GDecoder" echo echo "사용법:" echo " dotnet run --project DotNet/V2GDecoderNet.csproj Sample/test5.exi" echo " ./V2GDecoder_gcc Sample/test5.exi" exit 0 else echo "❌ 일부 빌드가 실패했습니다" exit 1 fi