configure: detect fxc.exe more thoroughly
When building ANGLE, we need the shader compiler (fxc.exe), which is not shipped with MinGW. Previously, we required an installed DirectX SDK. For Windows versions >= 8, the DX SDK is also part of the Windows Kit, so we also allow the user to specify the location of the Windows Kit. We also detect fxc on 64-bit hosts now, and in newer SDK versions which version the binary directory. The detected binary is now exported by configure, so the ANGLE project file does not need to duplicate the logic anymore. Task-number: QTBUG-52487 Change-Id: I41a17992909041dd84291b69498195cc8b8fab8a Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>bb10
parent
1ef9859e7e
commit
7a481fce28
|
|
@ -22,21 +22,7 @@ lib_replace.replace = \$\$\$\$[QT_INSTALL_LIBS]
|
|||
lib_replace.CONFIG = path
|
||||
QMAKE_PRL_INSTALL_REPLACE += lib_replace
|
||||
|
||||
# DirectX is included in the Windows 8 Kit, but everything else requires the DX SDK.
|
||||
winrt|msvc {
|
||||
FXC = fxc.exe
|
||||
} else {
|
||||
DX_DIR = $$(DXSDK_DIR)
|
||||
isEmpty(DX_DIR) {
|
||||
error("Cannot determine DirectX SDK location. Please set DXSDK_DIR environment variable.")
|
||||
}
|
||||
|
||||
equals(QMAKE_TARGET.arch, x86_64) {
|
||||
FXC = \"$${DX_DIR}Utilities\\bin\\x64\\fxc.exe\"
|
||||
} else {
|
||||
FXC = \"$${DX_DIR}Utilities\\bin\\x86\\fxc.exe\"
|
||||
}
|
||||
}
|
||||
FXC = $$shell_quote($$shell_path($$QMAKE_FXC_LOCATION))
|
||||
|
||||
win32 {
|
||||
VERSION = $$MODULE_VERSION
|
||||
|
|
|
|||
|
|
@ -728,10 +728,6 @@
|
|||
}
|
||||
},
|
||||
|
||||
"testTypeAliases": {
|
||||
"files": [ "fxc" ]
|
||||
},
|
||||
|
||||
"tests": {
|
||||
"angle_d3d11_qdtd": {
|
||||
"label": "D3D11_QUERY_DATA_TIMESTAMP_DISJOINT",
|
||||
|
|
@ -747,9 +743,7 @@
|
|||
"fxc": {
|
||||
"label": "Direct3D Shader Compiler",
|
||||
"type": "fxc",
|
||||
"files": [
|
||||
"fxc.exe"
|
||||
]
|
||||
"log": "value"
|
||||
},
|
||||
"drm_atomic": {
|
||||
"label": "DRM Atomic API",
|
||||
|
|
@ -1010,7 +1004,8 @@
|
|||
"condition": "features.dxguid && tests.fxc && (features.direct3d9 || (config.winrt && features.direct3d11 && libs.d3dcompiler))",
|
||||
"output": [
|
||||
"publicFeature",
|
||||
{ "type": "define", "name": "QT_OPENGL_ES_2_ANGLE" }
|
||||
{ "type": "define", "name": "QT_OPENGL_ES_2_ANGLE" },
|
||||
{ "type": "varAssign", "name": "QMAKE_FXC_LOCATION", "value": "tests.fxc.value" }
|
||||
]
|
||||
},
|
||||
"angle_d3d11_qdtd": {
|
||||
|
|
|
|||
|
|
@ -20,12 +20,35 @@ defineTest(qtConfLibrary_freetype) {
|
|||
# DXSDK_DIR variable. Starting with Windows Kit 8, it is included in
|
||||
# the Windows SDK.
|
||||
defineTest(qtConfTest_fxc) {
|
||||
dxdir = $$getenv("DXSDK_DIR")
|
||||
!isEmpty(dxdir) {
|
||||
EXTRA_PATH += $$dxdir/Utilities/bin/x86
|
||||
!mingw {
|
||||
fxc = $$qtConfFindInPath("fxc.exe")
|
||||
} else {
|
||||
equals(QMAKE_HOST.arch, x86_64): \
|
||||
fns = x64/fxc.exe
|
||||
else: \
|
||||
fns = x86/fxc.exe
|
||||
dxdir = $$(DXSDK_DIR)
|
||||
!isEmpty(dxdir) {
|
||||
fxc = $$dxdir/Utilities/bin/$$fns
|
||||
} else {
|
||||
winkitbindir = $$(WindowsSdkVerBinPath)
|
||||
!isEmpty(winkitbindir) {
|
||||
fxc = $$winkitbindir/$$fns
|
||||
} else {
|
||||
winkitdir = $$(WindowsSdkDir)
|
||||
!isEmpty(winkitdir): \
|
||||
fxc = $$winkitdir/bin/$$fns
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
qtConfTest_files($${1}): return(true)
|
||||
!isEmpty(fxc):exists($$fxc) {
|
||||
$${1}.value = $$clean_path($$fxc)
|
||||
export($${1}.value)
|
||||
$${1}.cache += value
|
||||
export($${1}.cache)
|
||||
return(true)
|
||||
}
|
||||
return(false)
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue