现在的位置: 首页 > 综合 > 正文

[BuildRelease]Mozilla Build Tools(自动设置VC环境)

2012年06月16日 ⁄ 综合 ⁄ 共 8198字 ⁄ 字号 评论关闭

来自Mozilla build tools下的脚本:

一 guess-msvc.bat

REM -*- Mode: fundamental; tab-width: 8; indent-tabs-mode: 1 -*-
@ECHO OFF

set CYGWIN=
if not defined MOZ_NO_RESET_PATH (
    
set PATH=%SystemRoot%\System32;%SystemRoot%;%SystemRoot%\System32\Wbem
)

REM if DISPLAY is set, rxvt attempts to load libX11.dll and fails to start
REM
 (see mozilla bug 376828)
SET DISPLAY=

SET INCLUDE=
SET LIB=

SET WINCURVERKEY=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion
REG QUERY 
"%WINCURVERKEY%" /"ProgramFilesDir (x86)" >nul 2>nul
if %ERRORLEVEL% EQU 0 (
  
SET WIN64=1
) else (
  
SET WIN64=0
)

if "%WIN64%" == "1" (
  
SET MSVCROOTKEY=HKLM\SOFTWARE\Wow6432Node\Microsoft\VisualStudio
  
SET MSVCEXPROOTKEY=HKLM\SOFTWARE\Wow6432Node\Microsoft\VCExpress
) else (
  
SET MSVCROOTKEY=HKLM\SOFTWARE\Microsoft\VisualStudio
  
SET MSVCEXPROOTKEY=HKLM\SOFTWARE\Microsoft\VCExpress
)

SET MSVC6KEY=%MSVCROOTKEY%\6.0\Setup\Microsoft Visual C++
SET MSVC71KEY=%MSVCROOTKEY%\7.1\Setup\VC
SET MSVC8KEY=%MSVCROOTKEY%\8.0\Setup\VC
SET MSVC8EXPRESSKEY=%MSVCEXPROOTKEY%\8.0\Setup\VC
SET MSVC9KEY=%MSVCROOTKEY%\9.0\Setup\VC
SET MSVC9EXPRESSKEY=%MSVCEXPROOTKEY%\9.0\Setup\VC

REM First see if we can find MSVC, then set the variable
REM
 NOTE: delims=<tab><space>
REM
 NOTE: run the initial REQ QUERY outside of the if() to set ERRORLEVEL correctly

REG QUERY 
"%MSVC6KEY%" /v ProductDir >nul 2>nul
if "%VC6DIR%"=="" (
  
IF %ERRORLEVEL% EQU 0 (
    
FOR /"tokens=2* delims=     " %%A IN ('REG QUERY "%MSVC6KEY%" /v ProductDir') DO SET VC6DIR=%%B
  
)
)

REG QUERY "%MSVC71KEY%" /v ProductDir >nul 2>nul
if "%VC71DIR%"=="" (
  
IF %ERRORLEVEL% EQU 0 (
    
FOR /"tokens=2* delims=     " %%A IN ('REG QUERY "%MSVC71KEY%" /v ProductDir') DO SET VC71DIR=%%B
  
)
)

REG QUERY "%MSVC8KEY%" /v ProductDir >nul 2>nul
if "%VC8DIR%"=="" (
  
IF %ERRORLEVEL% EQU 0 (
    
FOR /"tokens=2* delims=     " %%A IN ('REG QUERY "%MSVC8KEY%" /v ProductDir') DO SET VC8DIR=%%B
  
)
)

REG QUERY "%MSVC8EXPRESSKEY%" /v ProductDir >nul 2>nul
if "%VC8EXPRESSDIR%"=="" (
  
IF %ERRORLEVEL% EQU 0 (
    
FOR /"tokens=2* delims=     " %%A IN ('REG QUERY "%MSVC8EXPRESSKEY%" /v ProductDir') DO SET VC8EXPRESSDIR=%%B
  
)
)

REG QUERY "%MSVC9KEY%" /v ProductDir >nul 2>nul
if "%VC9DIR%"=="" (
  
REM Newer SDKs (6.1, 7.0) install the VC9 compilers and set this key,
  REM but they're functionally equivalent to the VC9 Express compilers.
  IF %ERRORLEVEL% EQU 0 (
    
FOR /"tokens=2* delims=     " %%A IN ('REG QUERY "%MSVC9KEY%" /v ProductDir') DO SET TEMPVC9DIR=%%B
  
)
)

REM We'll double-check for a VC9 Pro install here per the comment above.
REG QUERY "%MSVCROOTKEY%\9.0\InstalledProducts\Microsoft Visual C++" >nul 2>nul
if NOT "%TEMPVC9DIR%"=="" (
  
IF %ERRORLEVEL% EQU 0 (
    
SET "VC9DIR=%TEMPVC9DIR%"
  
) ELSE (
    
SET "VC9EXPRESSDIR=%TEMPVC9DIR%"
  
)
)

REG QUERY "%MSVC9EXPRESSKEY%" /v ProductDir >nul 2>nul
if "%VC9EXPRESSDIR%"=="" (
  
IF %ERRORLEVEL% EQU 0 (
    
FOR /"tokens=2* delims=     " %%A IN ('REG QUERY "%MSVC9EXPRESSKEY%" /v ProductDir') DO SET VC9EXPRESSDIR=%%B
  
)
)

REM Look for Installed SDKs:
SET SDKROOTKEY=HKLM\SOFTWARE\Microsoft\MicrosoftSDK\InstalledSDKs
SET SDK2003SP1KEY=%SDKROOTKEY%\8F9E5EF3-A9A5-491B-A889-C58EFFECE8B3
SET SDK2003SP2KEY=%SDKROOTKEY%\D2FF9F89-8AA2-4373-8A31-C838BF4DBBE1
SET SDK6KEY=HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v6.0
REM 6.0A comes with Visual C++ 2008. If you have 6.0 installed, even
REM
 the express edition will update you to 6.0A
SET SDK6AKEY=HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v6.0A
SET SDK61KEY=HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v6.1
SET SDK7KEY=HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0

REM Just a base value to compare against
SET SDKVER=0
SET SDKMINORVER=0

REG QUERY "%SDK7KEY%" /v InstallationFolder >nul 2>nul
if "%SDKDIR%"=="" (
  
IF %ERRORLEVEL% EQU 0 (
    
FOR /"tokens=2* usebackq delims=     " %%A IN (`REG QUERY "%SDK7KEY%" /v InstallationFolder`) DO SET SDKDIR=%%B
    
SET SDKVER=7
  
)
)

REG QUERY "%SDK61KEY%" /v InstallationFolder >nul 2>nul
if "%SDKDIR%"=="" (
  
IF %ERRORLEVEL% EQU 0 (
    
FOR /"tokens=2* usebackq delims=     " %%A IN (`REG QUERY "%SDK61KEY%" /v InstallationFolder`) DO SET SDKDIR=%%B
    
SET SDKVER=6
    
SET SDKMINORVER=1
  
)
)

REG QUERY "%SDK6AKEY%" /v InstallationFolder >nul 2>nul
if "%SDKDIR%"=="" (
  
IF %ERRORLEVEL% EQU 0 (
    
FOR /"tokens=2* usebackq delims=     " %%A IN (`REG QUERY "%SDK6AKEY%" /v InstallationFolder`) DO SET SDKDIR=%%B
    
SET SDKVER=6
    
REM insane, I know!
    SET SDKMINORVER=0A
  
)
)

REG QUERY "%SDK6KEY%" /v InstallationFolder >nul 2>nul
if "%SDKDIR%"=="" (
  
IF %ERRORLEVEL% EQU 0 (
    
FOR /"tokens=2* usebackq delims=     " %%A IN (`REG QUERY "%SDK6KEY%" /v InstallationFolder`) DO SET SDKDIR=%%B
    
SET SDKVER=6
  
)
)

REM The Vista SDK (6.0 and 6.0A) ships with a VC8 Express install

if "%SDKVER%"=="6" (
  
if "%VC8EXPRESSDIR%"=="" (
    
SET VC8EXPRESSDIR=%SDKDIR%VC\
  
)
)

REG QUERY "%SDK2003SP2KEY%" /"Install Dir" >nul 2>nul
if "%PSDKDIR%"=="" (
  
IF %ERRORLEVEL% EQU 0 (
    
FOR /"tokens=3* delims=     " %%A IN ('REG QUERY "%SDK2003SP2KEY%" /"Install Dir"') DO SET PSDKDIR=%%B
    
REM arbitrary, but works for me
    SET PSDKVER=5
  
)
)

REG QUERY "%SDK2003SP1KEY%" /"Install Dir" >nul 2>nul
if "%PSDKDIR%"=="" (
  
IF %ERRORLEVEL% EQU 0 (
    
FOR /"tokens=3* delims=     " %%A IN ('REG QUERY "%SDK2003SP1KEY%" /"Install Dir"') DO SET PSDKDIR=%%B
    
SET PSDKVER=4
  
)
)

if defined %VC6DIR% (ECHO Visual C++ 6 directory: %VC6DIR%)
if defined %VC71DIR% (ECHO Visual C++ 7.1 directory: %VC71DIR%)
if defined %VC8DIR% (ECHO Visual C++ 8 directory: %VC8DIR%)
if defined %VC8EXPRESSDIR% (ECHO Visual C++ 8 Express directory: %VC8EXPRESSDIR%)
if defined %VC9DIR% (ECHO Visual C++ 9 directory: %VC9DIR%)
if defined %VC9EXPRESSDIR% (ECHO Visual C++ 9 Express directory: %VC9EXPRESSDIR%)
if "%SDKDIR%"=="" (
    
SET SDKDIR=%PSDKDIR%
    
SET SDKVER=%PSDKVER%
) else (
    
ECHO Windows SDK directory: %SDKDIR%
    
ECHO Windows SDK version: %SDKVER%.%SDKMINORVER%
)
if not "%PSDKDIR%"=="" (
    
ECHO Platform SDK directory: %PSDKDIR%
    
ECHO Platform SDK version: %PSDKVER%
)

 

 

二 start-msvc9.bat

@echo off

SET MOZ_MSVCVERSION=9
SET MOZBUILDDIR=%~dp0
SET MOZILLABUILD=%MOZBUILDDIR%

echo "Mozilla tools directory: %MOZBUILDDIR%"

REM Get MSVC paths
call "%MOZBUILDDIR%guess-msvc.bat"

REM Use the "new" moztools-static
set MOZ_TOOLS=%MOZBUILDDIR%moztools

rem append moztools to PATH
SET PATH=%PATH%;%MOZ_TOOLS%\bin

if "%VC9DIR%"=="" (
    
if "%VC9EXPRESSDIR%"=="" (
        
ECHO "Microsoft Visual C++ version 9 (2008) was not found. Exiting."
        
pause
        
EXIT /1
    
)

    if "%SDKDIR%"=="" (
        
ECHO "Microsoft Platform SDK was not found. Exiting."
        
pause
        
EXIT /1
    
)

    rem Prepend MSVC paths
    call "%VC9EXPRESSDIR%\Bin\vcvars32.bat"

    rem Don't set SDK paths in this block, because blocks are early-evaluated.

    
rem Fix problem with VC++Express Edition
    if "%SDKVER%" GEQ "6" (
        
rem SDK Ver.6.0 (Windows Vista SDK) and newer
        rem do not contain ATL header files.
        rem We need to use the Platform SDK's ATL header files.
        SET USEPSDKATL=1
    
)
    
rem SDK ver.6.0 does not contain OleAcc.idl
    rem We need to use the Platform SDK's OleAcc.idl
    if "%SDKVER%" == "6" (
        
if "%SDKMINORVER%" == "0" (
          
SET USEPSDKIDL=1
        
)
    
)
) else (
    
rem Prepend MSVC paths
    rem If the SDK is Win2k8, we want to use it.
    rem The Win7 SDK (or newer) should automatically integrate itself into vcvars32.bat
    if "%SDKVER%" == "6" (
        
if "%SDKMINORVER%" == "1" (
          
SET USESDK=1
        
)
    
)
    
if "%USESDK%" == "0" (
        
ECHO Using VC 2008 built-in SDK
    
)
    
call "%VC9DIR%\Bin\vcvars32.bat"
)

if "%VC9DIR%"=="" (
    
rem Prepend SDK paths - Don't use the SDK SetEnv.cmd because it pulls in
    rem random VC paths which we don't want.
    rem Add the atlthunk compat library to the end of our LIB
    set "PATH=%SDKDIR%\bin;%PATH%"
    
set "LIB=%SDKDIR%\lib;%LIB%;%MOZBUILDDIR%atlthunk_compat"

    if "%USEPSDKATL%"=="1" (
        
if "%USEPSDKIDL%"=="1" (
            
set "INCLUDE=%SDKDIR%\include;%PSDKDIR%\include\atl;%PSDKDIR%\include;%INCLUDE%"
        
) else (
            
set "INCLUDE=%SDKDIR%\include;%PSDKDIR%\include\atl;%INCLUDE%"
        
)
    
) else (
        
if "%USEPSDKIDL%"=="1" (
            
set "INCLUDE=%SDKDIR%\include;%SDKDIR%\include\atl;%PSDKDIR%\include;%INCLUDE%"
        
) 

抱歉!评论已关闭.