#? stdtmpl(subsChar='?') | standard
#proc generateBuildBatchScript(c: ConfigData, winIndex, cpuIndex32, cpuIndex64: int): string =
#  result = "@echo off\nREM Generated by niminst\n"
SET CC=gcc
SET LINKER=gcc
SET COMP_FLAGS=?{c.ccompiler.flags}
SET LINK_FLAGS=?{c.linker.flags}
SET BIN_DIR=?{firstBinPath(c).toWin}

REM Detect gcc arch
IF DEFINED ARCH (
  ECHO Forcing %CC% arch
) ELSE (
  ECHO Detecting %CC% arch
  ECHO int main^(^) { return sizeof^(void *^); } | gcc -xc - -o archtest && archtest
  IF ERRORLEVEL 4 SET ARCH=32
  IF ERRORLEVEL 8 SET ARCH=64
  del archtest.*
)
ECHO Building with %ARCH% bit %CC%

if EXIST ..\koch.nim SET BIN_DIR=..\bin

if NOT EXIST %BIN_DIR%\nul mkdir %BIN_DIR%

REM call the compiler:

IF %ARCH% EQU 32 (

#  block win32:
#    var linkCmd = ""
#    if cpuIndex32 != -1:
#      for ff in items(c.cfiles[winIndex][cpuIndex32]):
#        let f = ff.toWin
  ECHO %CC% %COMP_FLAGS% -Ic_code -c ?{f} -o ?{changeFileExt(f, "o")}
  CALL %CC% %COMP_FLAGS% -Ic_code -c ?{f} -o ?{changeFileExt(f, "o")}
#        linkCmd.add(" " & changeFileExt(f, "o"))
  IF ERRORLEVEL 1 (GOTO:END)
#      end for
#    end if

  ECHO %LINKER% -o ?{"%BIN_DIR%"\toLowerAscii(c.name)}.exe ?linkCmd %LINK_FLAGS%
  CALL %LINKER% -o ?{"%BIN_DIR%"\toLowerAscii(c.name)}.exe ?linkCmd %LINK_FLAGS%

#  end block

) ELSE IF %ARCH% EQU 64 (

#  block win64:
#    var linkCmd = ""
#    if cpuIndex64 != -1:
#      for ff in items(c.cfiles[winIndex][cpuIndex64]):
#        let f = ff.toWin
  ECHO %CC% %COMP_FLAGS% -Ic_code -c ?{f} -o ?{changeFileExt(f, "o")}
  CALL %CC% %COMP_FLAGS% -Ic_code -c ?{f} -o ?{changeFileExt(f, "o")}
#        linkCmd.add(" " & changeFileExt(f, "o"))
  IF ERRORLEVEL 1 (GOTO:END)
#      end for
#    end if

  ECHO %LINKER% -o ?{"%BIN_DIR%"\toLowerAscii(c.name)}.exe ?linkCmd %LINK_FLAGS%
  CALL %LINKER% -o ?{"%BIN_DIR%"\toLowerAscii(c.name)}.exe ?linkCmd %LINK_FLAGS%

#  end block
)

:END
IF ERRORLEVEL 1 (
    ECHO FAILURE
    ECHO.
    ECHO CSource compilation failed. Please check that the gcc compiler is in
    ECHO the PATH environment variable, and that you are calling the batch script
    ECHO that matches the target architecture of the compiler.
    ECHO.
    ECHO Use build.bat to autodetect the compiler architecture.
) ELSE (
    ECHO SUCCESS
)
exit /b %ERRORLEVEL%
