diff options
Diffstat (limited to 'tools/niminst/buildbat.nimf')
-rw-r--r-- | tools/niminst/buildbat.nimf | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/tools/niminst/buildbat.nimf b/tools/niminst/buildbat.nimf new file mode 100644 index 000000000..6767461e3 --- /dev/null +++ b/tools/niminst/buildbat.nimf @@ -0,0 +1,79 @@ +#? 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% |