You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

200 lines
6.2 KiB
Batchfile

@echo off
rem --
rem
rem build exiv2 library from Jenkins (or the command-line)
rem
rem --
rem --
rem set up defaults for undefined variables used by this script
if NOT DEFINED ACTION set ACTION=/build
if NOT DEFINED COMPILER set COMPILER=G++
if NOT DEFINED BuildEnv set BuildEnv=native
if NOT DEFINED Builder set Builder=2005
if NOT DEFINED release set release=false
if NOT DEFINED debug set debug=false
if NOT DEFINED static set static=false
if NOT DEFINED dll set dll=false
if NOT DEFINED x64 set x64=false
if NOT DEFINED Win32 set Win32=false
if NOT DEFINED tests set tests=false
if NOT DEFINED teste set teste=false
if NOT DEFINED testv set testv=false
if NOT DEFINED testr set testr=false
if NOT DEFINED expat set expat=true
if NOT DEFINED zlib set zlib=true
if NOT DEFINED curl set curl=false
if NOT DEFINED libssh set libssh=false
if NOT DEFINED openssl set openssl=false
if %openssl%==true set curl=true
if %ACTION%==/clean set tests=false
if %ACTION%==/upgrade set tests=false
rem --
rem init the build environment for the builder
rem currently, only 2003 (32 bit) and 2005 (32 and 64 bit) are supported
rem adding additional MSVC compilers (2008, 2010, 2012, etc) should be simple
rem and has not been done for expediency
rem should only require:
rem 1 Invoke the appropriate vsvars32.bat script
rem 2 Run devenv/upgrade
rem 3 set Builder=2005
rem and all should be good
set BGOOD=0
if %Builder%==2003 (
set x64=false
set Win32=true
set curl=false
set openssl=false
set libssh=false
call "C:\Program Files (x86)\Microsoft Visual Studio .NET 2003\Common7\Tools\vsvars32.bat"
pushd msvc2003
set BGOOD=1
)
if %Builder%==2005 (
call "C:\Program Files (x86)\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat"
pushd msvc
set BGOOD=1
)
rem --
rem check we have a good builder
rem we could test label and msvc
rem if NOT %label%==MSVC exit/b 1
rem if NOT %msvc%==true exit/b 1
if %BGOOD%==0 (
echo "MSVC Builder %Builder% is not supported"
exit/b 1
)
rem --
rem FOO is the current directory in cygwin (/cygdrive/c/users/shared/workspace/exiv2-trunk/label/msvc)
rem we need this to set the correct directory when we run the test suite from Cygwin
for /f "tokens=*" %%a in ('cygpath -au ..') do set FOO=%%a
rem --
rem copy external library code and other files appropriate for the build requested
copy exiv2.sln e.sln
call copylibs.bat
set webready=false
if %curl% == true if %libssh% == true if %openssl% == true set webready=true
if %webready% == true (
copy/y exiv2-webready.sln e.sln
copy/y ..\include\exiv2\exv_msvc-webready.h ..\include\exiv2\exv_msvc.h
)
rem --
rem let the user know what's going on!
echo ------- from jenkins_build.bat ------------
set PATH=c:\perl64\bin;%PATH%
set | sort
perl --version
rem --
rem Now build and test
if %Win32%==true (
if %debug%==true (
if %static%==true (
if %Builder%==2003 (
devenv e.sln %ACTION% "Debug"
if NOT ERRORLEVEL 1 if %tests%==true call bash -c 'cd %FOO%;cd test;./testMSVC.sh ../msvc2003/bin/Debug'
)
if %Builder%==2005 (
devenv e.sln %ACTION% "Debug|Win32"
if NOT ERRORLEVEL 1 if %tests%==true call bash -c 'cd %FOO%;cd test;./testMSVC.sh ../msvc/bin/win32/Debug'
)
) ) )
if %Win32%==true (
if %release%==true (
if %static%==true (
if %Builder%==2003 (
devenv e.sln %ACTION% "Release"
if NOT ERRORLEVEL 1 if %tests%==true call bash -c 'cd %FOO%;cd test;./testMSVC.sh ../msvc2003/bin/Release'
)
if %Builder%==2005 (
devenv e.sln %ACTION% "Release|Win32"
if NOT ERRORLEVEL 1 if %tests%==true call bash -c 'cd %FOO%;cd test;./testMSVC.sh ../msvc/bin/win32/Release'
)
) ) )
if %Win32%==true (
if %debug%==true (
if %dll%==true (
if %Builder%==2003 (
devenv e.sln %ACTION% "DebugDLL"
if NOT ERRORLEVEL 1 if %tests%==true call bash -c 'cd %FOO%;cd test;./testMSVC.sh ../msvc2003/bin/DebugDLL'
)
if %Builder%==2005 (
devenv e.sln %ACTION% "DebugDLL|Win32"
if NOT ERRORLEVEL 1 if %tests%==true call bash -c 'cd %FOO%;cd test;./testMSVC.sh ../msvc/bin/win32/DebugDLL'
)
) ) )
if %Win32%==true (
if %release%==true (
if %dll%==true (
if %Builder%==2003 (
devenv e.sln %ACTION% "ReleaseDLL"
if NOT ERRORLEVEL 1 if %tests%==true call bash -c 'cd %FOO%;cd test;./testMSVC.sh ../msvc2003/bin/ReleaseDLL'
)
if %Builder%==2005 (
devenv e.sln %ACTION% "ReleaseDLL|Win32"
if NOT ERRORLEVEL 1 if %tests%==true call bash -c 'cd %FOO%;cd test;./testMSVC.sh ../msvc/bin/win32/ReleaseDLL'
)
) ) )
if %x64%==true (
if %debug%==true (
if %static%==true (
devenv e.sln %ACTION% "Debug|x64"
if NOT ERRORLEVEL 1 if %tests%==true call bash -c 'cd %FOO%;cd test;./testMSVC.sh ../msvc/bin/x64/Debug'
) ) )
if %x64%==true (
if %release%==true (
if %static%==true (
devenv e.sln %ACTION% "Release|x64"
if NOT ERRORLEVEL 1 if %tests%==true call bash -c 'cd %FOO%;cd test;./testMSVC.sh ../msvc/bin/x64/Release'
) ) )
if %x64%==true (
if %debug%==true (
if %dll%==true (
devenv e.sln %ACTION% "DebugDLL|x64"
if NOT ERRORLEVEL 1 if %tests%==true call bash -c 'cd %FOO%;cd test;./testMSVC.sh ../msvc/bin/x64/DebugDLL'
) ) )
if %x64%==true (
if %release%==true (
if %dll%==true (
devenv e.sln %ACTION% "ReleaseDLL|x64"
if NOT ERRORLEVEL 1 if %tests%==true call bash -c 'cd %FOO%;cd test;./testMSVC.sh ../msvc/bin/x64/ReleaseDLL'
) ) )
rem --
rem cleanup time
del e.sln
popd
rem --
rem delete support libraries (with mozilla's native rm utility)
if %Builder%==2003 msvc\tools\bin\rm.exe -rf ..\expat-2.0.1 ..\zlib-1.2.3
if %Builder%==2005 msvc\tools\bin\rm.exe -rf ..\expat ..\zlib ..\openssl ..\libssh ..\curl
if %Builder%==2005 if EXIST openssl (
cd ..
cygwin64\bin\rm.exe -rf openssl
cd msvc
)
rem That's all Folks!
rem -----------------