commit aec6689de7305d025a38fe0af7caa357b5096b96 Author: Shondoit Walker shondoit@gmail.com Date: Wed Nov 9 22:49:02 2011 +0100
Patching for mozilla-build. start-msvc.patch will change mozilla-build to use our altered guess-msvc.bat and perform 'make -f client.mk' if a folder is given. guess-msvc-x64.bat is the standard guess-msvc.bat changed to be 64-bit aware. It redirects the registry queries to the required view of the registry. --- build-scripts/patch-mozilla-build.sh | 6 + .../mozilla-build/guess-msvc-x64.bat | 215 ++++++++++++++++++++ src/current-patches/mozilla-build/start-msvc.patch | 21 ++ 3 files changed, 242 insertions(+), 0 deletions(-)
diff --git a/build-scripts/patch-mozilla-build.sh b/build-scripts/patch-mozilla-build.sh new file mode 100644 index 0000000..ba64629 --- /dev/null +++ b/build-scripts/patch-mozilla-build.sh @@ -0,0 +1,6 @@ +#!/bin/sh +#Patch the start file for the specified version. + +MSVC_VER=$1 + +patch start-msvc$MSVC_VER.bat -t < start-msvc.patch || exit 1 diff --git a/src/current-patches/mozilla-build/guess-msvc-x64.bat b/src/current-patches/mozilla-build/guess-msvc-x64.bat new file mode 100644 index 0000000..71a1f60 --- /dev/null +++ b/src/current-patches/mozilla-build/guess-msvc-x64.bat @@ -0,0 +1,215 @@ +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= + +IF EXIST %WINDIR%\SysNative\reg.exe ( + SET REGNATIVE=%WINDIR%\SysNative\reg.Exe + SET REG32=%WINDIR%\System32\reg.exe +) ELSE ( + SET REGNATIVE=%WINDIR%\System32\reg.exe + IF EXIST %WINDIR%\SysWOW64\reg.exe ( + SET REG32=%WINDIR%\SysWOW64\reg.exe + ) ELSE ( + SET REG32=%WINDIR%\System32\reg.exe + ) +) + +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 +SET MSVC10KEY=%MSVCROOTKEY%\10.0\Setup\VC +SET MSVC10EXPRESSKEY=%MSVCEXPROOTKEY%\10.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 + +%REG32% QUERY "%MSVC6KEY%" /v ProductDir >nul 2>nul +if "%VC6DIR%"=="" ( + IF %ERRORLEVEL% EQU 0 ( + FOR /F "tokens=2* delims= " %%A IN ('%REG32% QUERY "%MSVC6KEY%" /v ProductDir') DO SET VC6DIR=%%B + ) +) + +%REG32% QUERY "%MSVC71KEY%" /v ProductDir >nul 2>nul +if "%VC71DIR%"=="" ( + IF %ERRORLEVEL% EQU 0 ( + FOR /F "tokens=2* delims= " %%A IN ('%REG32% QUERY "%MSVC71KEY%" /v ProductDir') DO SET VC71DIR=%%B + ) +) + +%REG32% QUERY "%MSVC8KEY%" /v ProductDir >nul 2>nul +if "%VC8DIR%"=="" ( + IF %ERRORLEVEL% EQU 0 ( + FOR /F "tokens=2* delims= " %%A IN ('%REG32% QUERY "%MSVC8KEY%" /v ProductDir') DO SET VC8DIR=%%B + ) +) + +%REG32% QUERY "%MSVC8EXPRESSKEY%" /v ProductDir >nul 2>nul +if "%VC8EXPRESSDIR%"=="" ( + IF %ERRORLEVEL% EQU 0 ( + FOR /F "tokens=2* delims= " %%A IN ('%REG32% QUERY "%MSVC8EXPRESSKEY%" /v ProductDir') DO SET VC8EXPRESSDIR=%%B + ) +) + +%REG32% 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 /F "tokens=2* delims= " %%A IN ('%REG32% QUERY "%MSVC9KEY%" /v ProductDir') DO SET TEMPVC9DIR=%%B + ) +) + +REM We'll double-check for a VC9 Pro install here per the comment above. +%REG32% 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%" + ) +) + +%REG32% QUERY "%MSVC9EXPRESSKEY%" /v ProductDir >nul 2>nul +if "%VC9EXPRESSDIR%"=="" ( + IF %ERRORLEVEL% EQU 0 ( + FOR /F "tokens=2* delims= " %%A IN ('%REG32% QUERY "%MSVC9EXPRESSKEY%" /v ProductDir') DO SET VC9EXPRESSDIR=%%B + ) +) + +%REG32% QUERY "%MSVC10KEY%" /v ProductDir >nul 2>nul +if "%VC10DIR%"=="" ( + IF %ERRORLEVEL% EQU 0 ( + FOR /F "tokens=2* delims= " %%A IN ('%REG32% QUERY "%MSVC10KEY%" /v ProductDir') DO SET VC10DIR=%%B + ) +) + +%REG32% QUERY "%MSVC10EXPRESSKEY%" /v ProductDir >nul 2>nul +if "%VC8EXPRESSDIR%"=="" ( + IF %ERRORLEVEL% EQU 0 ( + FOR /F "tokens=2* delims= " %%A IN ('%REG32% QUERY "%MSVC10EXPRESSKEY%" /v ProductDir') DO SET VC10EXPRESSDIR=%%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 + +REM Support a maximum version of the Windows SDK to use, to support older +REM branches and older compilers. (Note that this is unrelated to the configure +REM option on which version of Windows to support.) +IF NOT DEFINED MOZ_MAXWINSDK ( + REM Maximum WinSDK version to use; 2 digits for major, 2 for minor, 2 for revision + REM Revivsion is A = 01, B = 02, etc. + SET MOZ_MAXWINSDK=999999 +) + + +%REGNATIVE% QUERY "%SDK7KEY%" /v InstallationFolder >nul 2>nul +if "%SDKDIR%"=="" IF %MOZ_MAXWINSDK% GEQ 70000 ( + IF %ERRORLEVEL% EQU 0 ( + FOR /F "tokens=2* usebackq delims= " %%A IN (`%REGNATIVE% QUERY "%SDK7KEY%" /v InstallationFolder`) DO SET SDKDIR=%%B + SET SDKVER=7 + ) +) + +%REGNATIVE% QUERY "%SDK61KEY%" /v InstallationFolder >nul 2>nul +if "%SDKDIR%"=="" IF %MOZ_MAXWINSDK% GEQ 60100 ( + IF %ERRORLEVEL% EQU 0 ( + FOR /F "tokens=2* usebackq delims= " %%A IN (`%REGNATIVE% QUERY "%SDK61KEY%" /v InstallationFolder`) DO SET SDKDIR=%%B + SET SDKVER=6 + SET SDKMINORVER=1 + ) +) + +%REGNATIVE% QUERY "%SDK6AKEY%" /v InstallationFolder >nul 2>nul +if "%SDKDIR%"=="" IF %MOZ_MAXWINSDK% GEQ 60001 ( + IF %ERRORLEVEL% EQU 0 ( + FOR /F "tokens=2* usebackq delims= " %%A IN (`%REGNATIVE% QUERY "%SDK6AKEY%" /v InstallationFolder`) DO SET SDKDIR=%%B + SET SDKVER=6 + REM insane, I know! + SET SDKMINORVER=0A + ) +) + +%REGNATIVE% QUERY "%SDK6KEY%" /v InstallationFolder >nul 2>nul +if "%SDKDIR%"=="" IF %MOZ_MAXWINSDK% GEQ 60000 ( + IF %ERRORLEVEL% EQU 0 ( + FOR /F "tokens=2* usebackq delims= " %%A IN (`%REGNATIVE% 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\ + ) +) + +%REGNATIVE% QUERY "%SDK2003SP2KEY%" /v "Install Dir" >nul 2>nul +if "%PSDKDIR%"=="" IF %MOZ_MAXWINSDK% GEQ 50000 ( + IF %ERRORLEVEL% EQU 0 ( + FOR /F "tokens=3* delims= " %%A IN ('%REGNATIVE% QUERY "%SDK2003SP2KEY%" /v "Install Dir"') DO SET PSDKDIR=%%B + REM arbitrary, but works for me + SET PSDKVER=5 + ) +) + +%REGNATIVE% QUERY "%SDK2003SP1KEY%" /v "Install Dir" >nul 2>nul +if "%PSDKDIR%"=="" IF %MOZ_MAXWINSDK% GEQ 40000 ( + IF %ERRORLEVEL% EQU 0 ( + FOR /F "tokens=3* delims= " %%A IN ('%REGNATIVE% QUERY "%SDK2003SP1KEY%" /v "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 defined %VC10DIR% (ECHO Visual C++ 10 directory: %VC10DIR%) +if defined %VC10EXPRESSDIR% (ECHO Visual C++ 10 Express directory: %VC10EXPRESSDIR%) +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% +) diff --git a/src/current-patches/mozilla-build/start-msvc.patch b/src/current-patches/mozilla-build/start-msvc.patch new file mode 100644 index 0000000..6d70b86 --- /dev/null +++ b/src/current-patches/mozilla-build/start-msvc.patch @@ -0,0 +1,21 @@ +--- start-msvcx.bat.org 2010-08-17 23:01:48 +0200 ++++ start-msvcx.bat 2011-11-04 15:28:02 +0100 +@@ -7,7 +7,7 @@ + echo "Mozilla tools directory: %MOZBUILDDIR%" + + REM Get MSVC paths +-call "%MOZBUILDDIR%guess-msvc.bat" ++call "%MOZBUILDDIR%guess-msvc-x64.bat" + + REM Use the "new" moztools-static + set MOZ_TOOLS=%MOZBUILDDIR%moztools +@@ -84,4 +84,8 @@ + ) + ) + +-start /d "%USERPROFILE%" "" "%MOZILLABUILD%"\msys\bin\bash --login -i ++if "%1"=="" ( ++ start /d "%USERPROFILE%" "" "%MOZILLABUILD%"\msys\bin\bash --login -i" ++) else ( ++ cd "%USERPROFILE%" && "%MOZILLABUILD%"\msys\bin\bash --login -i -c "cd "%1" && make -f client.mk" ++)