mirror of
https://github.com/FirebirdSQL/firebird.git
synced 2025-01-23 22:03:03 +01:00
572348cae0
It allows to avoid binding to the particular MSVC compiler version. Undo most of the changes in cloop.vcxproj to restore ability to use MSVC older than v2017.
334 lines
9.1 KiB
Batchfile
334 lines
9.1 KiB
Batchfile
::
|
|
:: This bat file doesn't use cd, all the paths are full paths.
|
|
:: with this convention this bat file is position independent
|
|
:: and it will be easier to move the place of somefiles.
|
|
::
|
|
|
|
@echo off
|
|
set ERRLEV=0
|
|
|
|
:CHECK_ENV
|
|
@call setenvvar.bat
|
|
@if errorlevel 1 (goto :END)
|
|
|
|
@call set_build_target.bat %*
|
|
|
|
|
|
::===========
|
|
:MAIN
|
|
@echo.
|
|
@echo Creating directories
|
|
:: Create the directory hierarchy.
|
|
for %%v in ( alice auth burp dsql gpre isql jrd misc msgs qli examples yvalve utilities) do (
|
|
@mkdir %FB_GEN_DIR%\%%v 2>nul
|
|
)
|
|
|
|
@mkdir %FB_GEN_DIR%\utilities\gstat 2>nul
|
|
@mkdir %FB_GEN_DIR%\auth\SecurityDatabase 2>nul
|
|
@mkdir %FB_GEN_DIR%\gpre\std 2>nul
|
|
|
|
call :interfaces
|
|
if "%ERRLEV%"=="1" goto :END
|
|
|
|
call :btyacc
|
|
if "%ERRLEV%"=="1" goto :END
|
|
|
|
call :LibTom
|
|
if "%ERRLEV%"=="1" goto :END
|
|
|
|
call :decNumber
|
|
if "%ERRLEV%"=="1" goto :END
|
|
|
|
if "%FB_TARGET_PLATFORM%"=="x64" call :ttmath
|
|
if "%ERRLEV%"=="1" goto :END
|
|
|
|
call :re2
|
|
if "%ERRLEV%"=="1" goto :END
|
|
|
|
call :zlib
|
|
if "%ERRLEV%"=="1" goto :END
|
|
|
|
@echo Generating DSQL parser...
|
|
@call parse.bat %*
|
|
if "%ERRLEV%"=="1" goto :END
|
|
|
|
::=======
|
|
call :gpre_boot
|
|
if "%ERRLEV%"=="1" goto :END
|
|
|
|
::=======
|
|
@echo Preprocessing the source files needed to build gbak, gpre and isql...
|
|
@call preprocess.bat BOOT
|
|
|
|
::=======
|
|
call :engine
|
|
if "%ERRLEV%"=="1" goto :END
|
|
|
|
call :gbak
|
|
if "%ERRLEV%"=="1" goto :END
|
|
|
|
call :gpre
|
|
if "%ERRLEV%"=="1" goto :END
|
|
|
|
call :isql
|
|
if "%ERRLEV%"=="1" goto :END
|
|
|
|
@copy %FB_ROOT_PATH%\builds\install\misc\firebird.conf %FB_BIN_DIR%\firebird.conf
|
|
|
|
:: Copy ICU and zlib both to Debug and Release configurations
|
|
|
|
@call set_build_target.bat %* RELEASE
|
|
@mkdir %FB_BIN_DIR%
|
|
@copy %FB_ROOT_PATH%\extern\icu\icudt???.dat %FB_BIN_DIR% >nul 2>&1
|
|
@copy %FB_ICU_SOURCE_BIN%\*.dll %FB_BIN_DIR% >nul 2>&1
|
|
@copy %FB_ROOT_PATH%\extern\zlib\%FB_TARGET_PLATFORM%\*.dll %FB_BIN_DIR% >nul 2>&1
|
|
|
|
@call set_build_target.bat %* DEBUG
|
|
@mkdir %FB_BIN_DIR%
|
|
@copy %FB_ROOT_PATH%\extern\icu\icudt???.dat %FB_BIN_DIR% >nul 2>&1
|
|
@copy %FB_ICU_SOURCE_BIN%\*.dll %FB_BIN_DIR% >nul 2>&1
|
|
@copy %FB_ROOT_PATH%\extern\zlib\%FB_TARGET_PLATFORM%\*.dll %FB_BIN_DIR% >nul 2>&1
|
|
|
|
@call set_build_target.bat %*
|
|
|
|
|
|
::=======
|
|
@call :databases
|
|
|
|
::=======
|
|
@echo Preprocessing the entire source tree...
|
|
@call preprocess.bat
|
|
|
|
::=======
|
|
@call :msgs
|
|
if "%ERRLEV%"=="1" goto :END
|
|
|
|
@call :codes
|
|
if "%ERRLEV%"=="1" goto :END
|
|
|
|
::=======
|
|
@call create_msgs.bat msg
|
|
::=======
|
|
|
|
@call :NEXT_STEP
|
|
@goto :END
|
|
|
|
|
|
::===================
|
|
:: BUILD btyacc
|
|
:btyacc
|
|
@echo.
|
|
@echo Building btyacc (%FB_OBJ_DIR%)...
|
|
@call compile.bat builds\win32\%VS_VER%\FirebirdBoot btyacc_%FB_TARGET_PLATFORM%.log btyacc
|
|
if errorlevel 1 call :boot2 btyacc
|
|
goto :EOF
|
|
|
|
::===================
|
|
:: BUILD LibTom
|
|
:: NS: Note we need both debug and non-debug version as it is a static library linked to CRT
|
|
:: and linking executable with both debug and non-debug CRT results in undefined behavior
|
|
:LibTom
|
|
@echo.
|
|
@call set_build_target.bat %* RELEASE
|
|
@echo Building LibTomMath (%FB_OBJ_DIR%)...
|
|
@call compile.bat extern\libtommath\libtommath_MSVC%MSVC_VERSION% libtommath_%FB_CONFIG%_%FB_TARGET_PLATFORM%.log libtommath
|
|
if errorlevel 1 call :boot2 libtommath_%FB_OBJ_DIR%
|
|
@echo Building LibTomCrypt (%FB_OBJ_DIR%)...
|
|
@call compile.bat extern\libtomcrypt\libtomcrypt_MSVC%MSVC_VERSION% libtomcrypt_%FB_CONFIG%_%FB_TARGET_PLATFORM%.log libtomcrypt
|
|
if errorlevel 1 call :boot2 libtomcrypt_%FB_OBJ_DIR%
|
|
|
|
@call set_build_target.bat %* DEBUG
|
|
@echo Building LibTomMath (%FB_OBJ_DIR%)...
|
|
@call compile.bat extern\libtommath\libtommath_MSVC%MSVC_VERSION% libtommath_%FB_CONFIG%_%FB_TARGET_PLATFORM%.log libtommath
|
|
if errorlevel 1 call :boot2 libtommath_%FB_OBJ_DIR%
|
|
@echo Building LibTomCrypt (%FB_OBJ_DIR%)...
|
|
@call compile.bat extern\libtomcrypt\libtomcrypt_MSVC%MSVC_VERSION% libtomcrypt_%FB_CONFIG%_%FB_TARGET_PLATFORM%.log libtomcrypt
|
|
if errorlevel 1 call :boot2 libtomcrypt_%FB_OBJ_DIR%
|
|
|
|
@call set_build_target.bat %*
|
|
goto :EOF
|
|
|
|
::===================
|
|
:: BUILD decNumber
|
|
:decNumber
|
|
@echo.
|
|
@call set_build_target.bat %* RELEASE
|
|
@echo Building decNumber (%FB_OBJ_DIR%)...
|
|
@call compile.bat extern\decNumber\msvc\decNumber_MSVC%MSVC_VERSION% decNumber_%FB_CONFIG%_%FB_TARGET_PLATFORM%.log decNumber
|
|
if errorlevel 1 call :boot2 decNumber_%FB_OBJ_DIR%
|
|
@call set_build_target.bat %* DEBUG
|
|
@echo Building decNumber (%FB_OBJ_DIR%)...
|
|
@call compile.bat extern\decNumber\msvc\decNumber_MSVC%MSVC_VERSION% decNumber_%FB_CONFIG%_%FB_TARGET_PLATFORM%.log decNumber
|
|
if errorlevel 1 call :boot2 decNumber_%FB_OBJ_DIR%
|
|
@call set_build_target.bat %*
|
|
goto :EOF
|
|
|
|
::===================
|
|
:: BUILD ttmath
|
|
:ttmath
|
|
@echo.
|
|
@call set_build_target.bat %* RELEASE
|
|
@echo Building ttmath (%FB_OBJ_DIR%)...
|
|
@mkdir %FB_TEMP_DIR%\..\%FB_OBJ_DIR%\common 2>nul
|
|
@ml64.exe /c /Fo %FB_TEMP_DIR%\..\%FB_OBJ_DIR%\common\ttmathuint_x86_64_msvc.obj %FB_ROOT_PATH%\extern\ttmath\ttmathuint_x86_64_msvc.asm
|
|
if errorlevel 1 call :boot2 ttmath_%FB_OBJ_DIR%
|
|
@call set_build_target.bat %* DEBUG
|
|
@echo Building ttmath (%FB_OBJ_DIR%)...
|
|
@mkdir %FB_TEMP_DIR%\..\%FB_OBJ_DIR%\common 2>nul
|
|
@ml64.exe /c /Zi /Fo %FB_TEMP_DIR%\..\%FB_OBJ_DIR%\common\ttmathuint_x86_64_msvc.obj %FB_ROOT_PATH%\extern\ttmath\ttmathuint_x86_64_msvc.asm
|
|
if errorlevel 1 call :boot2 ttmath_%FB_OBJ_DIR%
|
|
@call set_build_target.bat %*
|
|
goto :EOF
|
|
|
|
::===================
|
|
:: BUILD re2
|
|
:re2
|
|
@echo.
|
|
@echo Building re2...
|
|
@mkdir %FB_ROOT_PATH%\extern\re2\builds\%FB_TARGET_PLATFORM% 2>nul
|
|
@pushd %FB_ROOT_PATH%\extern\re2\builds\%FB_TARGET_PLATFORM%
|
|
@cmake -G "Visual Studio %MSVC_VERSION%" -A %FB_TARGET_PLATFORM% -S %FB_ROOT_PATH%\extern\re2
|
|
if errorlevel 1 call :boot2 re2
|
|
@cmake --build %FB_ROOT_PATH%\extern\re2\builds\%FB_TARGET_PLATFORM% --target ALL_BUILD --config Release > re2_Release_%FB_TARGET_PLATFORM%.log
|
|
@cmake --build %FB_ROOT_PATH%\extern\re2\builds\%FB_TARGET_PLATFORM% --target ALL_BUILD --config Debug > re2_Debug_%FB_TARGET_PLATFORM%.log
|
|
@popd
|
|
goto :EOF
|
|
|
|
::===================
|
|
:: Build CLOOP and generate interface headers
|
|
:interfaces
|
|
@echo.
|
|
@echo Building CLOOP and generating interfaces...
|
|
@nmake /s /x interfaces_%FB_TARGET_PLATFORM%.log /f gen_helper.nmake updateCloopInterfaces
|
|
if errorlevel 1 call :boot2 interfaces
|
|
goto :EOF
|
|
|
|
::===================
|
|
:: Extract zlib
|
|
:zlib
|
|
@echo Extracting pre-built zlib
|
|
if exist %FB_ROOT_PATH%\extern\zlib\zlib.h (
|
|
@echo %FB_ROOT_PATH%\extern\zlib\zlib.h already extracted
|
|
) else (
|
|
%FB_ROOT_PATH%\extern\zlib\zlib.exe -y > zlib_%FB_TARGET_PLATFORM%.log
|
|
if errorlevel 1 call :boot2 zlib
|
|
)
|
|
goto :EOF
|
|
|
|
::===================
|
|
:: BUILD gpre_boot
|
|
:gpre_boot
|
|
@echo.
|
|
@echo Building gpre_boot (%FB_OBJ_DIR%)...
|
|
@call compile.bat builds\win32\%VS_VER%\FirebirdBoot gpre_boot_%FB_TARGET_PLATFORM%.log gpre_boot
|
|
if errorlevel 1 call :boot2 gpre_boot
|
|
goto :EOF
|
|
|
|
::===================
|
|
:: BUILD engine
|
|
:engine
|
|
@echo.
|
|
@echo Building engine (%FB_OBJ_DIR%)...
|
|
@call compile.bat builds\win32\%VS_VER%\Firebird engine_%FB_TARGET_PLATFORM%.log engine
|
|
@call compile.bat builds\win32\%VS_VER%\Firebird engine_%FB_TARGET_PLATFORM%.log ib_util
|
|
if errorlevel 1 call :boot2 engine
|
|
@goto :EOF
|
|
|
|
::===================
|
|
:: BUILD gbak
|
|
:gbak
|
|
@echo.
|
|
@echo Building gbak (%FB_OBJ_DIR%)...
|
|
@call compile.bat builds\win32\%VS_VER%\Firebird gbak_%FB_TARGET_PLATFORM%.log gbak
|
|
if errorlevel 1 call :boot2 gbak
|
|
@goto :EOF
|
|
|
|
::===================
|
|
:: BUILD gpre
|
|
:gpre
|
|
@echo.
|
|
@echo Building gpre (%FB_OBJ_DIR%)...
|
|
@call compile.bat builds\win32\%VS_VER%\Firebird gpre_%FB_TARGET_PLATFORM%.log gpre
|
|
if errorlevel 1 call :boot2 gpre
|
|
@goto :EOF
|
|
|
|
::===================
|
|
:: BUILD isql
|
|
:isql
|
|
@echo.
|
|
@echo Building isql (%FB_OBJ_DIR%)...
|
|
@call compile.bat builds\win32\%VS_VER%\Firebird isql_%FB_TARGET_PLATFORM%.log isql
|
|
if errorlevel 1 call :boot2 isql
|
|
@goto :EOF
|
|
|
|
::===================
|
|
:: ERROR boot
|
|
:boot2
|
|
echo.
|
|
echo Error building %1, see %1_%FB_TARGET_PLATFORM%.log
|
|
echo.
|
|
set ERRLEV=1
|
|
goto :EOF
|
|
|
|
|
|
::===================
|
|
:: BUILD messages
|
|
:msgs
|
|
@echo.
|
|
@echo Building build_msg (%FB_OBJ_DIR%)...
|
|
@call compile.bat builds\win32\%VS_VER%\FirebirdBoot build_msg_%FB_TARGET_PLATFORM%.log build_msg
|
|
if errorlevel 1 goto :msgs2
|
|
@goto :EOF
|
|
:msgs2
|
|
echo.
|
|
echo Error building build_msg, see build_msg_%FB_TARGET_PLATFORM%.log
|
|
echo.
|
|
set ERRLEV=1
|
|
goto :EOF
|
|
|
|
::===================
|
|
:: BUILD codes
|
|
:codes
|
|
@echo.
|
|
@echo Building codes (%FB_OBJ_DIR%)...
|
|
@call compile.bat builds\win32\%VS_VER%\FirebirdBoot codes_%FB_TARGET_PLATFORM%.log codes
|
|
if errorlevel 1 goto :codes2
|
|
@goto :EOF
|
|
:codes2
|
|
echo.
|
|
echo Error building codes, see codes_%FB_TARGET_PLATFORM%.log
|
|
echo.
|
|
set ERRLEV=1
|
|
goto :EOF
|
|
|
|
::==============
|
|
:databases
|
|
@rmdir /s /q %FB_GEN_DIR%\dbs 2>nul
|
|
@mkdir %FB_GEN_DIR%\dbs 2>nul
|
|
|
|
@echo Create security4.fdb...
|
|
@echo create database '%FB_GEN_DB_DIR%\dbs\security4.fdb'; | "%FB_BIN_DIR%\isql" -q
|
|
@echo Apply security.sql...
|
|
@"%FB_BIN_DIR%\isql" -q %FB_GEN_DB_DIR%/dbs/security4.fdb -i %FB_ROOT_PATH%\src\dbs\security.sql
|
|
@copy %FB_GEN_DIR%\dbs\security4.fdb %FB_GEN_DIR%\dbs\security.fdb > nul
|
|
|
|
@echo Restore metadata.gbak...
|
|
@%FB_BIN_DIR%\gbak -r %FB_ROOT_PATH%\builds\misc\metadata.gbak %FB_GEN_DB_DIR%/dbs/metadata.fdb
|
|
|
|
@call create_msgs.bat db
|
|
|
|
@%FB_BIN_DIR%\gbak -r %FB_ROOT_PATH%\builds\misc\help.gbak %FB_GEN_DB_DIR%/dbs/help.fdb
|
|
@copy %FB_GEN_DIR%\dbs\metadata.fdb %FB_GEN_DIR%\dbs\yachts.lnk > nul
|
|
|
|
@goto :EOF
|
|
|
|
|
|
::==============
|
|
:NEXT_STEP
|
|
@echo.
|
|
@echo You may now run make_all.bat [DEBUG] [CLEAN]
|
|
@echo.
|
|
@goto :EOF
|
|
|
|
:END
|