Skip to content

Commit

Permalink
Bug 999260 - Ship both d3dcompiler_43 and _46+. - r=mshal
Browse files Browse the repository at this point in the history
  • Loading branch information
kdashg committed May 2, 2014
1 parent 4cbe45b commit b21a7e2
Show file tree
Hide file tree
Showing 11 changed files with 157 additions and 109 deletions.
2 changes: 2 additions & 0 deletions browser/config/mozconfigs/win32/common-opt
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
ac_add_options --enable-update-channel=${MOZ_UPDATE_CHANNEL}
ac_add_options --enable-update-packaging
ac_add_options --enable-jemalloc
ac_add_options --enable-require-all-d3dc-versions

if [ -f /c/builds/gapi.data ]; then
_gapi_keyfile=/c/builds/gapi.data
else
Expand Down
1 change: 1 addition & 0 deletions browser/config/mozconfigs/win32/debug
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
ac_add_options --enable-debug
ac_add_options --enable-trace-malloc
ac_add_options --enable-signmar
ac_add_options --enable-require-all-d3dc-versions

# Needed to enable breakpad in application.ini
export MOZILLA_OFFICIAL=1
Expand Down
3 changes: 2 additions & 1 deletion browser/installer/Makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,8 @@ DEFINES += -DJAREXT=

ifdef MOZ_ANGLE_RENDERER
DEFINES += -DMOZ_ANGLE_RENDERER=$(MOZ_ANGLE_RENDERER)
DEFINES += -DMOZ_D3DCOMPILER_DLL=$(MOZ_D3DCOMPILER_DLL)
DEFINES += -DMOZ_D3DCOMPILER_VISTA_DLL=$(MOZ_D3DCOMPILER_VISTA_DLL)
DEFINES += -DMOZ_D3DCOMPILER_XP_DLL=$(MOZ_D3DCOMPILER_XP_DLL)
endif

DEFINES += -DMOZ_CHILD_PROCESS_NAME=$(MOZ_CHILD_PROCESS_NAME)
Expand Down
9 changes: 8 additions & 1 deletion browser/installer/package-manifest.in
Original file line number Diff line number Diff line change
Expand Up @@ -596,8 +596,15 @@
#ifdef MOZ_ANGLE_RENDERER
@BINPATH@/libEGL.dll
@BINPATH@/libGLESv2.dll
@BINPATH@/@MOZ_D3DCOMPILER_DLL@

#ifdef MOZ_D3DCOMPILER_VISTA_DLL
@BINPATH@/@MOZ_D3DCOMPILER_VISTA_DLL@
#endif

#ifdef MOZ_D3DCOMPILER_XP_DLL
@BINPATH@/@MOZ_D3DCOMPILER_XP_DLL@
#endif
#endif # MOZ_ANGLE_RENDERER

; [Browser Chrome Files]
@BINPATH@/browser/chrome.manifest
Expand Down
191 changes: 108 additions & 83 deletions configure.in
Original file line number Diff line number Diff line change
Expand Up @@ -5705,13 +5705,16 @@ dnl = ANGLE OpenGL->D3D translator for WebGL
dnl = * only applies to win32
dnl = * enabled by default (shipping build); requires explicit --disable to disable
dnl ========================================================

MOZ_ANGLE_RENDERER=
MOZ_DIRECTX_SDK_CPU_SUFFIX=
MOZ_DIRECTX_SDK_PATH=
MOZ_D3DCOMPILER_DLL=
MOZ_D3D_CPU_SUFFIX=
MOZ_HAS_WINSDK_WITH_D3D=
MOZ_D3DCOMPILER_DLL_PATH=
MOZ_D3DCOMPILER_CAB=
MOZ_D3DCOMPILER_VISTA_DLL=
MOZ_D3DCOMPILER_VISTA_DLL_PATH=
MOZ_DIRECTX_SDK_PATH=
MOZ_D3DCOMPILER_XP_DLL=
MOZ_D3DCOMPILER_XP_CAB=

case "$target_os" in
*mingw*)
MOZ_ANGLE_RENDERER=1
Expand All @@ -5721,10 +5724,10 @@ esac
# The DirectX SDK libraries are split into x86 and x64 sub-directories
case "${target_cpu}" in
i*86)
MOZ_DIRECTX_SDK_CPU_SUFFIX=x86
MOZ_D3D_CPU_SUFFIX=x86
;;
x86_64)
MOZ_DIRECTX_SDK_CPU_SUFFIX=x64
MOZ_D3D_CPU_SUFFIX=x64
;;
esac

Expand All @@ -5733,10 +5736,10 @@ MOZ_ARG_DISABLE_BOOL(webgl,
MOZ_WEBGL_DISABLED=1,
MOZ_WEBGL_DISABLED=)

MOZ_ARG_ENABLE_BOOL(winsdk-directx,
[ --enable-winsdk-directx use DirectX SDK in Windows SDK],
MOZ_WINSDK_DIRECTX=1,
MOZ_WINSDK_DIRECTX=)
MOZ_ARG_ENABLE_BOOL(require-all-d3dc-versions,
[ --enable-require-all-d3dc-versions Require all versions of the D3D compiler needed for supported Windows systems.],
MOZ_REQUIRE_ALL_D3DCS=1,
MOZ_REQUIRE_ALL_D3DCS=)

if test -n "$MOZ_WEBGL_DISABLED"; then
MOZ_WEBGL=
Expand All @@ -5751,10 +5754,50 @@ if test -n "$MOZ_WEBGL_CONFORMANT"; then
AC_DEFINE(MOZ_WEBGL_CONFORMANT)
fi

dnl ========================================================
dnl D3D compiler DLL
dnl ========================================================
MOZ_FOUND_D3D_COMPILERS=

if test -n "$MOZ_ANGLE_RENDERER"; then
if test -z "$MOZ_D3D_CPU_SUFFIX"; then
AC_MSG_ERROR([Couldn't determine MOZ_D3D_CPU_SUFFIX.])
fi

######################################
# Find _46+ for use by Vista+.

# Find a D3D compiler DLL in a Windows SDK.
MOZ_D3DCOMPILER_VISTA_DLL=
case "$MOZ_WINSDK_MAXVER" in
0x0603*)
MOZ_D3DCOMPILER_VISTA_DLL=d3dcompiler_47.dll
AC_MSG_RESULT([Found D3D compiler in Windows SDK 8.1.])
;;
0x0602*)
MOZ_D3DCOMPILER_VISTA_DLL=d3dcompiler_46.dll
AC_MSG_RESULT([Found D3D compiler in Windows SDK 8.0.])
;;
esac

if test -n "$MOZ_D3DCOMPILER_VISTA_DLL"; then
# We have a name, now track down the path.
if test -n "$WINDOWSSDKDIR"; then
MOZ_D3DCOMPILER_VISTA_DLL_PATH="$WINDOWSSDKDIR/Redist/D3D/$MOZ_D3D_CPU_SUFFIX/$MOZ_D3DCOMPILER_VISTA_DLL"
if test -f "$MOZ_D3DCOMPILER_VISTA_DLL_PATH"; then
MOZ_HAS_WINSDK_WITH_D3D=1
AC_MSG_RESULT([Found MOZ_D3DCOMPILER_VISTA_DLL_PATH: $MOZ_D3DCOMPILER_VISTA_DLL_PATH])
else
AC_MSG_RESULT([MOZ_D3DCOMPILER_VISTA_DLL_PATH doesn't exist: $MOZ_D3DCOMPILER_VISTA_DLL_PATH])
fi
else
AC_MSG_RESULT([WINDOWSSDKDIR is missing.])
fi
fi

######################################
# Find _43 for use by XP.

# Locate a DirectX SDK here so we can use it for both ANGLE and
# Joystick support.
if test "$OS_TARGET" = "WINNT" -a -z "$CROSS_COMPILE"; then
# Get the SDK path from the registry.
# First try to get the June 2010 SDK
MOZ_DIRECTX_SDK_REG_KEY=`reg query 'HKLM\Software\Microsoft\DirectX' //s | grep 'Microsoft DirectX SDK (June 2010)' | head -n 1`
Expand All @@ -5765,94 +5808,75 @@ if test "$OS_TARGET" = "WINNT" -a -z "$CROSS_COMPILE"; then
MOZ_DIRECTX_SDK_PATH=`reg query "$MOZ_DIRECTX_SDK_REG_KEY" //v InstallPath | grep REG_SZ | sed 's/.*\([[a-zA-Z]]\)\\:\\\\/\\1\\:\\\\/' | sed 's,\\\\,/,g'`

if test -n "$MOZ_DIRECTX_SDK_PATH" &&
test -f "$MOZ_DIRECTX_SDK_PATH"/lib/$MOZ_DIRECTX_SDK_CPU_SUFFIX/dxguid.lib ; then
test -f "$MOZ_DIRECTX_SDK_PATH"/lib/$MOZ_D3D_CPU_SUFFIX/dxguid.lib ; then
AC_MSG_RESULT([Found DirectX SDK via registry, using $MOZ_DIRECTX_SDK_PATH])
else
AC_MSG_RESULT([Couldn't find the DirectX SDK.])
MOZ_DIRECTX_SDK_PATH=
fi
fi

# On mingw, check if headers are provided by toolchain.
if test "$OS_TARGET" = "WINNT" -a -n "$GNU_CC"; then
MOZ_CHECK_HEADER(d3d10.h, MOZ_HAS_WINSDK_WITH_D3D=1)
fi

dnl ========================================================
dnl D3D compiler DLL
dnl ========================================================

if test -n "$MOZ_ANGLE_RENDERER"; then
# Check that our DirectX SDK is acceptable.
if test -n "$MOZ_DIRECTX_SDK_PATH"; then
if test -n "`echo $MOZ_DIRECTX_SDK_REG_KEY | grep 'February 2010'`" ; then
AC_MSG_RESULT([Found the February 2010 DirectX SDK, which is unacceptable to ANGLE.])
MOZ_DIRECTX_SDK_PATH_BAD=1
MOZ_DIRECTX_SDK_PATH=
fi
fi

if test -n "$MOZ_DIRECTX_SDK_PATH"; then
# Find a D3D compiler DLL in the DirectX SDK, if we didn't find one already.
# Get the SDK numeric version (e.g. 43) by looking at the dependencies of d3dx9.lib
MOZ_D3DX9_VERSION=`dumpbin //headers "$MOZ_DIRECTX_SDK_PATH"/lib/$MOZ_D3D_CPU_SUFFIX/d3dx9.lib | egrep d3dx9_[[0-9]][[0-9]]\.dll | head -n1 | sed 's/.*\([[0-9]][[0-9]]\).*/\\1/g'`

if test -n "$MOZ_DIRECTX_SDK_PATH" &&
test -f "$MOZ_DIRECTX_SDK_PATH"/include/d3dx9.h &&
test -f "$MOZ_DIRECTX_SDK_PATH"/lib/$MOZ_DIRECTX_SDK_CPU_SUFFIX/dxguid.lib ; then
AC_MSG_RESULT([Found acceptable DirectX SDK for ANGLE.])
if test -n "$MOZ_D3DX9_VERSION" ; then
MOZ_D3DCOMPILER_XP_CAB=`find "$MOZ_DIRECTX_SDK_PATH"/Redist -name *D3DCompiler_${MOZ_D3DX9_VERSION}_${MOZ_D3D_CPU_SUFFIX}.cab | head -n1`
MOZ_D3DCOMPILER_XP_DLL=D3DCompiler_$MOZ_D3DX9_VERSION.dll
else
AC_MSG_RESULT([Found DirectX SDK is unacceptable for ANGLE.])
MOZ_DIRECTX_SDK_PATH_BAD=1
AC_MSG_RESULT([Couldn't determine the D3DX9 version for the DirectX SDK.])
fi
fi

if test -n "$MOZ_DIRECTX_SDK_PATH_BAD"; then
AC_MSG_ERROR([Couldn't find an acceptable DirectX SDK for ANGLE. Either install DirectX SDK (June 2010 version or newer), or reconfigure with --disable-webgl.])
if test -z "$MOZ_D3DCOMPILER_XP_CAB"; then
AC_MSG_RESULT([Couldn't find a CAB containing the D3D compiler DLL.])
MOZ_DIRECTX_SDK_PATH=
MOZ_D3DCOMPILER_XP_DLL=
fi
else
AC_MSG_RESULT([Couldn't find an acceptable DirectX SDK for ANGLE, needed for d3dcompiler_43.])
AC_MSG_RESULT([ Either ignore, install DirectX SDK (June 2010 version or newer), or reconfigure with --disable-webgl.])
MOZ_DIRECTX_SDK_PATH=
MOZ_D3DCOMPILER_XP_DLL=
fi

# Find a D3D compiler DLL in a Windows SDK.
MOZ_D3DCOMPILER_DLL=
if test -n "$MOZ_WINSDK_DIRECTX"; then
case "$MOZ_WINSDK_MAXVER" in
0x0603*)
MOZ_D3DCOMPILER_DLL=d3dcompiler_47.dll
AC_MSG_RESULT([Found D3D compiler in Windows SDK 8.1.])
;;
0x0602*)
MOZ_D3DCOMPILER_DLL=d3dcompiler_46.dll
AC_MSG_RESULT([Found D3D compiler in Windows SDK 8.0.])
;;
esac
fi
######################################
# Check that we found what we needed.
MOZ_FOUND_A_D3D_COMPILER=
MOZ_FOUND_BOTH_D3D_COMPILERS=1

if test -n "$MOZ_D3DCOMPILER_DLL"; then
# We have a name, now track down the path.
if test -n "$WINDOWSSDKDIR"; then
MOZ_D3DCOMPILER_DLL_PATH="$WINDOWSSDKDIR/Redist/D3D/$MOZ_DIRECTX_SDK_CPU_SUFFIX/$MOZ_D3DCOMPILER_DLL"
if test -f "$MOZ_D3DCOMPILER_DLL_PATH"; then
MOZ_HAS_WINSDK_WITH_D3D=1
AC_MSG_RESULT([Found MOZ_D3DCOMPILER_DLL_PATH: $MOZ_D3DCOMPILER_DLL_PATH])
else
AC_MSG_RESULT([MOZ_D3DCOMPILER_DLL_PATH doesn't exist: $MOZ_D3DCOMPILER_DLL_PATH])
fi
else
AC_MSG_RESULT([WINDOWSSDKDIR is missing.])
fi
if test -n "$MOZ_D3DCOMPILER_VISTA_DLL"; then
MOZ_FOUND_A_D3D_COMPILER=1
AC_MSG_RESULT([Found d3dcompiler DLL for Vista+: $MOZ_D3DCOMPILER_VISTA_DLL])
else
MOZ_FOUND_BOTH_D3D_COMPILERS=
fi

# Find a D3D compiler DLL in the DirectX SDK, if we didn't find one already.
# Get the SDK numeric version (e.g. 43) by looking at the dependencies of d3dx9.lib
if test -z "$MOZ_HAS_WINSDK_WITH_D3D"; then
MOZ_D3DX9_VERSION=`dumpbin //headers "$MOZ_DIRECTX_SDK_PATH"/lib/$MOZ_DIRECTX_SDK_CPU_SUFFIX/d3dx9.lib | egrep d3dx9_[[0-9]][[0-9]]\.dll | head -n1 | sed 's/.*\([[0-9]][[0-9]]\).*/\\1/g'`
if test -n "$MOZ_D3DCOMPILER_XP_DLL"; then
MOZ_FOUND_A_D3D_COMPILER=1
AC_MSG_RESULT([Found d3dcompiler DLL for XP: $MOZ_D3DCOMPILER_XP_DLL])
else
MOZ_FOUND_BOTH_D3D_COMPILERS=
fi

if test -n "$MOZ_D3DX9_VERSION" ; then
MOZ_D3DCOMPILER_CAB=`find "$MOZ_DIRECTX_SDK_PATH"/Redist -name *D3DCompiler_${MOZ_D3DX9_VERSION}_${MOZ_DIRECTX_SDK_CPU_SUFFIX}.cab | head -n1`
MOZ_D3DCOMPILER_DLL=D3DCompiler_$MOZ_D3DX9_VERSION.dll
else
AC_MSG_RESULT([Couldn't determine the D3DX9 version for the DirectX SDK.])
if test -z "$CROSS_COMPILE"; then
if test -z "MOZ_FOUND_A_D3D_COMPILER"; then
AC_MSG_ERROR([Couldn't find an acceptable D3D compiler DLL.])
AC_MSG_ERROR([ Either install Windows SDK 8.0+, install DirectX SDK (June 2010 version or newer), or reconfigure with --disable-webgl.])
fi

if test -z "$MOZ_D3DCOMPILER_CAB"; then
AC_MSG_RESULT([Couldn't find a CAB containing the D3D compiler DLL.])
if test -n "$MOZ_REQUIRE_ALL_D3DCS" -a -z "$MOZ_FOUND_BOTH_D3D_COMPILERS"; then
AC_MSG_ERROR([Both D3D compilers _43 and _46+ are required by --enable-require-d3d-compilers.])
AC_MSG_ERROR([ Install Windows SDK 8.0+, as well as DirectX SDK (June 2010 version or newer), or reconfigure without this flag.])
fi
fi

if test -z "$MOZ_D3DCOMPILER_DLL_PATH" -a -z "$MOZ_D3DCOMPILER_CAB" -a -z "$CROSS_COMPILE"; then
AC_MSG_ERROR([Couldn't find an acceptable D3D compiler DLL. Either install Windows SDK 8.0+ and reconfigure with --enable-winsdk-directx, install DirectX SDK (June 2010 version or newer), or reconfigure with --disable-webgl.])
fi
fi


Expand Down Expand Up @@ -8457,12 +8481,13 @@ AC_SUBST(MOZ_ENABLE_SIGNMAR)
AC_SUBST(MOZ_UPDATER)

AC_SUBST(MOZ_ANGLE_RENDERER)
AC_SUBST(MOZ_DIRECTX_SDK_CPU_SUFFIX)
AC_SUBST(MOZ_DIRECTX_SDK_PATH)
AC_SUBST(MOZ_D3DCOMPILER_DLL)
AC_SUBST(MOZ_D3D_CPU_SUFFIX)
AC_SUBST(MOZ_HAS_WINSDK_WITH_D3D)
AC_SUBST(MOZ_D3DCOMPILER_DLL_PATH)
AC_SUBST(MOZ_D3DCOMPILER_CAB)
AC_SUBST(MOZ_D3DCOMPILER_VISTA_DLL)
AC_SUBST(MOZ_D3DCOMPILER_VISTA_DLL_PATH)
AC_SUBST(MOZ_DIRECTX_SDK_PATH)
AC_SUBST(MOZ_D3DCOMPILER_XP_DLL)
AC_SUBST(MOZ_D3DCOMPILER_XP_CAB)

AC_SUBST(MOZ_METRO)

Expand Down
10 changes: 5 additions & 5 deletions gfx/angle/Makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@
ifdef MOZ_ANGLE_RENDERER

libs::
ifdef MOZ_D3DCOMPILER_DLL_PATH
cp -fp "$(MOZ_D3DCOMPILER_DLL_PATH)" "$(DIST)/bin"
else
ifdef MOZ_D3DCOMPILER_CAB
expand '$(MOZ_D3DCOMPILER_CAB)' -F:$(MOZ_D3DCOMPILER_DLL) '$(DIST)/bin'
ifdef MOZ_D3DCOMPILER_VISTA_DLL_PATH
cp -fp "$(MOZ_D3DCOMPILER_VISTA_DLL_PATH)" "$(DIST)/bin"
endif

ifdef MOZ_D3DCOMPILER_XP_CAB
expand '$(MOZ_D3DCOMPILER_XP_CAB)' -F:$(MOZ_D3DCOMPILER_XP_DLL) '$(DIST)/bin'
endif

endif
Expand Down
2 changes: 1 addition & 1 deletion gfx/angle/src/libEGL/Makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ else
ifdef MOZ_HAS_WINSDK_WITH_D3D
EXTRA_DSO_LDOPTS = d3d9.lib "$(DIST)/lib/libGLESv2.lib" delayimp.lib
else
EXTRA_DSO_LDOPTS = '$(MOZ_DIRECTX_SDK_PATH)/lib/$(MOZ_DIRECTX_SDK_CPU_SUFFIX)/d3d9.lib' \
EXTRA_DSO_LDOPTS = '$(MOZ_DIRECTX_SDK_PATH)/lib/$(MOZ_D3D_CPU_SUFFIX)/d3d9.lib' \
'$(DIST)/lib/libGLESv2.lib' \
delayimp.lib
endif
Expand Down
2 changes: 1 addition & 1 deletion gfx/angle/src/libGLESv2/Makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,6 @@ endif
ifdef MOZ_HAS_WINSDK_WITH_D3D
EXTRA_DSO_LDOPTS = $(call EXPAND_LIBNAME,d3d9 dxguid)
else
EXTRA_DSO_LDOPTS = $(call EXPAND_LIBNAME_PATH,d3d9 dxguid,'$(MOZ_DIRECTX_SDK_PATH)/lib/$(MOZ_DIRECTX_SDK_CPU_SUFFIX)')
EXTRA_DSO_LDOPTS = $(call EXPAND_LIBNAME_PATH,d3d9 dxguid,'$(MOZ_DIRECTX_SDK_PATH)/lib/$(MOZ_D3D_CPU_SUFFIX)')
endif
EXTRA_DSO_LDOPTS += $(call EXPAND_LIBNAME,delayimp)
Loading

0 comments on commit b21a7e2

Please sign in to comment.