| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- @echo off
- setlocal enabledelayedexpansion
- rem Local build settings.
- set GENERATE_SCRIPT=Yes
- rem set GENERATE_SCRIPT=No
- set TEMPORARY_FOLDER=%TEMP%
- set COMPILER_NAME=g++
- rem Get this script's folder.
- set BUILDER_FOLDER=%~dp0
- echo BUILDER_FOLDER = %BUILDER_FOLDER%
- rem Show which versions of the compiler are installed.
- echo Installed %COMPILER_NAME% compilers:
- where %COMPILER_NAME%
- rem Select the first instance.
- for /f "delims=" %%i in ('where %COMPILER_NAME% 2^>nul') do (
- set CPP_COMPILER_PATH=%%i
- goto :found_compiler
- )
- :found_compiler
- rem Abort if none could be found.
- if not exist !CPP_COMPILER_PATH! (
- echo Could not find !COMPILER_NAME!.
- exit /b 1
- )
- echo CPP_COMPILER_PATH = !CPP_COMPILER_PATH!
- rem Get the compiler's folder from the compiler's path.
- set CPP_COMPILER_FOLDER=!~dpCPP_COMPILER_PATH!
- echo CPP_COMPILER_FOLDER = !CPP_COMPILER_FOLDER!
- rem Using buildProject.bat
- rem %1 must be the *.DsrProj path or a folder containing such projects. The path is relative to the caller location.
- rem %2... are variable assignments sent as input to the given project file.
- echo Running buildProject.bat %*
- rem Get the build system's folder, where the build system is located.
- set BUILDER_FOLDER=%~dp0%
- echo BUILDER_FOLDER = %BUILDER_FOLDER%
- set BUILDER_EXECUTABLE=%BUILDER_FOLDER%builder.exe
- echo BUILDER_EXECUTABLE = %BUILDER_EXECUTABLE%
- set DFPSR_LIBRARY=%BUILDER_FOLDER%..\..\DFPSR
- echo DFPSR_LIBRARY = %DFPSR_LIBRARY%
- set BUILDER_SOURCE=%BUILDER_FOLDER%\code\main.cpp %BUILDER_FOLDER%\code\Machine.cpp %BUILDER_FOLDER%\code\generator.cpp %BUILDER_FOLDER%\code\analyzer.cpp %BUILDER_FOLDER%\code\expression.cpp %DFPSR_LIBRARY%\collection\collections.cpp %DFPSR_LIBRARY%\api\fileAPI.cpp %DFPSR_LIBRARY%\api\bufferAPI.cpp %DFPSR_LIBRARY%\api\stringAPI.cpp %DFPSR_LIBRARY%\api\timeAPI.cpp %DFPSR_LIBRARY%\base\SafePointer.cpp %DFPSR_LIBRARY%\base\virtualStack.cpp %DFPSR_LIBRARY%\base\heap.cpp
- echo BUILDER_SOURCE = %BUILDER_SOURCE%
- rem Check if the build system is compiled
- if exist "%BUILDER_EXECUTABLE%" (
- echo Found the build system's binary.
- ) else (
- echo Building the Builder build system for first time use.
- pushd %CPP_COMPILER_FOLDER%
- %CPP_COMPILER_PATH% -o %BUILDER_EXECUTABLE% %BUILDER_SOURCE% -static -static-libgcc -static-libstdc++ -std=c++14 -lstdc++
- if errorlevel 0 (
- echo Completed building the Builder build system.
- ) else (
- echo Failed building the Builder build system, which is needed to build your project!
- exit /b 1
- )
- popd
- )
- if "!GENERATE_SCRIPT!"=="Yes" (
- rem Calling the build system with a script path will generate the script for all actions.
- set SCRIPT_PATH=%TEMPORARY_FOLDER%\dfpsr_compile.bat
- echo Generating !SCRIPT_PATH! from %1%
- if exist "!SCRIPT_PATH!" (
- del "!SCRIPT_PATH!"
- )
- !BUILDER_EXECUTABLE! "!SCRIPT_PATH!" %* "Compiler=!CPP_COMPILER_PATH!" "CompileFrom=!CPP_COMPILER_FOLDER!"
- if exist "!SCRIPT_PATH!" (
- echo Running !SCRIPT_PATH!
- call "!SCRIPT_PATH!"
- echo Done calling !SCRIPT_PATH!
- )
- ) else (
- rem Calling the build system with only the temporary folder will call the compiler directly from the build system.
- echo No script path provided. Builder will call !COMPILER_NAME! directly instead of generating a script.
- !BUILDER_EXECUTABLE! "%TEMPORARY_FOLDER%" %* Compiler=!CPP_COMPILER_PATH! CompileFrom=!CPP_COMPILER_FOLDER!
- )
- endlocal
|