isle/SETUP.bat
2025-05-10 15:01:36 -03:00

164 lines
4.1 KiB
Batchfile

:: SETUP FOR LAZY PEOPLE
@echo off
color a
cls
REM UAC stuff
:init
setlocal DisableDelayedExpansion
set cmdInvoke=1
set winSysFolder=System32
set "batchPath=%~dpnx0"
rem this works also from cmd shell, other than %~0
for %%k in (%0) do set batchName=%%~nk
set "vbsGetPrivileges=%temp%\OEgetPriv_%batchName%.vbs"
setlocal EnableDelayedExpansion
:checkPrivileges
whoami /groups /nh | find "S-1-16-12288" > nul
if '%errorlevel%' == '0' ( goto checkPrivileges2 ) else ( goto getPrivileges )
:checkPrivileges2
net session 1>nul 2>NUL
if '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges )
:getPrivileges
if '%1'=='ELEV' (echo ELEV & shift /1 & goto gotPrivileges)
ECHO.
REM Very cool echo!!! Yay
ECHO ===========================================
ECHO - -
ECHO = Invoking UAC for privilege escalation =
ECHO - -
ECHO ===========================================
ECHO Set UAC = CreateObject^("Shell.Application"^) > "%vbsGetPrivileges%"
ECHO args = "ELEV " >> "%vbsGetPrivileges%"
ECHO For Each strArg in WScript.Arguments >> "%vbsGetPrivileges%"
ECHO args = args ^& strArg ^& " " >> "%vbsGetPrivileges%"
ECHO Next >> "%vbsGetPrivileges%"
if '%cmdInvoke%'=='1' goto InvokeCmd
ECHO UAC.ShellExecute "!batchPath!", args, "", "runas", 1 >> "%vbsGetPrivileges%"
goto ExecElevation
:InvokeCmd
ECHO args = "/c """ + "!batchPath!" + """ " + args >> "%vbsGetPrivileges%"
ECHO UAC.ShellExecute "%SystemRoot%\%winSysFolder%\cmd.exe", args, "", "runas", 1 >> "%vbsGetPrivileges%"
:ExecElevation
"%SystemRoot%\%winSysFolder%\WScript.exe" "%vbsGetPrivileges%" %*
exit /B
:gotPrivileges
setlocal & cd /d %~dp0
if '%1'=='ELEV' (del "%vbsGetPrivileges%" 1>nul 2>nul & shift /1)
REM Sets
set PATH=%cd%
REM for /F %%A in ('echo prompt $E^| cmd') do set "ESC=%%A"
set accuracyOfLego=99%
set funnyCoolThingBuildTypeIDunno=Release
set sdkName=sdk
setx CMakeDir /k "HKEY_LOCAL_MACHINE\SOFTWARE\Kitware\CMake\InstallDir" :: Makes a variable that returns the cmake install directory
cls
goto FirstStep
REM Steps
:FirstStep
echo Welcome to the setup for compiling LEGO Island!
echo ========== Details ===========
echo -
echo = Accuracy: %accuracyOfLego%
echo = Implementation: 100%
echo -
echo ==============================
pause
cls
goto BuildTypeShi
:BuildTypeShi
REM Build Type Configuration
echo Select your build type:
echo ======================
echo -
ECHO 1: Debug
ECHO 2: Release
ECHO 3: MinSizeRel
ECHO 4: RelWithDebInfo
echo -
echo ======================
set /p dumbAss=
if "%dumbAss%"=="1" goto SetDebug
if "%dumbAss%"=="2" goto SetRelease
if "%dumbAss%"=="3" goto SetMinSizeRel
if "%dumbAss%"=="4" goto SetRelWithDebInfo
REM if "%dumbAss%"=="5" goto CMakeDirTest
:SetDebug
set funnyCoolThingBuildTypeIDunno=Debug
goto doneSettingShit
:CMakeDirTest
reg query "HKCU\Environment" /v "CMakeDir" :: (works)
echo on
echo FOR TESTING PURPOSES!
echo "%CMakeDir%"
pause
goto BuildTypeShi
:SetRelease
set funnyCoolThingBuildTypeIDunno=Release
goto doneSettingShit
:SetMinSizeRel
set funnyCoolThingBuildTypeIDunno=MinSizeRel
goto doneSettingShit
:SetRelWithDebInfo
set funnyCoolThingBuildTypeIDunno=RelWithDebInfo
goto doneSettingShit
:doneSettingShit
echo Done!
pause
goto dumb
REM Compiler choice
:dumb
cls
echo Enter your compiler:
echo ====================
echo -
ECHO 1: NMake Makefiles
ECHO 2: Ninja (does not support making debug symbols)
echo -
echo ====================
set /p bullShit=
IF "%bullShit%"=="1" GOTO NMake
IF "%bullShit%"=="2" GOTO Ninja
:NMake
cls
ECHO -- NMake Makefiles --
REM reg query "HKCU\Environment" /v "CMakeDir" :: (works)
cmake %cd% -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=%funnyCoolThingBuildTypeIDunno%
goto End
:Ninja
echo [WARNING] Only release binaries are supported!
ECHO -- Ninja --
REM reg query "HKCU\Environment" /v "CMakeDir" :: (works)
cmake %cd% -G "Ninja" -DCMAKE_BUILD_TYPE=Release
goto End
:End
echo Done!
echo To compile, change directory to build in THIS (%cd%) folder!
echo And run either "nmake" or "ninja" (If you desire to compile in Ninja, make sure you installed it!)
pause