The FX mainline build was updated to use VS 2019 a while ago, but it should still be buildable with VS 2017. After the recent WebKit 610.2 update, it no longer builds with VS 2017. I discovered this while backporting the WebKit 610.2 update to FX 11, which still uses VS 2017 to build.
Here is the error:
$ gradle -PCOMPILE_WEBKIT=true
[2519/4281] Building CXX object Source\WebCore\CMakeFiles\WebCore.dir\__\__\DerivedSources\WebCore\unified-sources\UnifiedSource-26ec8d00-4.cpp.obj
FAILED: Source/WebCore/CMakeFiles/WebCore.dir/__/__/DerivedSources/WebCore/unified-sources/UnifiedSource-26ec8d00-4.cpp.obj
jfx\buildSrc\build\build-tools\devkit-windows_x64-VS2017-15.9.24+1.0.tar\VC\bin\x64\cl.exe /nologo /TP -DBUILDING_JAVA__=1 -DBUILDING_WITH_CMAKE=1 -DBUILDING_WebCore -DDATA_DIR=\"share\" -DHAVE_CONFIG_H=1 -DICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_STATIC -DIMAGEIO=1 -DLIBXML_STATIC -DLIBXSLT_STATIC -DMAX_DOM_TREE_DEPTH=2000 -DNOMINMAX -DSTATICALLY_LINKED_WITH_JavaScriptCore -DSTATICALLY_LINKED_WITH_PAL=1 -DSTATICALLY_LINKED_WITH_WTF -DUNICODE -DU_ENABLE_DYLOAD=0 -DU_STATIC_IMPLEMENTATION -DWINVER=0x601 -D_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1 -D_CRT_SECURE_NO_WARNINGS -D_HAS_EXCEPTIONS=0 -D_UNICODE -D_WINDOWS -D_WINSOCKAPI_="" -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\platform\java -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\platform\graphics\java -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\platform\linux -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\platform\network -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\platform\network\java -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\bindings\java -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\page\java -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\bridge\jni -Ijfx\modules\javafx.web\src\main\native\Source\WebKitLegacy -I..\..\gensrc\headers\javafx.web -I. -IDerivedSources\WebCore -Ijfx\modules\javafx.web\src\main\native\Source\WebCore -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\Modules\airplay -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\Modules\applepay -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\Modules\applepay\paymentrequest -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\Modules\applicationmanifest -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\Modules\async-clipboard -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\Modules\beacon -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\Modules\cache -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\Modules\credentialmanagement -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\Modules\encryptedmedia -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\Modules\encryptedmedia\legacy -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\Modules\entriesapi -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\Modules\fetch -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\Modules\geolocation -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\Modules\highlight -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\Modules\indexeddb -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\Modules\indexeddb\client -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\Modules\indexeddb\server -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\Modules\indexeddb\shared -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\Modules\mediacapabilities -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\Modules\mediacontrols -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\Modules\mediarecorder -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\Modules\mediasession -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\Modules\mediasource -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\Modules\mediastream -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\Modules\mediastream\libwebrtc -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\Modules\navigatorcontentutils -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\Modules\notifications -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\Modules\paymentrequest -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\Modules\pictureinpicture -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\Modules\plugins -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\Modules\quota -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\Modules\remoteplayback -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\Modules\speech -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\Modules\streams -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\Modules\webaudio -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\Modules\webauthn -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\Modules\webauthn\cbor -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\Modules\webauthn\fido -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\Modules\webdatabase -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\Modules\webdriver -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\Modules\webgpu -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\Modules\webgpu\WHLSL -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\Modules\webgpu\WHLSL\AST -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\Modules\websockets -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\Modules\webxr -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\accessibility -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\accessibility\isolatedtree -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\animation -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\bindings -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\bindings\js -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\bridge -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\bridge\c -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\bridge\jsc -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\contentextensions -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\crypto -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\crypto\algorithms -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\crypto\keys -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\crypto\parameters -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\css -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\css\parser -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\css\typedom -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\cssjit -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\dom -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\dom\messageports -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\domjit -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\editing -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\fileapi -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\history -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\html -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\html\canvas -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\html\forms -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\html\parser -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\html\shadow -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\html\track -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\inspector -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\inspector\agents -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\inspector\agents\page -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\inspector\agents\worker -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\layout -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\layout\blockformatting -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\layout\blockformatting\tablewrapper -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\layout\displaytree -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\layout\floats -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\layout\inlineformatting -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\layout\inlineformatting\text -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\layout\integration -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\layout\invalidation -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\layout\layouttree -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\layout\tableformatting -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\loader -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\loader\appcache -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\loader\archive -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\loader\archive\mhtml -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\loader\cache -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\loader\icon -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\mathml -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\page -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\page\animation -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\page\csp -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\page\scrolling -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\platform -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\platform\animation -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\platform\audio -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\platform\encryptedmedia -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\platform\gamepad -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\platform\graphics -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\platform\graphics\cpu\arm -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\platform\graphics\cpu\arm\filters -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\platform\graphics\displaylists -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\platform\graphics\filters -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\platform\graphics\iso -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\platform\graphics\opentype -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\platform\graphics\transforms -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\platform\mediacapabilities -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\platform\mediarecorder -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\platform\mediasession -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\platform\mediastream -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\platform\mediastream\libwebrtc -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\platform\mock -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\platform\mock\mediasource -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\platform\sql -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\platform\text -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\platform\xr -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\plugins -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\rendering -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\rendering\line -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\rendering\mathml -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\rendering\shapes -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\rendering\style -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\rendering\svg -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\rendering\updating -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\replay -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\storage -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\style -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\svg -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\svg\animation -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\svg\graphics -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\svg\graphics\filters -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\svg\properties -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\websockets -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\workers -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\workers\service -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\workers\service\context -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\workers\service\server -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\worklets -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\xml -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\xml\parser -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\Modules\gamepad -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\platform\graphics\texmap -Ijfx\modules\javafx.web\src\main\native\Source\WebCore\platform\graphics\nicosia -Ijfx\modules\javafx.web\src\main\native\Source\ThirdParty\libxml\src\include -Ijfx\modules\javafx.web\src\main\native\Source\ThirdParty\libxml\win32\include -Ijfx\modules\javafx.web\src\main\native\Source\ThirdParty\icu\source\common -Ijfx\modules\javafx.web\src\main\native\Source\ThirdParty\icu\source\i18n -Ijfx\modules\javafx.web\src\main\native\Source\ThirdParty\libxslt\src -Ijfx\modules\javafx.web\src\main\native\Source\ThirdParty\sqlite\. -IDerivedSources\ForwardingHeaders -Ijfx\modules\javafx.web\src\main\native\Source\WTF\wtf\java -Ijfx\modules\javafx.web\src\main\native\Source -IC:\java\openjdk\jdk-15\include -IC:\java\openjdk\jdk-15\include\win32 /W4 /DWIN32 /D_WINDOWS /GR- /EHs- /EHc- /MD /O2 /Ob2 /DNDEBUG /wd4018 /wd4068 /wd4099 /wd4100 /wd4127 /wd4138 /wd4146 /wd4180 /wd4189 /wd4201 /wd4206 /wd4244 /wd4251 /wd4267 /wd4275 /wd4288 /wd4291 /wd4305 /wd4309 /wd4344 /wd4355 /wd4389 /wd4396 /wd4456 /wd4457 /wd4458 /wd4459 /wd4481 /wd4503 /wd4505 /wd4510 /wd4512 /wd4530 /wd4610 /wd4611 /wd4646 /wd4702 /wd4706 /wd4722 /wd4800 /wd4819 /wd4951 /wd4952 /wd4996 /wd6011 /wd6031 /wd6211 /wd6246 /wd6255 /wd6387 /wd4091 /Zi /GS /EHa- /EHc- /EHs- /fp:except- /analyze- /bigobj /utf-8 /validate-charset /Oy- -std:c++17 /Yu"WebCorePrefix.h" /FI"WebCorePrefix.h" /Fp"jfx/modules/javafx.web/build/win/Release/Source/WebCore/WebCore_SOURCES/WebCorePrefix.pch" /showIncludes /FoSource\WebCore\CMakeFiles\WebCore.dir\__\__\DerivedSources\WebCore\unified-sources\UnifiedSource-26ec8d00-4.cpp.obj /Fdlib\WebCore.pdb /FS -c DerivedSources\WebCore\unified-sources\UnifiedSource-26ec8d00-4.cpp
jfx\modules\javafx.web\src\main\native\Source\WebCore\style/StyleScopeRuleSets.cpp(234): error C2039: 'invalidationSelector': is not a member of 'WebCore::Style::RuleFeature'
jfx\modules\javafx.web\src\main\native\source\webcore\style\RuleFeature.h(42): note: see declaration of 'WebCore::Style::RuleFeature'
jfx\modules\javafx.web\src\main\native\Source\WebCore\style/StyleScopeRuleSets.cpp(249): note: see reference to function template instantiation 'WTF::Vector<WebCore::Style::InvalidationRuleSet,0,WTF::CrashOnOverflow,16,WTF::VectorMalloc> *WebCore::Style::ensureInvalidationRuleSets<WTF::AtomString,WebCore::Style::RuleFeature,WTF::DefaultHash<WTF::AtomString>,WTF::HashTraits<WTF::AtomString>>(const KeyType &,WTF::HashMap<WTF::AtomString,std::unique_ptr<WTF::Vector<WebCore::Style::InvalidationRuleSet,0,WTF::CrashOnOverflow,16,WTF::VectorMalloc>,std::default_delete<_Ty>>,WTF::DefaultHash<WTF::AtomString>,WTF::HashTraits<WTF::AtomString>,WTF::HashTraits<MappedArg>> &,const WTF::HashMap<WTF::AtomString,std::unique_ptr<WTF::Vector<WebCore::Style::RuleFeature,0,WTF::CrashOnOverflow,16,WTF::VectorMalloc>,std::default_delete<WTF::Vector<WebCore::Style::RuleFeature,0,WTF::CrashOnOverflow,16,WTF::VectorMalloc>>>,WTF::DefaultHash<WTF::AtomString>,WTF::HashTraits<WTF::AtomString>,WTF::HashTraits<std::unique_ptr<WTF::Vector<WebCore::Style::RuleFeature,0,WTF::CrashOnOverflow,16,WTF::VectorMalloc>,std::default_delete<WTF::Vector<WebCore::Style::RuleFeature,0,WTF::CrashOnOverflow,16,WTF::VectorMalloc>>>>> &)' being compiled
with
[
KeyType=WTF::AtomString,
_Ty=WTF::Vector<WebCore::Style::InvalidationRuleSet,0,WTF::CrashOnOverflow,16,WTF::VectorMalloc>,
MappedArg=std::unique_ptr<WTF::Vector<WebCore::Style::InvalidationRuleSet,0,WTF::CrashOnOverflow,16,WTF::VectorMalloc>,std::default_delete<WTF::Vector<WebCore::Style::InvalidationRuleSet,0,WTF::CrashOnOverflow,16,WTF::VectorMalloc>>>
]
jfx\modules\javafx.web\src\main\native\source\webcore\platform\graphics\ColorTypes.h(367): note: see reference to class template instantiation 'WebCore::SRGBA<uint8_t>' being compiled
jfx\modules\javafx.web\src\main\native\Source\WebCore\style/StyleScopeRuleSets.cpp(234): error C2039: '__this': is not a member of 'WebCore::Style::RuleFeature'
jfx\modules\javafx.web\src\main\native\source\webcore\style\RuleFeature.h(42): note: see declaration of 'WebCore::Style::RuleFeature'
jfx\modules\javafx.web\src\main\native\Source\WebCore\style/StyleScopeRuleSets.cpp(235): error C2039: 'invalidationSelector': is not a member of 'WebCore::Style::RuleFeature'
jfx\modules\javafx.web\src\main\native\source\webcore\style\RuleFeature.h(42): note: see declaration of 'WebCore::Style::RuleFeature'
jfx\modules\javafx.web\src\main\native\Source\WebCore\style/StyleScopeRuleSets.cpp(235): error C2039: '__this': is not a member of 'WebCore::Style::RuleFeature'
jfx\modules\javafx.web\src\main\native\source\webcore\style\RuleFeature.h(42): note: see declaration of 'WebCore::Style::RuleFeature'
...
> Task :web:compileNativeWin FAILED
FAILURE: Build failed with an exception.