1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- #? 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%
|