:: Initial Developer's Public License. :: The contents of this file are subject to the Initial Developer's Public :: License Version 1.0 (the "License"). You may not use this file except :: in compliance with the License. You may obtain a copy of the License at :: http://www.ibphoenix.com?a=ibphoenix&page=ibp_idpl :: Software distributed under the License is distributed on an "AS IS" basis, :: WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License :: for the specific language governing rights and limitations under the :: License. :: :: The Original Code is copyright 2003-2004 Paul Reeves. :: :: The Initial Developer of the Original Code is Paul Reeves :: :: All Rights Reserved. :: ::============================================================================= @echo off @goto :MAIN @goto :EOF ::============================================================================ :SET_PARAMS ::========= @echo off :: reset ERRLEV to clear error from last run in same cmd shell set ERRLEV=0 :: Assume we are preparing a production build set FBBUILD_BUILDTYPE=release :: Don't ship pdb files by default set FBBUILD_SHIP_PDB=no_pdb :: Reset "make" vars to zero set FBBUILD_ZIP_PACK=0 set FBBUILD_ISX_PACK=0 if not defined FB2_SNAPSHOT (set FB2_SNAPSHOT=0) :: See what we have on the command line for %%v in ( %* ) do ( ( if /I "%%v"=="DEBUG" (set FBBUILD_BUILDTYPE=debug) ) ( if /I "%%v"=="PDB" (set FBBUILD_SHIP_PDB=ship_pdb) ) ( if /I "%%v"=="ZIP" (set FBBUILD_ZIP_PACK=1) ) ( if /I "%%v"=="ISX" (set FBBUILD_ISX_PACK=1) ) ( if /I "%%v"=="ALL" ( (set FBBUILD_ZIP_PACK=1) & (set FBBUILD_ISX_PACK=1) ) ) ) ::Are we doing a snapshot build? If so we always do less work. if "%FB2_SNAPSHOT%"=="1" ( (set FBBUILD_ISX_PACK=0) ) ::End of SET_PARAMS ::----------------- @goto :EOF :CHECK_ENVIRONMENT ::================ :: Make sure we have everything we need. If something is missing then :: let's bail out now. @echo o Checking for sed... (cmd /c "sed.exe --version 2>&1 > nul ") || ( call :ERROR Could not locate sed && @goto :EOF ) @echo o Checking for unix2dos... (cmd /c "unix2dos.exe --version 2>&1 > nul" ) || ( call :ERROR Could not locate unix2dos && @goto :EOF ) @for /f "usebackq tokens=*" %%c in (`where /f touch 2^>nul`) do set TOUCH_COMMAND=%%c if defined TOUCH_COMMAND ( @%TOUCH_COMMAND% --version nul 2>nul if not errorlevel 1 ( @echo o POSIX touch utility found at %TOUCH_COMMAND% ) else ( @set TOUCH_COMMAND= ) ) @for /f "usebackq tokens=*" %%c in (`where /f md5sum 2^>nul`) do set MD5_COMMAND=%%c if defined MD5_COMMAND ( @echo o POSIX md5sum utility found at %MD5_COMMAND% ) if %FBBUILD_ZIP_PACK% EQU 1 ( if not defined SEVENZIP ( call :ERROR SEVENZIP environment variable is not defined. @goto :EOF ) else (@echo o Compression utility found.) ) if %FBBUILD_ISX_PACK% NEQ 1 goto :SKIP_INNO if defined INNO6_SETUP_PATH ( set ISCC_COMMAND="%INNO6_SETUP_PATH%\iscc.exe" ) :: If the environment variable is not set let's search in PATH if not defined ISCC_COMMAND ( @for /f "usebackq tokens=*" %%c in (`where /f iscc 2^>nul`) do set ISCC_COMMAND=%%c ) if not defined ISCC_COMMAND ( @echo Required Inno Setup compiler not found @exit /b 1 ) @echo o Inno Setup found as %ISCC_COMMAND%. :SKIP_INNO if not defined WIX ( @echo. @echo The WIX environment var not defined. @echo WiX is needed to build the MSI kits of the CRT runtimes. @echo. ) else ( @echo o WiX found at "%WIX%". ) if not defined FB_EXTERNAL_DOCS ( @echo. @echo The FB_EXTERNAL_DOCS environment var is not defined @echo It should point to the directory containing the relevant release notes @echo in adobe pdf format. @echo. ) else ( @echo o Package will include documentation from "%FB_EXTERNAL_DOCS%". ) ::End of CHECK_ENVIRONMENT ::------------------------ @goto :EOF :SET_VERSION ::========== :: Cut off everything that is not #define to let Inno Setup use it findstr /B /L "#define" "%FB_ROOT_PATH%\src\jrd\build_no.h" >"%FB_ROOT_PATH%\gen\jrd\build_no.h" :: Read version parameters from build_no.h for /F "tokens=2*" %%a in (%FB_ROOT_PATH%\gen\jrd\build_no.h) do ( @echo Setting %%a to %%~b SET %%a=%%~b ) :: Set our package number at 0 and increment every :: time we rebuild in a single session if not defined FBBUILD_PACKAGE_NUMBER ( set FBBUILD_PACKAGE_NUMBER=0 ) else ( set /A FBBUILD_PACKAGE_NUMBER+=1 ) @echo Setting FBBUILD_PACKAGE_NUMBER to %FBBUILD_PACKAGE_NUMBER% :: If a suffix is defined (usually for an RC) ensure it is prefixed correctly. if defined FBBUILD_FILENAME_SUFFIX ( if not "%FBBUILD_FILENAME_SUFFIX:~0,1%"=="-" ( (set FBBUILD_FILENAME_SUFFIX=-%FBBUILD_FILENAME_SUFFIX%) ) ) :: Set up our final destination set FBBUILD_INSTALL_IMAGES=%FB_ROOT_PATH%\builds\install_images if not exist "%FBBUILD_INSTALL_IMAGES%" (mkdir "%FBBUILD_INSTALL_IMAGES%") :: Determine Product Status if %FB_BUILD_TYPE%==V ( set FBBUILD_PROD_STATUS=PROD ) else ( set FBBUILD_PROD_STATUS=DEV ) if "%FB_TARGET_PLATFORM%"=="x64" ( set FBBUILD_FILE_ID=%PRODUCT_VER_STRING%-%FBBUILD_PACKAGE_NUMBER%-windows-x64 ) else ( set FBBUILD_FILE_ID=%PRODUCT_VER_STRING%-%FBBUILD_PACKAGE_NUMBER%-windows-x86 ) @setlocal @echo. @if not exist %FB_GEN_DIR%\readmes (@mkdir %FB_GEN_DIR%\readmes) set SED_COMMAND=sed -e s/\$MAJOR/%FB_MAJOR_VER%/g ^ -e s/\$MINOR/%FB_MINOR_VER%/g ^ -e s/\$RELEASE/%FB_REV_NO%/g @echo Processing version strings in Readme_%FBBUILD_PROD_STATUS%.txt @%SED_COMMAND% Readme_%FBBUILD_PROD_STATUS%.txt > %FB_GEN_DIR%\readmes\Readme.txt @for %%f in (installation_readme.txt) do ( @echo Processing version strings in %%f @%SED_COMMAND% %%f > %FB_GEN_DIR%\readmes\%%f ) @for %%d in (ba cz de es fr hu it pl pt ru si ) do ( @if not exist %FB_GEN_DIR%\readmes\%%d (@mkdir %FB_GEN_DIR%\readmes\%%d) @for %%f in ( %%d\*.txt ) do ( @echo Processing version strings in %%f @%SED_COMMAND% %%f > %FB_GEN_DIR%\readmes\%%f ) ) @endlocal ::End of SET_VERSION ::---------------- @goto :EOF :COPY_XTRA :: system dll's we need :: MSVC should be installed with redistributable packages. ::===================== @echo Copying MSVC runtime libraries... @if not exist %FB_OUTPUT_DIR%\system32 ( @mkdir %FB_OUTPUT_DIR%\system32 ) :: Note the confusion of RT library numbers here! These notes, as of time of :: writing 2021-12-21, are accurate for current versions of Visual Studio :: - 2017, 2019, 2022. Basic MS runtime version is v140. Except that is only :: used in file names. In reality Visual Studio uses 141, 142 or 143 in :: directory names and merge module names as well as producing file names with :: these version numbers. %MSVC_RUNTIME_FILE_VERSION% should represent 140. :: %MSVC_RUNTIME_LIBRARY_VERSION% is based on the Visual Studio version used. :: These variables are set in setenvvar.bat. for %%f in ( msvcp%MSVC_RUNTIME_FILE_VERSION%.dll vcruntime%MSVC_RUNTIME_FILE_VERSION%.dll ) do ( echo Copying "%VCToolsRedistDir%\%VSCMD_ARG_TGT_ARCH%\Microsoft.VC%MSVC_RUNTIME_LIBRARY_VERSION%.CRT\%%f" copy "%VCToolsRedistDir%\%VSCMD_ARG_TGT_ARCH%\Microsoft.VC%MSVC_RUNTIME_LIBRARY_VERSION%.CRT\%%f" %FB_OUTPUT_DIR%\ >nul if %ERRORLEVEL% GEQ 1 ( call :ERROR Copying "%VCToolsRedistDir%\%VSCMD_ARG_TGT_ARCH%\Microsoft.VC%MSVC_RUNTIME_LIBRARY_VERSION%.CRT\%%f" failed with error %ERRORLEVEL% ) && (goto :EOF) ) ) @where /Q implib.exe @if not errorlevel 1 ( if "%VSCMD_ARG_TGT_ARCH%"=="x86" ( @echo Generating fbclient_bor.lib @implib %FB_OUTPUT_DIR%\lib\fbclient_bor.lib %FB_OUTPUT_DIR%\fbclient.dll > nul ) ) @if "%FBBUILD_SHIP_PDB%"=="ship_pdb" ( @echo Copying pdb files... @copy %FB_TEMP_DIR%\%FBBUILD_BUILDTYPE%\fbserver\firebird.pdb %FB_OUTPUT_DIR%\ > nul @copy %FB_TEMP_DIR%\%FBBUILD_BUILDTYPE%\burp\burp.pdb %FB_OUTPUT_DIR%\gbak.pdb > nul @copy %FB_TEMP_DIR%\%FBBUILD_BUILDTYPE%\gfix\gfix.pdb %FB_OUTPUT_DIR%\ > nul @copy %FB_TEMP_DIR%\%FBBUILD_BUILDTYPE%\isql\isql.pdb %FB_OUTPUT_DIR%\ > nul @copy %FB_TEMP_DIR%\%FBBUILD_BUILDTYPE%\yvalve\fbclient.pdb %FB_OUTPUT_DIR%\ > nul @copy %FB_TEMP_DIR%\%FBBUILD_BUILDTYPE%\engine\engine*.pdb %FB_OUTPUT_DIR%\plugins\ > nul @copy %FB_TEMP_DIR%\%FBBUILD_BUILDTYPE%\fbtrace\fbtrace.pdb %FB_OUTPUT_DIR%\plugins\ > nul @copy %FB_TEMP_DIR%\%FBBUILD_BUILDTYPE%\legacy_auth\legacy_auth.pdb %FB_OUTPUT_DIR%\plugins\ > nul @copy %FB_TEMP_DIR%\%FBBUILD_BUILDTYPE%\legacy_usermanager\legacy_usermanager.pdb %FB_OUTPUT_DIR%\plugins\ > nul @copy %FB_TEMP_DIR%\%FBBUILD_BUILDTYPE%\srp\srp.pdb %FB_OUTPUT_DIR%\plugins\ > nul @copy %FB_TEMP_DIR%\%FBBUILD_BUILDTYPE%\udr_engine\udr_engine.pdb %FB_OUTPUT_DIR%\plugins\ > nul ) @echo Started copying docs... @rmdir /S /Q %FB_OUTPUT_DIR%\doc 2>nul @mkdir %FB_OUTPUT_DIR%\doc @copy %FB_ROOT_PATH%\*.md %FB_OUTPUT_DIR%\doc\ > nul @copy %FB_ROOT_PATH%\doc\*.* %FB_OUTPUT_DIR%\doc\ > nul @if %ERRORLEVEL% GEQ 1 ( call :ERROR COPY of main documentation tree failed with error %ERRORLEVEL% goto :EOF ) :: Various upgrade scripts and docs for %%d in ( v3.0 v4.0 ) do ( mkdir %FB_OUTPUT_DIR%\misc\upgrade\%%d 2>nul @copy %FB_ROOT_PATH%\src\misc\upgrade\%%d\*.* %FB_OUTPUT_DIR%\misc\upgrade\%%d > nul @if %ERRORLEVEL% GEQ 1 ( call :ERROR copy %FB_ROOT_PATH%\src\misc\upgrade\%%d\*.* %FB_OUTPUT_DIR%\misc\upgrade\%%d failed with error %ERRORLEVEL%. goto :EOF ) ) :: INTL script @copy %FB_ROOT_PATH%\src\misc\intl.sql %FB_OUTPUT_DIR%\misc\ > nul @if %ERRORLEVEL% GEQ 1 ( call :ERROR copy %FB_ROOT_PATH%\src\misc\intl.sql %FB_OUTPUT_DIR%\misc failed with error %ERRORLEVEL%. goto :EOF ) @echo Copying other documentation... @copy %FB_GEN_DIR%\readmes\installation_readme.txt %FB_OUTPUT_DIR%\doc\installation_readme.txt > nul :: FIX ME - we now have some .md files and ChangeLog is no longer a monster. :: Maybe we can just do nothing here. :: If we are not doing a final release then include stuff that is :: likely to be of use to testers, especially as our release notes :: may be incomplete or non-existent ::@if /I "%FBBUILD_PROD_STATUS%"=="DEV" ( :: @copy %FB_ROOT_PATH%\ChangeLog %FB_OUTPUT_DIR%\doc\ChangeLog.txt > nul ::) @mkdir %FB_OUTPUT_DIR%\doc\sql.extensions 2>nul @if %ERRORLEVEL% GEQ 2 ( (call :ERROR MKDIR for doc\sql.extensions dir failed) & (@goto :EOF)) @copy %FB_ROOT_PATH%\doc\sql.extensions\*.* %FB_OUTPUT_DIR%\doc\sql.extensions\ > nul @if %ERRORLEVEL% GEQ 1 ( (call :ERROR Copying doc\sql.extensions failed ) & (goto :EOF)) :: External docs aren't necessary for a snapshot build, so we don't throw :: an error if FB_EXTERNAL_DOCS is not defined. On the other hand, :: if the docs are available then we can include them. if defined FB_EXTERNAL_DOCS ( @echo Copying pdf docs... @for %%v in ( Firebird_v%FB_MAJOR_VER%.%FB_MINOR_VER%.%FB_REV_NO%.ReleaseNotes.pdf ) do ( @echo ... %%v @copy /Y %FB_EXTERNAL_DOCS%\%%v %FB_OUTPUT_DIR%\doc\%%v > nul if %ERRORLEVEL% GEQ 1 (call :ERROR Copying %FB_EXTERNAL_DOCS%\%%v failed.) ) @for %%v in ( Firebird-%FB_MAJOR_VER%.%FB_MINOR_VER%-QuickStart.pdf ) do ( @echo ... %%v @copy /Y %FB_EXTERNAL_DOCS%\%%v %FB_OUTPUT_DIR%\doc\%%v > nul if %ERRORLEVEL% GEQ 1 ( REM - As of RC1 there is no quick start guide so we do not want REM the packaging to fail for something that doesn't exist if "%FBBUILD_FILENAME_SUFFIX%" == "-RC1" ( echo Copying %FB_EXTERNAL_DOCS%\%%v failed. ) else ( call :ERROR Copying %FB_EXTERNAL_DOCS%\%%v failed. ) ) ) @echo Finished copying pdf docs... @echo. ) @echo Cleaning irrelevant files... :: Clean out text notes that are either not relevant to Windows or :: are only of use to engine developers. @for %%v in ( README.makefiles README.user.embedded README.user.troubleshooting README.build.mingw.html README.build.msvc.html fb2-todo.txt cleaning-todo.txt install_win32.txt README.coding.style emacros-cross_ref.html firebird_conf.txt *.*~) do ( @del %FB_OUTPUT_DIR%\doc\%%v 2>nul ) @echo Copy license... :: Add license for %%v in (IPLicense.txt IDPLicense.txt ) do ( @copy %FB_ROOT_PATH%\builds\install\misc\%%v %FB_OUTPUT_DIR%\%%v > nul ) :: And readme @copy %FB_GEN_DIR%\readmes\Readme.txt %FB_OUTPUT_DIR%\ > nul :: Walk through all docs and transform any that are not .txt, .pdf or .html to .txt @echo Setting .txt filetype to ascii docs. for /R %FB_OUTPUT_DIR%\doc %%v in ( * ) do ( if /I not "%%~xv" == ".md" ( if /I not "%%~xv" == ".txt" ( if /I not "%%~xv" == ".pdf" ( if /I not "%%~xv" == ".htm" ( if /I not "%%~xv" == ".html" ( ren %%v %%~nxv.txt ) ) ) ) ) ) if %FB2_SNAPSHOT% EQU 1 ( @copy %FB_ROOT_PATH%\builds\install\arch-specific\win32\readme_snapshot.txt %FB_OUTPUT_DIR%\readme_snapshot.txt > nul ) @echo Completed copying docs. :: Examples were already copied by make_examples ::End of COPY_XTRA ::---------------- @goto :EOF :BUILD_CRT_MSI :: Generate runtimes as an MSI file. :: This requires WiX 3.0 to be installed ::============ @if %MSVC_VERSION% EQU 15 ( if not exist %FB_OUTPUT_DIR%\system32\vccrt%MSVC_RUNTIME_LIBRARY_VERSION%_%FB_TARGET_PLATFORM%.msi ( "%WIX%\bin\candle.exe" -v -sw1091 %FB_ROOT_PATH%\builds\win32\msvc%MSVC_VERSION%\VCCRT_%FB_TARGET_PLATFORM%.wxs -out %FB_GEN_DIR%\vccrt_%FB_TARGET_PLATFORM%.wixobj @if %ERRORLEVEL% GEQ 1 ( ( call :ERROR Could not generate wixobj for MSVC Runtime MSI ) & (goto :EOF) ) else ( "%WIX%\bin\light.exe" -sw1076 %FB_GEN_DIR%\vccrt_%FB_TARGET_PLATFORM%.wixobj -out %FB_OUTPUT_DIR%\system32\vccrt%MSVC_RUNTIME_LIBRARY_VERSION%_%FB_TARGET_PLATFORM%.msi @if %ERRORLEVEL% GEQ 1 ( (call :ERROR Could not generate MSVCC Runtime MSI %MSVC_RUNTIME_LIBRARY_VERSION% ) & (goto :EOF)) ) ) else ( @echo Using an existing build of %FB_OUTPUT_DIR%\system32\vccrt%MSVC_RUNTIME_LIBRARY_VERSION%_%FB_TARGET_PLATFORM%.msi ) ) ::End of BUILD_CRT_MSI ::-------------------- @goto :EOF :INCLUDE_DIR ::========== :: Prepare other files needed for deployment to /include dir setlocal :: grab some missing bits'n'pieces from different parts of the source tree ::========================================================================= @echo Copying ib_util etc @copy %FB_ROOT_PATH%\src\extlib\ib_util.h %FB_OUTPUT_DIR%\include > nul || (call :WARNING Copying ib_util.h failed. && @goto :EOF ) @copy %FB_ROOT_PATH%\src\misc\pascal\ib_util.pas %FB_OUTPUT_DIR%\include > nul || (call :WARNING Copying ib_util.pas failed. && @goto :EOF ) @echo Copying other include files required for development... set OUTPATH=%FB_OUTPUT_DIR%\include @copy %FB_ROOT_PATH%\src\yvalve\perf.h %OUTPATH%\ > nul @copy %FB_ROOT_PATH%\src\include\gen\firebird.pas %OUTPATH%\firebird\ > nul || (@call :ERROR Failure executing copy %FB_ROOT_PATH%\src\include\gen\firebird.pas %OUTPATH%\firebird\ ) @if %ERRLEV% GEQ 1 goto :END endlocal ::End of INCLUDE_DIR ::------------------ @goto :EOF :DB_CONF :: Generate sample databases file ::=============================== @echo Creating sample databases.conf copy %FB_ROOT_PATH%\builds\install\misc\databases.conf %FB_OUTPUT_DIR%\databases.conf > nul ::End of DB_CONF ::----------------- @goto :EOF :FB_MSG ::================================================================= :: firebird.msg is generated as part of the build process :: in builds\win32 by build_msg.bat. Copying from there to output dir ::================================================================= @if not exist %FB_OUTPUT_DIR%\firebird.msg ( (@copy %FB_GEN_DIR%\firebird.msg %FB_OUTPUT_DIR%\firebird.msg > nul) (@if %ERRORLEVEL% GEQ 1 ( (call :ERROR Could not copy firebird.msg ) & (goto :EOF))) ) ::End of FB_MSG ::------------- @goto :EOF :SET_CRLF :: Get a list of all files in the tree make sure :: that and they all have windows EOL ::=============================================== for /R %FB_OUTPUT_DIR% %%W in ( *.txt *.conf *.sql *.c *.cpp *.hpp *.h *.bat *.pas *.e *.def *.rc *.md *.html ) do ( unix2dos --safe %%W || exit /b 1 ) ::End of SET_CRLF ::------------- @goto :EOF :ZIP_PACK ::======= :: Forcefully disable delayed expansion because of exclamation marks in 7z switches setlocal DisableDelayedExpansion set SKIP_FILES=-x!*.log -x!*.exp -x!*_test.exe -x!installation_readme.txt if "%FBBUILD_SHIP_PDB%" == "ship_pdb" ( set FBBUILD_ZIPFILE=%FBBUILD_INSTALL_IMAGES%\Firebird-%FBBUILD_FILE_ID%-withDebugSymbols%FBBUILD_FILENAME_SUFFIX%.zip ) else ( set FBBUILD_ZIPFILE=%FBBUILD_INSTALL_IMAGES%\Firebird-%FBBUILD_FILE_ID%%FBBUILD_FILENAME_SUFFIX%.zip set SKIP_FILES=%SKIP_FILES% -x!*.pdb ) :: No need to ship this file with the msi runtime set SKIP_FILES=%SKIP_FILES% -x!*.wixpdb if "%FB2_EXAMPLES%" == "0" set SKIP_FILES=%SKIP_FILES% -xr-!examples if exist %FBBUILD_ZIPFILE% ( @del %FBBUILD_ZIPFILE% ) "%SEVENZIP%\7z.exe" a -r -tzip -mx9 %SKIP_FILES% %FBBUILD_ZIPFILE% %FB_OUTPUT_DIR%\* endlocal ::End of ZIP_PACK ::---------------- @goto :EOF :TOUCH_ALL ::======== ::Set file timestamp to something meaningful. ::While building and testing this feature might be annoying, so we don't do it. ::========================================================== setlocal if /I not "%FBBUILD_BUILDTYPE%"=="release" goto :EOF if not defined TOUCH_COMMAND echo POSIX touch utility not found && exit /b 1 set TIMESTRING=0%FB_MAJOR_VER%:0%FB_MINOR_VER%:0%FB_REV_NO% :: Perhaps here we should touch directories as well :: Here and there XXX_COMMAND is "call"-ed in case if it is a batch file @echo Touching release build files with %TIMESTRING% timestamp @for /R %FB_OUTPUT_DIR% %%F in ( * ) do ( call %TOUCH_COMMAND% -c -d %TIMESTRING% %%F || exit /b 1 ) endlocal ::End of TOUCH_ALL ::---------------- @goto :EOF :ISX_PACK ::======= :: Now let's go and build the installable .exe :: :: Note - define INNO6_SETUP_PATH with double quotes if it is installed into a path string using spaces. :: eg set INNO6_SETUP_PATH="C:\Program Files\Inno Setup 6" :: ::================================================= @echo. call %ISCC_COMMAND% %FB_ROOT_PATH%\builds\install\arch-specific\win32\FirebirdInstall.iss @echo. ::End of ISX_PACK ::--------------- @goto :EOF :DO_MD5SUMS ::========= :: Generate the md5sum checksum file ::================================== if not defined MD5_COMMAND ( call :WARNING md5sum utility not found. Cannot generate md5 sums. @goto :EOF ) @echo Generating md5sums for Firebird-%PRODUCT_VER_STRING%-%FBBUILD_PACKAGE_NUMBER% :: write sums into temporary file to avoid including it into the process pushd %FBBUILD_INSTALL_IMAGES% call %MD5_COMMAND% Firebird-%PRODUCT_VER_STRING%?%FBBUILD_PACKAGE_NUMBER%*.* >md5sum.tmp :: then rename it to the proper name if not errorlevel 1 ( del Firebird-%PRODUCT_VER_STRING%-%FBBUILD_PACKAGE_NUMBER%.md5sum >nul 2>nul ren md5sum.tmp Firebird-%PRODUCT_VER_STRING%-%FBBUILD_PACKAGE_NUMBER%.md5sum ) popd ::End of DO_MD5SUMS ::----------------- @goto :EOF :HELP ::=== @echo. @echo. @echo Parameters can be passed in any order. @echo Currently the recognised params are: @echo. @echo DEBUG Use binaries from 'debug' dir, not 'release' dir. @echo (Requires a debug build. NOTE: A debug build is @echo not required to create packages with debug info.) @echo. @echo PDB Include pdb files. @echo (These files roughly double the size of the package.) @echo. @echo ISX Create installable binary from InnoSetup Extensions compiler. @echo (You need to set the INNO6_SETUP_PATH environment variable.) @echo. @echo ZIP Create Zip package. @echo (SEVENZIP is currently used and the SEVENZIP env var must be set.) @echo. @echo ALL Build InnoSetup and Zip packages. @echo. @echo HELP This help screen. @echo. @echo In addition, the following environment variables are checked by ISS script: @echo. @echo FB2_ISS_DEBUG=1 - Prepare an InnoSetup script that is @echo easier to debug @echo. @echo FB2_EXAMPLES=0 - Don't include examples in the install kit. @echo. @echo. @echo Required Files @echo. @echo To successfully package Firebird you will need to make sure several @echo packages are installed and correctly configured on your system. @echo. @echo o InnoSetup is needed to create the binary installer. See the header @echo of the .iss file to see which minimum version is required. @echo. @echo o 7ZIP is required to create the zip package @echo. @echo o sed is required for packaging. Use the sed provided by @echo gnuwin32. The cygwin one is not guaranteed to work. @echo. @echo o WiX v3.0 is required to build installable msi packages of the @echo MS runtime libraries. @echo. ::End of HELP ::----------- @goto :EOF :ERROR ::==== :: errorlevel gets reset automatically so capture it before we lose it. set ERRLEV=%errorlevel% @echo. @echo Error %ERRLEV% in BuildExecutableInstall @echo %* @echo. ::End of ERROR ::------------ @goto :EOF :WARNING ::====== set ERRLEV=%errorlevel% @echo. @echo **** WARNING - Execution of a non-critical component failed with error level %ERRLEV%. **** @echo %* @echo. if "%FBBUILD_PROD_STATUS%"=="PROD" ( @echo. @echo Production status is Final or Release Candidate @echo Error %ERRLEV% must be fixed before continuing @echo. ) else ( set ERRLEV=0 ) @goto :EOF :MAIN ::==== ::Check if on-line help is required for %%v in ( %1 %2 %3 %4 %5 %6 %7 %8 %9 ) do ( ( @if /I "%%v"=="-h" (goto :HELP & goto :EOF) ) ( @if /I "%%v"=="/h" (goto :HELP & goto :EOF) ) ( @if /I "%%v"=="HELP" (goto :HELP & goto :EOF) ) ) pushd ..\..\..\win32 ::This must be called from the directory it resides in. @call setenvvar.bat %* popd @if errorlevel 1 (goto :END) @if not defined FB2_ISS_DEBUG (set FB2_ISS_DEBUG=0) @echo. @echo Reading command-line parameters... @(@call :SET_PARAMS %* ) @if "%ERRLEV%"=="1" (@goto :ERROR %errorlevel% calling SET_PARAMS && @goto :END) @echo. @echo Checking that all required components are available... @(@call :CHECK_ENVIRONMENT ) || (@echo Error calling CHECK_ENVIRONMENT && @goto :END) @echo. @echo Setting version number... @(@call :SET_VERSION ) || (@echo Error calling SET_VERSION && @goto :END) @echo. @echo Copying additional files needed for installation, documentation etc. @(@call :COPY_XTRA ) || (@echo Error calling COPY_XTRA && @goto :END ) @echo. :: WIX is not necessary for a snapshot build, so we don't throw :: an error if WIX is not defined. On the other hand, :: if it is there anyway, use it. if defined WIX ( @echo Building MSI runtimes @(@call :BUILD_CRT_MSI ) || (@echo Error calling BUILD_CRT_MSI && @goto :END) @echo. ) @echo Prepare include directory @(@call :INCLUDE_DIR ) || (@echo Error calling INCLUDE_DIR && @goto :END) @echo. @echo Writing databases conf @(@call :DB_CONF ) || (@echo Error calling DB_CONF && @goto :END) @echo. @echo Copying firebird.msg @(@call :FB_MSG ) || (@echo Error calling FB_MSG && @goto :END) @echo. @echo Fix up line endings... @(@call :SET_CRLF ) || (@echo Error calling SET_CRLF && @goto :EOF) @echo. ::@echo Creating .local files for libraries ::@(@call :TOUCH_LOCAL ) || (@echo Error calling TOUCH_LOCAL & @goto :END) ::@echo. @(@call :TOUCH_ALL ) || (@echo Error calling TOUCH_ALL && @goto :END) @echo. if %FBBUILD_ZIP_PACK% EQU 1 ( @echo Zipping files for zip pack @(@call :ZIP_PACK ) || (@echo Error calling ZIP_PACK && @goto :END) @echo. ) if %FBBUILD_ISX_PACK% EQU 1 ( @echo Now let's compile the InnoSetup scripts @(@call :ISX_PACK ) || (@echo Error calling ISX_PACK && @goto :END) @echo. ) @(@call :DO_MD5SUMS ) || (@echo Error calling DO_MD5SUMS && @goto :END) @echo. @echo Completed building installation kit(s) @echo. ::@if %FB2_ISS_DEBUG% equ 0 (ENDLOCAL) ::End of MAIN ::----------- @goto :END :END exit /b %ERRLEV%