mirror of https://github.com/BOINC/boinc.git
289 lines
9.7 KiB
Batchfile
289 lines
9.7 KiB
Batchfile
@IF "%BUILDDBG%"=="TRUE" ( ECHO ON ) ELSE ( ECHO OFF )
|
|
rem Berkeley Open Infrastructure for Network Computing
|
|
rem http://boinc.berkeley.edu
|
|
rem Copyright (C) 2009 University of California
|
|
rem
|
|
rem This is free software; you can redistribute it and/or
|
|
rem modify it under the terms of the GNU Lesser General Public
|
|
rem License as published by the Free Software Foundation;
|
|
rem either version 3 of the License, or (at your option) any later version.
|
|
rem
|
|
rem This software is distributed in the hope that it will be useful,
|
|
rem but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
rem MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
rem See the GNU Lesser General Public License for more details.
|
|
rem
|
|
rem You should have received a copy of the GNU Lesser General Public License
|
|
rem along with BOINC. If not, see <http://www.gnu.org/licenses/>.
|
|
rem
|
|
|
|
rem Provide the groundwork for an automated build environment.
|
|
|
|
ECHO Initializing BOINC Build Environment for Windows
|
|
|
|
rem ***** Construct Build Environment Root Paths *****
|
|
rem
|
|
SET BUILDDRIVE=%~d0
|
|
SET BUILDROOT=%~dps0
|
|
SET BUILDROOT=%BUILDROOT:\win_bu~1\=%
|
|
|
|
rem Detect Branch Name
|
|
PUSHD %BUILDROOT%\..
|
|
FOR /D %%I IN (*.*) DO (
|
|
IF /I "%CD%\%%I" == "%BUILDROOT%" SET BUILDBRANCHNAME=%%I
|
|
)
|
|
POPD
|
|
|
|
|
|
rem ***** Verify Parameters *****
|
|
rem
|
|
:VERIFYNEXTPARAM
|
|
IF /I "%1"=="/?" GOTO :USAGE
|
|
IF /I "%1"=="-?" GOTO :USAGE
|
|
IF /I "%1"=="/HELP" GOTO :USAGE
|
|
IF /I "%1"=="-HELP" GOTO :USAGE
|
|
IF /I "%1"=="TYPE" GOTO :PARSEPARAM
|
|
IF /I "%1"=="PLATFORM" GOTO :PARSEPARAM
|
|
IF /I "%1"=="EXEC" GOTO :PARSEPARAM
|
|
IF NOT "%1"=="" GOTO :USAGE
|
|
IF "%1"=="" GOTO :VALIDATEPARAMS
|
|
|
|
rem ***** Parse Parameters *****
|
|
rem
|
|
:PARSEPARAM
|
|
IF /I "%1"=="TYPE" SET _ArgBuildType=%2
|
|
IF /I "%1"=="PLATFORM" SET _ArgBuildPlatform=%2
|
|
IF /I "%1"=="EXEC" (
|
|
rem The exec command has to be the last of the build arguments
|
|
rem everything after it should be parameters for the command.
|
|
SET _ArgExec=%2
|
|
SET _ArgExecParam=%~3
|
|
GOTO :VALIDATEPARAMS
|
|
)
|
|
SHIFT
|
|
SHIFT
|
|
GOTO :VERIFYNEXTPARAM
|
|
|
|
rem ***** Validate Parameters *****
|
|
rem
|
|
:VALIDATEPARAMS
|
|
rem A little bit of batchfile magic to remove double quotes
|
|
rem which would be sent from the automated build tools.
|
|
FOR /F %%I IN ("%_ArgBuildType%") DO SET _ArgBuildType=%%~I
|
|
FOR /F %%I IN ("%_ArgBuildPlatform%") DO SET _ArgBuildPlatform=%%~I
|
|
|
|
IF /I "%_ArgBuildType%"=="" GOTO :USAGE
|
|
IF /I "%_ArgBuildPlatform%"=="" GOTO :USAGE
|
|
IF /I "%_ArgBuildPlatform%" == "x64" SET _ArgBuildPlatform=amd64
|
|
IF /I "%_ArgBuildPlatform%" == "Win32" SET _ArgBuildPlatform=x86
|
|
|
|
SET BUILDTYPE=%_ArgBuildType%
|
|
SET BUILDPLATFORM=%_ArgBuildPlatform%
|
|
|
|
|
|
rem ***** Software Detection *****
|
|
rem
|
|
IF EXIST "%VS80COMNTOOLS%\vsvars32.bat" (
|
|
CALL "%VS80COMNTOOLS%\vsvars32.bat" > NUL: 2> NUL:
|
|
SET BUILDCOMPILERDETECTED=vs2005
|
|
GOTO :SOFTDETECTIONCOMPLETE
|
|
)
|
|
IF EXIST "%VS90COMNTOOLS%\vsvars32.bat" (
|
|
CALL "%VS90COMNTOOLS%\vsvars32.bat" > NUL: 2> NUL:
|
|
SET BUILDCOMPILERDETECTED=vs2008
|
|
GOTO :SOFTDETECTIONCOMPLETE
|
|
)
|
|
IF EXIST "%VS100COMNTOOLS%\vsvars32.bat" (
|
|
CALL "%VS100COMNTOOLS%\vsvars32.bat" > NUL: 2> NUL:
|
|
SET BUILDCOMPILERDETECTED=vs2010
|
|
GOTO :SOFTDETECTIONCOMPLETE
|
|
)
|
|
|
|
:SOFTDETECTIONCOMPLETE
|
|
IF "%VCINSTALLDIR%"=="" (
|
|
ECHO Software NOT Detected: Microsoft Visual Studio 2005/2008/2010...
|
|
EXIT /B 1
|
|
)
|
|
|
|
|
|
rem ***** Build Tools Detection *****
|
|
rem
|
|
SET BUILDTOOLSNAME=boinc_depends_win_%BUILDCOMPILERDETECTED%
|
|
SET BUILDTOOLSROOT=%BUILDROOT%\..\%BUILDTOOLSNAME%
|
|
IF EXIST %BUILDTOOLSROOT%\win_build\subversion GOTO :BUILDTOOLSROOTVALIDATED
|
|
|
|
|
|
rem We must be in a branch and we can't currently use subversion commands
|
|
rem to determine where we are to find our build tools. Use some batch
|
|
rem file magic to parse the branch name from the name of the directory
|
|
rem hosting the build tree. This can be different than just the version
|
|
rem number, we have had to rev the branch name for certain releases due
|
|
rem to late changing features. 6.6 vs 6.6a
|
|
FOR /F "usebackq tokens=3,* delims=_" %%I IN ('%BUILDBRANCHNAME%') DO (
|
|
SET BUILDTOOLSNAME=boinc_depends_win_%BUILDCOMPILERDETECTED%_%%J
|
|
SET BUILDTOOLSROOT=%BUILDROOT%\..\%BUILDTOOLSNAME%
|
|
)
|
|
|
|
IF NOT EXIST %BUILDTOOLSROOT%\win_build\subversion (
|
|
ECHO Software NOT Detected: Build Tools...
|
|
EXIT /B 2
|
|
)
|
|
|
|
:BUILDTOOLSROOTVALIDATED
|
|
FOR /F %%I IN ("%BUILDTOOLSROOT%") DO SET BUILDTOOLSROOT=%%~fI
|
|
|
|
|
|
rem ***** Reset Variables to start out with a clean environment *****
|
|
rem
|
|
SET PATH=%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem
|
|
SET INCLUDE=
|
|
SET LIB=
|
|
SET LIBPATH=
|
|
|
|
rem Which build environment should we use?
|
|
IF /I NOT "%PROCESSOR_ARCHITECTURE%"=="%BUILDPLATFORM%" GOTO :BUILDENVCROSS
|
|
|
|
rem Building a native binary for the current platform.
|
|
:BUILDENVNATIVE
|
|
|
|
IF /I NOT "%BUILDPLATFORM%"=="x86" (
|
|
CALL "%VCINSTALLDIR%\bin\%PROCESSOR_ARCHITECTURE%\vcvars%PROCESSOR_ARCHITECTURE%.bat" > NUL: 2> NUL:
|
|
IF ERRORLEVEL 1 GOTO :BUILDENVFAILURE
|
|
) ELSE (
|
|
CALL "%VCINSTALLDIR%\bin\vcvars32.bat" > NUL: 2> NUL:
|
|
IF ERRORLEVEL 1 GOTO :BUILDENVFAILURE
|
|
)
|
|
|
|
GOTO :BUILDENVDONE
|
|
|
|
rem Building a binary for another platform.
|
|
:BUILDENVCROSS
|
|
|
|
IF /I NOT "%BUILDPLATFORM%"=="x86" (
|
|
CALL "%VCINSTALLDIR%\bin\%PROCESSOR_ARCHITECTURE%_%BUILDPLATFORM%\vcvars%PROCESSOR_ARCHITECTURE%_%BUILDPLATFORM%.bat" > NUL: 2> NUL:
|
|
IF ERRORLEVEL 1 GOTO :BUILDENVFAILURE
|
|
) ELSE (
|
|
CALL "%VCINSTALLDIR%\bin\vcvars32.bat" > NUL: 2> NUL:
|
|
IF ERRORLEVEL 1 GOTO :BUILDENVFAILURE
|
|
)
|
|
|
|
:BUILDENVDONE
|
|
|
|
rem Convert the OS Platform into a Visual Studio compatible platform
|
|
IF /I "%BUILDPLATFORM%"=="x86" SET VSPLATFORM=Win32
|
|
IF /I "%BUILDPLATFORM%"=="amd64" SET VSPLATFORM=x64
|
|
IF /I "%BUILDPLATFORM%"=="ia64" SET VSPLATFORM=Itanium
|
|
|
|
|
|
rem ***** Standard Developer Environment *****
|
|
rem
|
|
|
|
rem Add standard shell scripts executables to the path
|
|
SET PATH=%BUILDROOT%\win_build;%BUILDROOT%\win_build\%PROCESSOR_ARCHITECTURE%;%PATH%
|
|
SET PATH=%BUILDTOOLSROOT%\win_build;%BUILDTOOLSROOT%\win_build\%PROCESSOR_ARCHITECTURE%;%PATH%
|
|
|
|
rem Add Perl to the path
|
|
SET PATH=%BUILDTOOLSROOT%\win_build\perl;%BUILDTOOLSROOT%\win_build\perl\%PROCESSOR_ARCHITECTURE%\bin;%PATH%
|
|
|
|
rem Add subversion source control to the path
|
|
SET SVN_EDITOR=notepad.exe
|
|
SET PATH=%BUILDTOOLSROOT%\win_build\subversion;%BUILDTOOLSROOT%\win_build\subversion\%PROCESSOR_ARCHITECTURE%\bin;%PATH%
|
|
|
|
rem Specify build output directory
|
|
SET BUILDOUTPUT=%BUILDROOT%\win_build\build\%VSPLATFORM%\%BUILDTYPE%
|
|
|
|
rem Add source server environment variables
|
|
SET SRCSRV_SYSTEM=svn
|
|
SET SRCSRV_INI=%BUILDTOOLSROOT%\win_build\srcsrv.ini
|
|
SET SRCSRV_SYMBOLS=%BUILDROOT%\win_build\build\%VSPLATFORM%\%BUILDTYPE%
|
|
SET SRCSRV_SOURCE=%BUILDROOT%
|
|
|
|
rem Add deployable symbol store environment variables
|
|
SET BUILDSYMBOLSTORE=%BUILDTOOLSROOT%\Developr\%USERNAME%\symstore
|
|
|
|
rem Add _NT_SYMBOL_PATH to the environment
|
|
SET _NT_SYMBOL_PATH=%BUILDSYMBOLSTORE%
|
|
SET _NT_SYMBOL_PATH=%_NT_SYMBOL_PATH%;srv*%BUILDTOOLSROOT%\Developr\%USERNAME%\symbols*http://msdl.microsoft.com/download/symbols
|
|
SET _NT_SYMBOL_PATH=%_NT_SYMBOL_PATH%;srv*%BUILDTOOLSROOT%\Developr\%USERNAME%\symbols*http://boinc.berkeley.edu/symstore/
|
|
|
|
rem Add standard macros to the environment
|
|
DOSKEY /MACROFILE="%BUILDTOOLSROOT%\developr\generic.mac"
|
|
|
|
rem Add directory traversal macros to the environment
|
|
DOSKEY /MACROFILE="%BUILDTOOLSROOT%\developr\tree.mac"
|
|
|
|
rem Populate environmental version information
|
|
FOR /F "usebackq tokens=1,2,3 delims=." %%I IN (`TYPE "%BUILDROOT%\version.log"`) DO (
|
|
SET BUILDVERSIONMAJOR=%%I
|
|
SET BUILDVERSIONMINOR=%%J
|
|
SET BUILDVERSIONREVISION=%%K
|
|
)
|
|
|
|
rem Adjust command processor window title
|
|
TITLE BOINC Build Environment for Windows %BUILDVERSIONMAJOR%.%BUILDVERSIONMINOR% (%BUILDTYPE%/%BUILDPLATFORM%)
|
|
|
|
rem ***** Customized Developer Environment *****
|
|
rem
|
|
SET BUILDHOMEDIR=%BUILDTOOLSROOT%\Developr\%USERNAME%
|
|
IF NOT EXIST %BUILDHOMEDIR% MKDIR %BUILDHOMEDIR%
|
|
|
|
rem Create a default directory layout
|
|
IF NOT EXIST %BUILDHOMEDIR%\bin mkdir %BUILDHOMEDIR%\bin
|
|
IF NOT EXIST %BUILDHOMEDIR%\bin\%PROCESSOR_ARCHITECTURE% mkdir %BUILDHOMEDIR%\bin\%PROCESSOR_ARCHITECTURE%
|
|
IF NOT EXIST %BUILDHOMEDIR%\temp mkdir %BUILDHOMEDIR%\temp
|
|
IF NOT EXIST %BUILDHOMEDIR%\symbols mkdir %BUILDHOMEDIR%\symbols
|
|
IF NOT EXIST %BUILDHOMEDIR%\symstore mkdir %BUILDHOMEDIR%\symstore
|
|
|
|
rem Add custom shell scripts to the path
|
|
SET PATH=%BUILDHOMEDIR%\bin;%BUILDHOMEDIR%\bin\%PROCESSOR_ARCHITECTURE%;%PATH%
|
|
|
|
rem Add custom macros to the environment
|
|
IF EXIST %BUILDHOMEDIR%\custom.mac (
|
|
DOSKEY /MACROFILE=%BUILDHOMEDIR%\custom.mac
|
|
)
|
|
|
|
rem Execute a custom shell script as defined by the developer
|
|
IF EXIST %BUILDHOMEDIR%\customenv.cmd (
|
|
CALL %BUILDHOMEDIR%\customenv.cmd
|
|
)
|
|
|
|
|
|
rem ***** Execute Command Line Script *****
|
|
rem
|
|
IF /I NOT "%_ArgExec%"=="" (
|
|
ECHO Executing: %_ArgExec% %_ArgExecParam%
|
|
ECHO.
|
|
CALL %_ArgExec% %_ArgExecParam%
|
|
IF ERRORLEVEL 1 EXIT /B 10
|
|
)
|
|
|
|
|
|
rem ***** Cleanup all the temporary variables *****
|
|
rem
|
|
FOR /F "delims==" %%I IN ('SET _Arg') DO SET %%I=
|
|
|
|
|
|
rem ***** All Done *****
|
|
rem
|
|
|
|
GOTO :EOF
|
|
|
|
:BUILDENVFAILURE
|
|
|
|
ECHO Failed to setup the requested build environment.
|
|
ECHO Commandline: %*
|
|
ECHO.
|
|
|
|
:USAGE
|
|
|
|
ECHO Usage: buildenv.cmd TYPE ^<type^> PLATFORM ^<platform^> [Optional Commands]
|
|
ECHO.
|
|
ECHO Commands:
|
|
ECHO TYPE: Which build environment are you building executables for.
|
|
ECHO Current Values: Release/Debug
|
|
ECHO PLATFORM: Which platform are you building for.
|
|
ECHO Current Values: x86/amd64/ia64
|
|
ECHO.
|
|
|
|
GOTO :EOF
|