Bug 233448

Summary: [CMake][MSVC] Compile with /permissive-
Product: WebKit Reporter: Don Olmstead <don.olmstead>
Component: CMakeAssignee: Fujii Hironori <Hironori.Fujii>
Status: RESOLVED FIXED    
Severity: Normal CC: annulen, dino, ews-watchlist, fmalita, gyuyoung.kim, Hironori.Fujii, kbr, kondapallykalyan, pdr, ryuan.choi, sabouhallawa, schenney, sergio, stephan.szabo
Priority: P2    
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
Bug Depends on: 234498, 234501, 234503, 234504, 234505, 234546    
Bug Blocks: 233963    
Attachments:
Description Flags
WIP Patch
none
Patch
none
Patch Hironori.Fujii: commit-queue-

Description Don Olmstead 2021-11-23 09:04:07 PST
It provides better C++ conformance and will be turned on when compiling C++20.
Comment 1 Don Olmstead 2021-11-23 09:26:30 PST
Created attachment 445038 [details]
WIP Patch
Comment 2 EWS Watchlist 2021-11-23 09:27:42 PST
Note that there are important steps to take when updating ANGLE. See https://trac.webkit.org/wiki/UpdatingANGLE
Comment 3 Fujii Hironori 2021-12-20 21:40:48 PST
I'm going to fix the compilation errors in sub tickets.
However, there are more warnings C5054 and C5055. I think we shoud suppress them.

Source\WebCore\rendering\style\RenderStyleConstants.h(1093): warning C5054: operator '|': deprecated between enumerations of different types
Source\WebCore\rendering\style\RenderStyleConstants.h(1094): warning C5054: operator '|': deprecated between enumerations of different types
Source\WebCore\rendering\style\RenderStyleConstants.h(1095): warning C5054: operator '|': deprecated between enumerations of different types
Source\WebCore\rendering\style\RenderStyleConstants.h(1096): warning C5054: operator '|': deprecated between enumerations of different types

Source\ThirdParty\ANGLE\src\libANGLE/Program.h(755): warning C5054: operator '+': deprecated between enumerations of different types
Source\ThirdParty\ANGLE\src\libANGLE/VertexArray.h(145): warning C5054: operator '+': deprecated between enumerations of different types
Source\ThirdParty\ANGLE\src\libANGLE/VertexArray.h(149): warning C5054: operator '+': deprecated between enumerations of different types
Source\ThirdParty\ANGLE\src\libANGLE/VertexArray.h(153): warning C5054: operator '+': deprecated between enumerations of different types

Source\WebCore\platform\graphics\nicosia\NicosiaAnimation.cpp(232): warning C5055: operator '!=': deprecated between enumerations and floating-point types

Source\WebCore\animation/CSSAnimation.cpp(103): warning C5055: operator '==': deprecated between enumerations and floating-point types

Source\WebCore\css/CSSComputedStyleDeclaration.cpp(3568): warning C5055: operator '==': deprecated between enumerations and floating-point types

Source\WebCore\dom/ViewportArguments.cpp(48): warning C5055: operator '!=': deprecated between enumerations and floating-point types
Source\WebCore\dom/ViewportArguments.cpp(50): warning C5055: operator '==': deprecated between enumerations and floating-point types
Source\WebCore\dom/ViewportArguments.cpp(53): warning C5055: operator '==': deprecated between enumerations and floating-point types
Source\WebCore\dom/ViewportArguments.cpp(61): warning C5055: operator '!=': deprecated between enumerations and floating-point types
Source\WebCore\dom/ViewportArguments.cpp(62): warning C5055: operator '!=': deprecated between enumerations and floating-point types
Source\WebCore\dom/ViewportArguments.cpp(65): warning C5055: operator '!=': deprecated between enumerations and floating-point types
Source\WebCore\dom/ViewportArguments.cpp(72): warning C5055: operator '!=': deprecated between enumerations and floating-point types
Source\WebCore\dom/ViewportArguments.cpp(73): warning C5055: operator '!=': deprecated between enumerations and floating-point types
Source\WebCore\dom/ViewportArguments.cpp(76): warning C5055: operator '!=': deprecated between enumerations and floating-point types
Source\WebCore\dom/ViewportArguments.cpp(148): warning C5055: operator '!=': deprecated between enumerations and floating-point types
Source\WebCore\dom/ViewportArguments.cpp(148): warning C5055: operator '!=': deprecated between enumerations and floating-point types
Source\WebCore\dom/ViewportArguments.cpp(151): warning C5055: operator '!=': deprecated between enumerations and floating-point types
Source\WebCore\dom/ViewportArguments.cpp(151): warning C5055: operator '!=': deprecated between enumerations and floating-point types
Source\WebCore\dom/ViewportArguments.cpp(154): warning C5055: operator '!=': deprecated between enumerations and floating-point types
Source\WebCore\dom/ViewportArguments.cpp(154): warning C5055: operator '!=': deprecated between enumerations and floating-point types
Source\WebCore\dom/ViewportArguments.cpp(157): warning C5055: operator '!=': deprecated between enumerations and floating-point types
Source\WebCore\dom/ViewportArguments.cpp(160): warning C5055: operator '==': deprecated between enumerations and floating-point types
Source\WebCore\dom/ViewportArguments.cpp(160): warning C5055: operator '==': deprecated between enumerations and floating-point types
Source\WebCore\dom/ViewportArguments.cpp(163): warning C5055: operator '==': deprecated between enumerations and floating-point types
Source\WebCore\dom/ViewportArguments.cpp(163): warning C5055: operator '==': deprecated between enumerations and floating-point types
Source\WebCore\dom/ViewportArguments.cpp(166): warning C5055: operator '==': deprecated between enumerations and floating-point types
Source\WebCore\dom/ViewportArguments.cpp(169): warning C5055: operator '==': deprecated between enumerations and floating-point types
Source\WebCore\dom/ViewportArguments.cpp(172): warning C5055: operator '!=': deprecated between enumerations and floating-point types
Source\WebCore\dom/ViewportArguments.cpp(172): warning C5055: operator '!=': deprecated between enumerations and floating-point types
Source\WebCore\dom/ViewportArguments.cpp(194): warning C5055: operator '==': deprecated between enumerations and floating-point types
Source\WebCore\dom/ViewportArguments.cpp(199): warning C5055: operator '==': deprecated between enumerations and floating-point types
Source\WebCore\dom/ViewportArguments.cpp(208): warning C5055: operator '==': deprecated between enumerations and floating-point types
Source\WebCore\dom/ViewportArguments.cpp(210): warning C5055: operator '!=': deprecated between enumerations and floating-point types
Source\WebCore\dom/ViewportArguments.cpp(212): warning C5055: operator '!=': deprecated between enumerations and floating-point types
Source\WebCore\dom/ViewportArguments.cpp(222): warning C5055: operator '==': deprecated between enumerations and floating-point types
Source\WebCore\dom/ViewportArguments.cpp(223): warning C5055: operator '==': deprecated between enumerations and floating-point types
Source\WebCore\dom/ViewportArguments.cpp(225): warning C5055: operator '!=': deprecated between enumerations and floating-point types
Source\WebCore\dom/ViewportArguments.cpp(232): warning C5055: operator '==': deprecated between enumerations and floating-point types

Source\WebCore\dom/WheelEvent.cpp(64): warning C5055: operator '*': deprecated between enumerations and floating-point types
Source\WebCore\dom/WheelEvent.cpp(64): warning C5055: operator '*': deprecated between enumerations and floating-point types
Comment 4 Fujii Hironori 2021-12-21 22:48:09 PST
Created attachment 447783 [details]
Patch
Comment 5 Fujii Hironori 2021-12-21 23:39:19 PST
WinCairo EWS failed to compile.

FAILED: Source/ThirdParty/ANGLE/CMakeFiles/ANGLE.dir/src/common/MemoryBuffer.cpp.obj 
C:\MSVS\VC\Tools\MSVC\14.28.29910\bin\Hostx64\x64\cl.exe  (...) ..\..\Source\ThirdParty\ANGLE\src\common\MemoryBuffer.cpp
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\winrt\wrl\module.h(1427): error C2039: 'CheckForDuplicateEntries': is not a member of 'Microsoft::WRL::Details'
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\winrt\wrl\module.h(1393): note: see declaration of 'Microsoft::WRL::Details'
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\winrt\wrl\module.h(1540): note: see reference to class template instantiation 'Microsoft::WRL::Module<Microsoft::WRL::InProc,ModuleT>' being compiled
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\winrt\wrl\module.h(1433): error C2039: 'CheckForDuplicateEntries': is not a member of 'Microsoft::WRL::Details'
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\winrt\wrl\module.h(1393): note: see declaration of 'Microsoft::WRL::Details'

I don't see such error on my env. I'm using Visual Studio 2019 16.11.8.
Comment 6 Fujii Hironori 2022-01-04 11:50:12 PST
Oh, no. WinCairo EWS is still failing after updating.

FAILED: Source/ThirdParty/ANGLE/CMakeFiles/ANGLE.dir/src/compiler/translator/ValidateMaxParameters.cpp.obj 
C:\MSVS\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64\cl.exe (...) C:\BW\WinCairo-EWS\build\Source\ThirdParty\ANGLE\src\compiler\translator\ValidateMaxParameters.cpp
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\winrt\wrl\module.h(1427): error C2039: 'CheckForDuplicateEntries': is not a member of 'Microsoft::WRL::Details'
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\winrt\wrl\module.h(1393): note: see declaration of 'Microsoft::WRL::Details'
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\winrt\wrl\module.h(1540): note: see reference to class template instantiation 'Microsoft::WRL::Module<Microsoft::WRL::InProc,ModuleT>' being compiled
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\winrt\wrl\module.h(1433): error C2039: 'CheckForDuplicateEntries': is not a member of 'Microsoft::WRL::Details'
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\winrt\wrl\module.h(1393): note: see declaration of 'Microsoft::WRL::Details'
Comment 7 Fujii Hironori 2022-01-04 12:11:52 PST
I downgraded Windows 10 SDK to 10.0.17763.0 locally. It can reproduce the same error.
Comment 8 Stephan Szabo 2022-01-05 07:39:10 PST
It appears to have built with test image using 18362, but I need to check that the update works okay on the non-ews builder and tester.
Comment 9 Fujii Hironori 2022-01-05 15:56:16 PST
Created attachment 448447 [details]
Patch
Comment 10 Fujii Hironori 2022-01-06 12:00:56 PST
Bug 233963 turned C++20 on. We no longer need to explicitly set /permissive-. Closed.
I'm going to suppress the warnings in another bug:
  Bug 234929 – [MSVC] Suppress new warnings C5054 and C5055 introduced by /permissive-