[svn-r13977] Purpose: Misc. Windows autotest code-cleanup

Description:
This cleans up a lot of different things we were doing in the Windows batch scripts.  For one, we now use "exit /b" to better emulate functions in batch scripts.  Also changed error-checking to look for negative return values as well.

This also adds initial support for Visual Studio 2005 command-line builds in hdf5build.BAT

Tested:
WinXP
This commit is contained in:
Scott Wegner 2007-07-13 15:54:54 -05:00
parent 2b89d6d73c
commit 31a2af29ca
2 changed files with 211 additions and 172 deletions

View File

@ -33,24 +33,22 @@
:: By default, only C and C++ libraries are built and tested.
if defined hdf5_debug echo ON
if "x%1"=="x" goto main
goto help
:: Print a help message
:help
echo.Builds and tests HDF5 Libraries and Tools.
echo.
echo %0 [OPTION]
echo %~nx0 [OPTION]
echo.
echo.Please use one of the following options!
echo.
echo. %0 Build and tests HDF5 C/C++ Library and Tools
echo. %0 /? Help information
echo. %~nx0 Build and tests HDF5 C/C++ Library and Tools
echo. %~nx0 /? Help information
if defined hdf5_debug pause
goto :eof
exit /b
:: This is where the magic happens
@ -67,13 +65,13 @@ echo.***************************************************************************
echo. >> %bt_results%
call :build
if errorlevel 1 (
if %errorlevel% neq 0 (
echo.Error building HDF5 libraries!
goto error
)
call :test
if errorlevel 1 (
if %errorlevel% neq 0 (
echo.Error testing HDF5 libraries!
goto error
)
@ -83,8 +81,7 @@ echo. All HDF5 libraries and tools build and tested successfully! >> %build_resu
call :cleanup
if defined hdf5_debug pause
goto :eof
exit /b 0
:: Setup our environment
@ -100,8 +97,7 @@ if "x%build_results%"=="x" set build_results="%CD%\build_results.txt"
:: Create our results file
type nul > %bt_results%
if defined hdf5_debug pause
goto :eof
exit /b 0
:: Build HDF5 libraries and tools
@ -110,8 +106,7 @@ goto :eof
call hdf5build.BAT
type %build_results% >> %bt_results%
if defined hdf5_debug pause
goto :eof
exit /b
:: Test our libraries and tools
@ -120,8 +115,7 @@ goto :eof
call hdf5check enablecpp
type check_results.txt >> %bt_results%
if defined hdf5_debug pause
goto :eof
exit /b
:: Handle errors
@ -131,10 +125,8 @@ goto :eof
echo.hdf5bt failed.
echo.hdf5bt failed. >> %bt_results%
call :cleanup
set errorlevel=1
if defined hdf5_debug pause
goto :eof
exit /b
:: Cleanup our environment
@ -147,5 +139,4 @@ if "x%hdf5_auto_results%"=="x" set bt_results=
popd
if defined hdf5_debug pause
goto :eof
exit /b 0

View File

@ -20,10 +20,10 @@
:: 1. hdf5build -- Build HDF5 tools and c library
:: By Xuan Bai
:: Created: Aug. 16, 2004
:: Last Updated: July 7, 2007
:: Last Updated: July 13, 2007
:: This batch file makes the following assumptions:
:: - Visual Studio .NET is installed, and VS71COMNTOOLS variable is set
:: - The appropriate version of Visual Studio is installed and setup
:: - The directory structure is setup from a fresh source copy
:: - copy_hdf.bat has already been run from the ./windows directory
:: - Visual Studio already contains the required paths for external libraries
@ -33,61 +33,49 @@
:: By default, only C and C++ libraries are built.
if defined hdf5_debug echo ON
if "x%1"=="x" goto main
goto help
goto main
:: Print a help message
:help
echo.Builds HDF5 Libraries and Tools.
echo.
echo %0 [OPTION]
echo %~nx0 [OPTION]
echo.
echo.Please use one of the following options!
echo.
echo. %0 Build HDF5 C Library and Tools
echo. %0 /? Help information
goto :eof
echo. %~nx0 Build HDF5 C Library and Tools
echo. %~nx0 /? Help information
exit /b 0
:: Parse through the parameters sent to file, and set appropriate variables
:parse_params
:: This is where the magic happens
:main
for %%a in (%*) do (
if "%1"=="/vs8" (
:: Use VS2005 as our compiler
set hdf5_use_vs2005=true
call :setup
) else if "%1"=="/fort" (
:: Enable Fortran
set hdf5_enablefortran=true
echo.Building HDF5 Libraries and Tools
echo.
) else if "%1"=="/?" (
:: Set errorlevel 1 and send to help
call :help
exit /b 1
echo.***************************************************************************** >> %build_results%
echo. Build HDF5 Libraries and Tools >> %build_results%
echo.***************************************************************************** >> %build_results%
echo. >> %build_results%
call :h5tinit
if errorlevel 1 (
echo. Error building h5tinit!
echo. Error building h5tinit! >> %build_results%
goto error
) else (
:: Set errorlevel 2 to send to help if we receive a bad parameter (or /?)
call :help
exit /b 2
)
)
call :all
if errorlevel 1 (
echo. Error building HDF5 libraries!
echo. Error building HDF5 libraries! >> %build_results%
exit /b 0
goto error
)
echo. All HDF5 libraries and tools build successfully!
echo. All HDF5 libraries and tools build successfully! >> %build_results%
call :cleanup
if defined hdf5_debug pause
goto :eof
:: Setup our environment
:setup
@ -98,22 +86,43 @@ echo. Setting up environment >> %build_results%
pushd %~dp0
:: Constants
if "x%build_results%"=="x" set build_results="%CD%\build_results.txt"
type nul > %build_results%
if "x%zlib_name%"=="x" set zlib_name=zdll.lib
if "x%szip_name%"=="x" set szip_name=szlibdll.lib
if "x%build_results%"=="x" set build_results="%CD%\build_results.txt"
:: Create our results file
type nul > %build_results%
:: By default, use all.sln, unless hdf5_enablefortran is set
if defined hdf5_enablefortran (
echo.Building Fortran projects enabled
echo.Building Fortran projects enabled >> %build_results%
set hdf5_sln="%CD%\windows\proj\all_fortran\all_fortran.sln"
) else set hdf5_sln="%CD%\windows\proj\all\all.sln"
:: Set external libraries if they aren't already set
if x%hdf5_ext_zlib%==x set hdf5_ext_zlib=%zlib_name%
if x%hdf5_ext_szip%==x set hdf5_ext_szip=%szip_name%
:: By default, use the Visual Studio .NET environment
:: Setup Visual Studio environment. By default, use the Visual Studio .NET environment
if defined hdf5_use_vs2005 (
echo.Using Visual Studio 2005
echo.Using Visual Studio 2005 >> %build_results%
call "%vs80comntools%\vsvars32.bat" >> %build_results%
) else (
echo.Using Visual Studio .NET 2003
echo.Using Visual Studio .NET 2003 >> %build_results%
call "%vs71comntools%\vsvars32.bat" >> %build_results%
if defined hdf5_debug pause
goto :eof
:: If we are building Fortran libraries with .NET, we need to manually edit
:: some project files
if defined hdf5_enablefortran (
echo.Building Fortran from commandline with .NET not yet implemented!
echo.Building Fortran from commandline with .NET not yet implemented! >> %build_results%
exit /b 1
)
exit /b 0
:: Build H5tinit.exe and generate h4tinit.c
@ -126,13 +135,12 @@ echo. Build H5Tinit.exe >> %build_results%
echo.***************************************************************************** >> %build_results%
echo. >> %build_results%
devenv .\windows\misc\typegen\typegen.sln /rebuild Debug >> %build_results% 2>&1
if errorlevel 1 goto :eof
if %errorlevel% neq 0 exit /b
:: Use output to generate h5tinit.c
.\src\h5tinit.exe > .\src\h5tinit.c
if defined hdf5_debug pause
goto :eof
exit /b
:: Build the HDF5 libraries. By default, C and C++ libraries are built.
@ -150,11 +158,10 @@ for %%a in (debug release) DO (
echo. Building %%a libraries...
echo. Building %%a libraries... >> %build_results%
devenv .\windows\proj\all\all.sln /rebuild %%a >> %build_results% 2>&1
if errorlevel 1 goto :eof
if %errorlevel% neq 0 exit /b
)
if defined hdf5_debug pause
goto :eof
exit /b
:: Handle errors
@ -164,10 +171,8 @@ goto :eof
echo.HDF5 build failed.
echo.HDF5 build failed. >> %build_results%
call :cleanup
set errorlevel=1
if defined hdf5_debug pause
goto :eof
exit /b 1
:: Cleanup our environment
@ -175,10 +180,53 @@ goto :eof
set zlib_name=
set szip_name=
set hdf5_enablefortran=
set hdf5_use_vs2005=
:: Don't unset build_results if it is being used by hdf5bt.BAT
if "x%bt_results%"=="x" set build_results=
popd
if defined hdf5_debug pause
goto :eof
exit /b 0
:: This is where the magic happens
:main
call :parse_params %*
if %errorlevel% neq 0 (
if %errorlevel% equ 2 echo.Error parsing parameters!
exit /b
)
call :setup
echo.Building HDF5 Libraries and Tools
echo.
echo.***************************************************************************** >> %build_results%
echo. Build HDF5 Libraries and Tools >> %build_results%
echo.***************************************************************************** >> %build_results%
echo. >> %build_results%
call :h5tinit
if %errorlevel% neq 0 (
echo. Error building h5tinit!
echo. Error building h5tinit! >> %build_results%
goto error
)
call :all
if %errorlevel% neq 0 (
echo. Error building HDF5 libraries!
echo. Error building HDF5 libraries! >> %build_results%
goto error
)
echo. All HDF5 libraries and tools build successfully!
echo. All HDF5 libraries and tools build successfully! >> %build_results%
call :cleanup
exit /b 0