2015-04-16 11:03:55 +02:00
@ echo off
rem *************************************************************************************************
rem usage:
rem AutoBuildForWPAndWindows.bat % Configuration %
rem --For debug version:
rem Win32-C-Only: AutoBuildForWPAndWindows.bat Win32-Debug-C
rem Win32-ASM: AutoBuildForWPAndWindows.bat Win32-Debug-ASM
rem Win64-C-Only: AutoBuildForWPAndWindows.bat Win64-Debug-C
rem Win64-ASM: AutoBuildForWPAndWindows.bat Win64-Debug-ASM
rem ARM-C-Only: AutoBuildForWPAndWindows.bat ARM-Debug-C
rem ARM-ASM: AutoBuildForWPAndWindows.bat ARM-Debug-ASM
rem --For release version:
rem Win32-C-Only: AutoBuildForWPAndWindows.bat Win32-Release-C
rem Win32-ASM: AutoBuildForWPAndWindows.bat Win32-Release-ASM
rem Win64-C-Only: AutoBuildForWPAndWindows.bat Win64-Release-C
rem Win64-ASM: AutoBuildForWPAndWindows.bat Win64-Release-ASM
rem ARM-C-Only: AutoBuildForWPAndWindows.bat ARM-Release-C
rem ARM-ASM: AutoBuildForWPAndWindows.bat ARM-Release-ASM
rem --For debug and release version:
rem Win32-C-Only: AutoBuildForWPAndWindows.bat Win32-All-C
rem Win32-ASM: AutoBuildForWPAndWindows.bat Win32-All-ASM
rem Win64-C-Only: AutoBuildForWPAndWindows.bat Win64-All-C
rem Win64-ASM: AutoBuildForWPAndWindows.bat Win64-All-ASM
rem ARM-C-Only: AutoBuildForWPAndWindows.bat ARM-All-C
rem ARM-ASM: AutoBuildForWPAndWindows.bat ARM-All-ASM
rem --For default:
rem AutoBuildForWPAndWindows.bat
rem ARM-All-ASM
rem
rem --lib/dll files will be copied to folder .\bin
rem --win32 folder bin\i386*
rem --win64 folder bin\x86_64*
rem --arm folder bin\arm*
rem
rem Environment:
rem ----for windows phone, Visual studio with update 3 or later is needed
rem ----gas-preprocessor(windows phone build only)
rem --you can clone it from git://git.libav.org/gas-preprocessor.git
rem --for more detail, please refer to https://git.libav.org/?p=gas-preprocessor.git
rem -- and then set gas-preprocessor path to the %GasScriptPath% variable in this script
rem or just copy to VC2013 bin's path,you can refer to variable %VC12Path%
rem
rem ----MinGW
rem --install MinGW tools
rem --more detail, please refer to http://www.mingw.org/
rem
rem 2015/03/15 huashi@cisco.com
rem *************************************************************************************************
call : BasicSetting
call : PathSetting
call : SetBuildOption %1
if not %ERRORLEVEL% == 0 (
echo not suppot option!
goto : ErrorReturn
)
call : EnvSetting %1
call : BuildResultInit
call : RunBuild
call : OutputBuildResult
call : GetFinalReturnCode
echo ReturnCode is %ReturnCode%
cd %WorkingDir%
goto : End
: RunBuild
for %% j in ( %aConfigurationList% ) do (
set BuildFlag = 0
call : Build %% j
call : BuildCheck %% j
call : CopyDll %% j
)
goto : EOF
rem function for setting
rem ***********************************************
: BasicSetting
set DllFile = openh264.dll
set LibFile = openh264.lib
set PDBFile = openh264.pdb
2015-04-17 08:10:12 +02:00
set UTDllFile = ut.dll
2015-04-16 11:03:55 +02:00
set UTBinFile = codec_unittest.exe
set EncBinFile = h264enc.exe
set DecBinFile = h264dec.exe
goto : EOF
: PathSetting
set WorkingDir = %cd%
cd ..
set RootDir = %cd%
set BinDir = %RootDir% \bin
cd %WorkingDir%
goto : EOF
: EnvSetting
set MinGWPath = C:\MinGW\bin
set MsysPath = C:\MinGW\msys\1.0\bin
set GitPath = C:\Program Files (x86)\Git\bin
set GasScriptPath = C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin
set VC12Path = C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC
set VC11Path = C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC
set VC10Path = C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC
set VC9Path = C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC
set VC12ArmLib01 = C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\lib\store\arm
set VC12ArmLib02 = C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\lib\arm
set WP8KitLib = C:\Program Files (x86)\Windows Phone Kits\8.1\lib\arm
if exist " %VC9Path% " set VCPATH = %VC9Path%
if exist " %VC10Path% " set VCPATH = %VC10Path%
if exist " %VC11Path% " set VCPATH = %VC11Path%
if exist " %VC12Path% " set VCPATH = %VC12Path%
if " %vArcType% " == " i386 " set PATH = %MinGWPath% ;%MsysPath% ;%VCPATH% \bin;%GitPath% ;%PATH%
if " %vArcType% " == " x86_64 " set PATH = %MinGWPath% ;%MsysPath% ;%VCPATH% \bin;%GitPath% ;%PATH%
if " %vArcType% " == " arm " set PATH = %MinGWPath% ;%MsysPath% ;%VCPATH% \bin;%GitPath% ;%PATH%
rem if "%vArcType%" =="arm" set PATH=C:\MinGW\bin;C:\MinGW\msys\1.0\bin;C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin;C:\Program Files (x86)\Git\bin;%PATH%
if " %vArcType% " == " i386 " call " %VCPATH% \vcvarsall.bat " x86
if " %vArcType% " == " x86_64 " call " %VCPATH% \vcvarsall.bat " x64
if " %vArcType% " == " arm " call " %VCPATH% \vcvarsall.bat " x86_arm
if " %vArcType% " == " arm " call : WPSetting
echo PATH is %PATH%
echo LIB is %LIB%
goto : EOF
: WPSetting
set LIB = %VC12ArmLib01% ;%VC12ArmLib02% ;%WP8KitLib%
if not exist " %VC12Path% " (
echo VC12 does not exist,
echo ******************************************
echo VC12 does not exist,
echo which is needed for windows phone
echo ******************************************
goto : ErrorReturn
)
goto : EOF
: SetBuildOption
if " aaa %1 " == " aaa " (
set aConfigurationList = Debug Release
set vArcType = arm
set vOSType = msvc-wp
set vEnable64BitFlag = No
set vASMFlag = Yes
echo default setting
) else if "%1"=="Win32-Debug-C" (
set aConfigurationList = Debug
set vArcType = i386
set vOSType = msvc
set vEnable64BitFlag = No
set vASMFlag = No
echo Win32-Debug-C setting
) else if "%1"=="Win32-Release-C" (
set aConfigurationList = Release
set vArcType = i386
set vOSType = msvc
set vEnable64BitFlag = No
set vASMFlag = No
echo Win32-Release-C setting
) else if "%1"=="Win64-Debug-C" (
set aConfigurationList = Debug
set vArcType = x86_64
set vOSType = msvc
set vEnable64BitFlag = Yes
set vASMFlag = No
echo All-C setting
) else if "%1"=="Win64-Release-C" (
set aConfigurationList = Release
set vArcType = x86_64
set vOSType = msvc
set vEnable64BitFlag = Yes
set vASMFlag = No
echo Win64-Release-C setting
) else if "%1"=="ARM-Debug-C" (
set aConfigurationList = Debug
set vArcType = arm
set vOSType = msvc-wp
set vEnable64BitFlag = No
set vASMFlag = No
echo ARM-Debug-C setting
) else if "%1"=="ARM-Release-C" (
set aConfigurationList = Debug Release
set vArcType = arm
set vOSType = msvc-wp
set vEnable64BitFlag = No
set vASMFlag = No
echo ARM-Release-C setting
) else if "%1"=="Win32-All-C" (
set aConfigurationList = Debug Release
set vArcType = i386
set vOSType = msvc
set vEnable64BitFlag = No
set vASMFlag = No
echo Win32-All-C setting
) else if "%1"=="Win64-All-C" (
set aConfigurationList = Debug Release
set vArcType = x86_64
set vOSType = msvc
set vEnable64BitFlag = Yes
set vASMFlag = No
echo All-C setting
) else if "%1"=="ARM-All-C" (
set aConfigurationList = Debug Release
set vArcType = arm
set vOSType = msvc-wp
set vEnable64BitFlag = No
set vASMFlag = No
echo ARM-All-C setting
) else if "%1"=="Win32-Debug-ASM" (
set aConfigurationList = Debug
set vArcType = i386
set vOSType = msvc
set vEnable64BitFlag = No
set vASMFlag = Yes
echo Win32-Debug-ASM setting
) else if "%1"=="Win32-Release-ASM" (
set aConfigurationList = Release
set vArcType = i386
set vOSType = msvc
set vEnable64BitFlag = No
set vASMFlag = Yes
echo Win32-Release-ASM setting
) else if "%1"=="Win64-Debug-ASM" (
set aConfigurationList = Debug
set vArcType = x86_64
set vOSType = msvc
set vEnable64BitFlag = Yes
set vASMFlag = Yes
echo All-ASM setting
) else if "%1"=="Win64-Release-ASM" (
set aConfigurationList = Release
set vArcType = x86_64
set vOSType = msvc
set vEnable64BitFlag = Yes
set vASMFlag = Yes
echo Win64-Release-ASM setting
) else if "%1"=="ARM-Debug-ASM" (
set aConfigurationList = Debug
set vArcType = arm
set vOSType = msvc-wp
set vEnable64BitFlag = No
set vASMFlag = Yes
echo ARM-Debug-ASM setting
) else if "%1"=="ARM-Release-ASM" (
set aConfigurationList = Release
set vArcType = arm
set vOSType = msvc-wp
set vEnable64BitFlag = No
set vASMFlag = Yes
echo ARM-Release-ASM setting
) else if "%1"=="Win32-All-ASM" (
set aConfigurationList = Debug Release
set vArcType = i386
set vOSType = msvc
set vEnable64BitFlag = No
set vASMFlag = Yes
echo Win32-All-ASM setting
) else if "%1"=="Win64-All-ASM" (
set aConfigurationList = Debug Release
set vArcType = x86_64
set vOSType = msvc
set vEnable64BitFlag = Yes
set vASMFlag = Yes
echo All-ASM setting
) else if "%1"=="ARM-All-ASM" (
set aConfigurationList = Debug Release
set vArcType = arm
set vOSType = msvc-wp
set vEnable64BitFlag = No
set vASMFlag = Yes
echo ARM-All-ASM setting
) else (
call : help
goto : ErrorReturn
)
echo aConfigurationList is %aConfigurationList%
echo vArcType is %vArcType%
echo vOSType is %vOSType%
echo vEnable64BitFlag is %vEnable64BitFlag%
echo vASMFlag is %vASMFlag%
goto : EOF
rem function for build result
rem ***********************************************
: BuildResultInit
set BuildDebugFlag = 0
set BuildReleaseFlag = 0
set BuildDebugInfo = NULL
set BuildReleaseInfo = NULL
goto : EOF
: OutputBuildResult
echo BuildDebugFlag =%BuildDebugFlag%
echo BuildReleaseFlag =%BuildReleaseFlag%
echo BuildDebugInfo =%BuildDebugInfo%
echo BuildReleaseInfo =%BuildReleaseInfo%
goto : EOF
: BuildCheck
set vConfiguration = %1
if not %BuildFlag% == 0 (
if " %vConfiguration% " == " Debug " (
set BuildDebugFlag = 1
set BuildDebugInfo = " build debug--failed "
) else (
set BuildReleaseFlag = 1
set BuildReleaseInfo = " build release--failed "
)
) else (
if " %vConfiguration% " == " Debug " (
set BuildDebugFlag = 0
set BuildDebugInfo = " build debug--succeed "
) else (
set BuildReleaseFlag = 0
set BuildReleaseInfo = " build release--succeed "
)
)
goto : EOF
: GetFinalReturnCode
set aBuildFlagList = %BuildDebugFlag% %BuildReleaseFlag%
echo aBuildFlagList is %aBuildFlagList%
set ReturnCode = 0
for %% k in ( %aBuildFlagList% ) do (
if not %% k == 0 (
set ReturnCode = 1
)
)
goto : EOF
rem function for help
rem ***********************************************
: help
echo *******************************************************************************
echo usage:
echo AutoBuildForWPAndWindows.bat % Configuration %
echo --For debug version:
echo Win32-C-Only: AutoBuildForWPAndWindows.bat Win32-Debug-C
echo Win32-ASM: AutoBuildForWPAndWindows.bat Win32-Debug-ASM
echo Win64-C-Only: AutoBuildForWPAndWindows.bat Win64-Debug-C
echo Win64-ASM: AutoBuildForWPAndWindows.bat Win64-Debug-ASM
echo ARM-C-Only: AutoBuildForWPAndWindows.bat ARM-Debug-C
echo ARM-ASM: AutoBuildForWPAndWindows.bat ARM-Debug-ASM
echo --For release version:
echo Win32-C-Only: AutoBuildForWPAndWindows.bat Win32-Release-C
echo Win32-ASM: AutoBuildForWPAndWindows.bat Win32-Release-ASM
echo Win64-C-Only: AutoBuildForWPAndWindows.bat Win64-Release-C
echo Win64-ASM: AutoBuildForWPAndWindows.bat Win64-Release-ASM
echo ARM-C-Only: AutoBuildForWPAndWindows.bat ARM-Release-C
echo ARM-ASM: AutoBuildForWPAndWindows.bat ARM-Release-ASM
echo --For debug and release version:
echo Win32-C-Only: AutoBuildForWPAndWindows.bat Win32-All-C
echo Win32-ASM: AutoBuildForWPAndWindows.bat Win32-All-ASM
echo Win64-C-Only: AutoBuildForWPAndWindows.bat Win64-All-C
echo Win64-ASM: AutoBuildForWPAndWindows.bat Win64-All-ASM
echo ARM-C-Only: AutoBuildForWPAndWindows.bat ARM-All-C
echo ARM-ASM: AutoBuildForWPAndWindows.bat ARM-All-ASM
echo --For default:
echo AutoBuildForWPAndWindows.bat
echo ARM-All-ASM
echo *******************************************************************************
goto : EOF
rem function for build
rem ***********************************************
: Build
set vConfiguration = %1
cd %RootDir%
2015-04-20 11:21:30 +02:00
echo bash -c " make OS= %vOSType% ARCH= %vArcType% USE_ASM= %vASMFlag% BUILDTYPE= %vConfiguration% clean "
echo bash -c " make OS= %vOSType% ARCH= %vArcType% USE_ASM= %vASMFlag% BUILDTYPE= %vConfiguration% "
bash -c " make OS= %vOSType% ARCH= %vArcType% USE_ASM= %vASMFlag% BUILDTYPE= %vConfiguration% clean "
bash -c " make OS= %vOSType% ARCH= %vArcType% USE_ASM= %vASMFlag% BUILDTYPE= %vConfiguration% "
2015-04-16 11:03:55 +02:00
if not %ERRORLEVEL% == 0 (
set BuildFlag = 1
)
cd %WorkingDir%
goto : EOF
: CopyDll
set vConfiguration = %1
set vBuildOption = %2
cd %RootDir%
2015-04-17 15:04:50 +02:00
if " %vArcType% " == " arm " (
set vBinDirName = ARM
) else if "%vArcType%"=="i386" (
set vBinDirName = Win32
) else (
set vBinDirName = x64
)
set ArchDestDir = %BinDir% \%vBinDirName%
set FullDestDir = %BinDir% \%vBinDirName% \%vConfiguration%
2015-04-16 11:03:55 +02:00
echo copying dll files to destination folder...
echo FullDestDir is %FullDestDir%
2015-04-17 15:04:50 +02:00
if not exist %ArchDestDir% md %ArchDestDir%
2015-04-16 11:03:55 +02:00
if exist %FullDestDir% (
rd /s /q %FullDestDir%
)
md %FullDestDir%
echo current dir is:
cd
2015-04-17 15:04:50 +02:00
set DestDir = bin/%vBinDirName% /%vConfiguration%
2015-04-16 11:03:55 +02:00
echo DestDir is %DestDir%
2015-04-17 08:10:12 +02:00
if " %vOSType% " == " msvc-wp " (
set aFileList = %DllFile% %LibFile% %PDBFile% %UTDllFile%
2015-04-17 14:07:37 +02:00
) else (
2015-04-17 08:10:12 +02:00
set aFileList = %DllFile% %LibFile% %PDBFile% %UTBinFile% %EncBinFile% %DecBinFile%
)
2015-04-16 11:03:55 +02:00
for %% k in ( %aFileList% ) do (
bash -c " cp -f %% k %DestDir% "
)
cd %WorkingDir%
goto : EOF
: ErrorReturn
endlocal
exit /b 2
: End
endlocal
exit /b %ReturnCode%