Bug 1460620 Have MinGW look for d3dcompiler_47.dll (so it will be packaged) r?Build draft
authorTom Ritter <tom@mozilla.com>
Thu, 10 May 2018 10:48:06 -0500
changeset 808803 1987e062f1e5bf2998bb8e9d96353c5ccb0cc281
parent 808802 e73c2aa05e9fff33562dfaf9d5c60c3b7b49d00c
child 808804 70e6b8dd3974c80c9febcc75f0f3b16506369bf9
child 809220 ffb6c5c06905538fb887464e9553e7b47cdf7575
push id113495
push userbmo:tom@mozilla.com
push dateWed, 20 Jun 2018 19:46:58 +0000
reviewersBuild
bugs1460620
milestone60.0.3
Bug 1460620 Have MinGW look for d3dcompiler_47.dll (so it will be packaged) r?Build MozReview-Commit-ID: 6gwSSPhT3IA
build/moz.configure/toolchain.configure
old-configure.in
old mode 100755
new mode 100644
--- a/build/moz.configure/toolchain.configure
+++ b/build/moz.configure/toolchain.configure
@@ -1302,16 +1302,17 @@ def is_windows(target, host):
 
 include('windows.configure', when=is_windows)
 
 # Shader Compiler for Windows (and MinGW Cross Compile)
 # ==============================================================
 
 fxc = check_prog('FXC', ('fxc.exe', 'fxc2.exe'), when=depends(target)
                  (lambda t: t.kernel == 'WINNT'))
+add_old_configure_assignment('FXC', fxc)
 wine = check_prog('WINE', ['wine'], when=depends(target, host)
                   (lambda t, h: t.kernel == 'WINNT' and h.kernel == 'Linux'))
 
 # Security Hardening
 # ==============================================================
 
 js_option('--enable-address-sanitizer', help='Enable Address Sanitizer')
 
--- a/old-configure.in
+++ b/old-configure.in
@@ -2730,43 +2730,55 @@ if test -n "$MOZ_ANGLE_RENDERER"; 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*|0x0A00*)
+  if test "$OS_ARCH" != "$HOST_OS_ARCH"; then
     MOZ_D3DCOMPILER_VISTA_DLL=d3dcompiler_47.dll
-    AC_MSG_RESULT([Found D3D compiler in Windows SDK.])
-  ;;
-  esac
+    AC_MSG_RESULT([Assuming D3D compiler will be in fxc2.])
+  else
+    case "$MOZ_WINSDK_MAXVER" in
+    0x0603*|0x0A00*)
+      MOZ_D3DCOMPILER_VISTA_DLL=d3dcompiler_47.dll
+      AC_MSG_RESULT([Found D3D compiler in Windows SDK.])
+    ;;
+    esac
+  fi
 
   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
         AC_MSG_RESULT([Found MOZ_D3DCOMPILER_VISTA_DLL_PATH: $MOZ_D3DCOMPILER_VISTA_DLL_PATH])
         MOZ_HAS_WINSDK_WITH_D3D=1
       else
         AC_MSG_RESULT([MOZ_D3DCOMPILER_VISTA_DLL_PATH doesn't exist: $MOZ_D3DCOMPILER_VISTA_DLL_PATH])
         AC_MSG_ERROR([Windows SDK at "$WINDOWSSDKDIR" appears broken. Try updating to MozillaBuild 1.9 final or higher.])
         MOZ_D3DCOMPILER_VISTA_DLL_PATH=
       fi
     else
-      AC_MSG_RESULT([Windows SDK not found.])
+      MOZ_D3DCOMPILER_VISTA_DLL_PATH="$(dirname $FXC)/$MOZ_D3DCOMPILER_VISTA_DLL"
+      if test -f "$MOZ_D3DCOMPILER_VISTA_DLL_PATH"; then
+        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])
+        AC_MSG_ERROR([fxc2 or "$MOZ_D3DCOMPILER_VISTA_DLL" seem to be missing from the expected location.])
+        MOZ_D3DCOMPILER_VISTA_DLL_PATH=
+      fi
     fi
   else
     if test "$OS_ARCH" = "$HOST_OS_ARCH"; then
       AC_MSG_ERROR([Couldn't find Windows SDK 8.1 or higher needed for ANGLE.])
     else
-      AC_MSG_RESULT([Windows SDK not needed for ANGLE in Linux MinGW build.])
+      AC_MSG_ERROR([We should need "$MOZ_D3DCOMPILER_VISTA_DLL" for ANGLE in Linux MinGW build, but we didn't look for it.])
     fi
   fi
 
   if test -z "$MOZ_D3DCOMPILER_VISTA_DLL_PATH"; then
     MOZ_D3DCOMPILER_VISTA_DLL=
   fi
 
   # On mingw, check if headers are provided by toolchain.
@@ -2778,20 +2790,18 @@ if test -n "$MOZ_ANGLE_RENDERER"; then
   # Check that we found what we needed.
   MOZ_FOUND_A_D3D_COMPILER=
 
   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])
   fi
 
-  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.])
-    fi
+  if test -z "MOZ_FOUND_A_D3D_COMPILER"; then
+    AC_MSG_ERROR([Couldn't find an acceptable D3D compiler DLL.])
   fi
 fi # MOZ_ANGLE_RENDERER
 
 fi # COMPILE_ENVIRONMENT
 
 
 dnl ========================================================
 dnl Gamepad support