| REM /* |
| REM * Licensed to the Apache Software Foundation (ASF) under one |
| REM * or more contributor license agreements. See the NOTICE file |
| REM * distributed with this work for additional information |
| REM * regarding copyright ownership. The ASF licenses this file |
| REM * to you under the Apache License, Version 2.0 (the |
| REM * "License"); you may not use this file except in compliance |
| REM * with the License. You may obtain a copy of the License at |
| REM * |
| REM * http://www.apache.org/licenses/LICENSE-2.0 |
| REM * |
| REM * Unless required by applicable law or agreed to in writing, |
| REM * software distributed under the License is distributed on an |
| REM * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| REM * KIND, either express or implied. See the License for the |
| REM * specific language governing permissions and limitations |
| REM * under the License. |
| REM */ |
| @echo off |
| if ""=="%1" goto CONFIG |
| goto HANDLEDIR |
| |
| REM ----------------------------------------------------- |
| :CONFIG |
| REM ----------------------------------------------------- |
| |
| rem * CONFIGURATION BEGIN |
| rem * configuration settings, adjust as necessary to meet your system setup |
| set SVNWORKDIR= |
| set MY_THRIFT_FILES= |
| set BIN=C:\MSys10\local\bin |
| set MINGW_BIN=C:\MinGW\bin |
| set DCC= |
| set SUBDIR=gen-delphi |
| rem * CONFIGURATION END |
| |
| |
| REM ----------------------------------------------------- |
| :START |
| REM ----------------------------------------------------- |
| |
| rem * configured? |
| if "%SVNWORKDIR%"=="" goto CONFIG_ERROR |
| |
| rem * try to find dcc32.exe |
| echo Looking for dcc32.exe ... |
| if not exist "%DCC%" set DCC=%ProgramFiles%\Embarcadero\RAD Studio\8.0\bin\dcc32.exe |
| if not exist "%DCC%" set DCC=%ProgramFiles(x86)%\Embarcadero\RAD Studio\8.0\bin\dcc32.exe |
| if not exist "%DCC%" goto CONFIG_ERROR |
| echo Found %DCC% |
| echo. |
| |
| rem * some helpers |
| set PATH=%BIN%;%MINGW_BIN%;%PATH% |
| set TARGET=%SVNWORKDIR%\..\thrift-testing |
| set SOURCE=%SVNWORKDIR% |
| set TESTAPP=TestProject |
| set UNITSEARCH=%SOURCE%\lib\pas\src;%SOURCE%\lib\delphi\src |
| set OUTDCU="%TARGET%\dcu" |
| set LOGFILE=%TARGET%\%SUBDIR%\codegen.log |
| |
| rem * create and/or empty target dirs |
| if not exist "%TARGET%" md "%TARGET%" |
| if not exist "%TARGET%\%SUBDIR%" md "%TARGET%\%SUBDIR%" |
| if not exist "%OUTDCU%" md "%OUTDCU%" |
| if exist "%TARGET%\*.thrift" del "%TARGET%\*.thrift" /Q |
| if exist "%TARGET%\%SUBDIR%\*.*" del "%TARGET%\%SUBDIR%\*.*" /Q |
| if exist "%OUTDCU%\*.*" del "%OUTDCU%\*.*" /Q |
| |
| rem init logfile |
| echo Errors > "%LOGFILE%" |
| echo ---------------- >> "%LOGFILE%" |
| |
| rem * recurse through thrift WC and "my thrift files" folder |
| rem * copies all .thrift files into thrift-testing |
| call %0 %SOURCE% |
| if not "%MY_THRIFT_FILES%"=="" call %0 %MY_THRIFT_FILES% |
| |
| rem * compile all thrift files, generate PAS and C++ code |
| echo. |
| echo Generating code, please wait ... |
| cd "%TARGET%" |
| for %%a in (*.thrift) do "%BIN%\thrift.exe" -v --gen delphi:register_types,constprefix,events,xmldoc "%%a" 2>> "%LOGFILE%" |
| REM * for %%a in (*.thrift) do "%BIN%\thrift.exe" -v --gen cpp "%%a" >> NUL: |
| cmd /c start notepad "%LOGFILE%" |
| cd .. |
| |
| rem * check for special Delphi testcases being processed |
| if not exist "%TARGET%\%SUBDIR%\ReservedKeywords.pas" goto TESTCASE_MISSING |
| |
| |
| rem * generate a minimal DPR file that uses all generated pascal units |
| cd "%TARGET%\%SUBDIR%\" |
| if exist inherited.* ren inherited.* _inherited.* |
| echo program %TESTAPP%; > %TESTAPP%.dpr |
| echo {$APPTYPE CONSOLE} >> %TESTAPP%.dpr |
| echo. >> %TESTAPP%.dpr |
| echo uses >> %TESTAPP%.dpr |
| for %%a in (*.pas) do echo %%~na, >> %TESTAPP%.dpr |
| echo Windows, Classes, SysUtils; >> %TESTAPP%.dpr |
| echo. >> %TESTAPP%.dpr |
| echo begin >> %TESTAPP%.dpr |
| echo Writeln('Successfully compiled!'); >> %TESTAPP%.dpr |
| echo Writeln('List of units:'); >> %TESTAPP%.dpr |
| for %%a in (*.pas) do echo Write('%%~na':30,'':10); >> %TESTAPP%.dpr |
| echo Writeln; >> %TESTAPP%.dpr |
| echo end. >> %TESTAPP%.dpr |
| echo. >> %TESTAPP%.dpr |
| cd ..\.. |
| |
| rem * try to compile the DPR |
| rem * this should not throw any errors, warnings or hints |
| "%DCC%" -B "%TARGET%\%SUBDIR%\%TESTAPP%" -U"%UNITSEARCH%" -I"%UNITSEARCH%" -N"%OUTDCU%" -E"%TARGET%\%SUBDIR%" |
| dir "%TARGET%\%SUBDIR%\%TESTAPP%.exe" |
| if not exist "%TARGET%\%SUBDIR%\%TESTAPP%.exe" goto CODEGEN_FAILED |
| echo. |
| echo ----------------------------------------------------------------- |
| echo The compiled program is now executed. If it hangs or crashes, we |
| echo have a serious problem with the generated code. Expected output |
| echo is "Successfully compiled:" followed by a list of generated units. |
| echo ----------------------------------------------------------------- |
| "%TARGET%\%SUBDIR%\%TESTAPP%.exe" |
| echo ----------------------------------------------------------------- |
| echo. |
| pause |
| GOTO EOF |
| |
| REM ----------------------------------------------------- |
| :DXE_NOT_FOUND |
| REM ----------------------------------------------------- |
| echo Delphi Compiler (dcc32.exe) not found. |
| echo Please check the "DCC" setting in this batch. |
| echo. |
| cmd /c start notepad README.MD |
| cmd /c start notepad %0 |
| pause |
| GOTO EOF |
| |
| |
| REM ----------------------------------------------------- |
| :CONFIG_ERROR |
| REM ----------------------------------------------------- |
| echo Missing, incomplete or wrong configuration settings! |
| cmd /c start notepad README.MD |
| cmd /c start notepad %0 |
| pause |
| GOTO EOF |
| |
| |
| REM ----------------------------------------------------- |
| :TESTCASE_MISSING |
| REM ----------------------------------------------------- |
| echo Missing an expected Delphi testcase! |
| pause |
| GOTO EOF |
| |
| |
| REM ----------------------------------------------------- |
| :CODEGEN_FAILED |
| REM ----------------------------------------------------- |
| echo Code generation FAILED! |
| pause |
| GOTO EOF |
| |
| |
| REM ----------------------------------------------------- |
| :HANDLEDIR |
| REM ----------------------------------------------------- |
| REM echo %1 |
| for /D %%a in (%1\*) do call %0 %%a |
| if exist "%1\*.thrift" copy /b "%1\*.thrift" "%TARGET%\*.*" |
| GOTO EOF |
| |
| |
| REM ----------------------------------------------------- |
| :EOF |
| REM ----------------------------------------------------- |