Bug 205085

Summary: [CMake] Add targets for Apple Frameworks
Product: WebKit Reporter: Don Olmstead <don.olmstead>
Component: CMakeAssignee: Don Olmstead <don.olmstead>
Status: RESOLVED FIXED    
Severity: Normal CC: achristensen, annulen, benjamin, bfulgham, cdumez, cmarcelo, dbates, ews-watchlist, gyuyoung.kim, keith_miller, mark.lam, msaboff, pvollan, ryuan.choi, saam, sergio, tzagallo
Priority: P2    
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
WIP Patch
none
WIP Patch
none
WIP Patch
none
Patch
none
Patch
none
Patch
none
Patch
none
Patch
none
Patch don.olmstead: review?

Don Olmstead
Reported 2019-12-10 14:26:39 PST
Would be nice to have actual targets for Apple frameworks.
Attachments
WIP Patch (8.71 KB, patch)
2019-12-10 17:00 PST, Don Olmstead
no flags
WIP Patch (14.08 KB, patch)
2019-12-10 18:04 PST, Don Olmstead
no flags
WIP Patch (14.08 KB, patch)
2019-12-10 18:17 PST, Don Olmstead
no flags
Patch (19.51 KB, patch)
2019-12-11 10:52 PST, Don Olmstead
no flags
Patch (19.52 KB, patch)
2019-12-11 10:55 PST, Don Olmstead
no flags
Patch (23.85 KB, patch)
2020-02-18 13:55 PST, Don Olmstead
no flags
Patch (23.82 KB, patch)
2020-02-18 15:21 PST, Don Olmstead
no flags
Patch (23.82 KB, patch)
2020-02-18 16:27 PST, Don Olmstead
no flags
Patch (23.82 KB, patch)
2020-02-19 12:52 PST, Don Olmstead
don.olmstead: review?
Don Olmstead
Comment 1 2019-12-10 17:00:47 PST Comment hidden (obsolete)
Don Olmstead
Comment 2 2019-12-10 18:04:27 PST Comment hidden (obsolete)
Don Olmstead
Comment 3 2019-12-10 18:17:55 PST
Created attachment 385334 [details] WIP Patch
Don Olmstead
Comment 4 2019-12-10 18:41:22 PST
Comment on attachment 385334 [details] WIP Patch View in context: https://bugs.webkit.org/attachment.cgi?id=385334&action=review Hey Apple folks, Currently this is a WIP but it should build with both AppleWin, WinCairo and FTW. I also believe this should be usable with Mac but maybe Alex should check that out. If this works for you all then the next steps are 1. Handle ${DEBUG_SUFFIX} and have debug and release targets 2. Add in all the libraries applicable for Apple. Let me know what you all think here. > Source/cmake/FindApple.cmake:82 > +function(_FIND_APPLE_FRAMEWORK framework) > + set(OPTIONS "") > + set(oneValueArgs HEADER) > + set(multiValueArgs LIBRARY_NAMES) > + cmake_parse_arguments(opt "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) > + > + # Find include directory and library > + find_path(${framework}_INCLUDE_DIR NAMES ${opt_HEADER}) > + find_library(${framework}_LIBRARY NAMES ${opt_LIBRARY_NAMES}) > + > + if (${framework}_INCLUDE_DIR AND ${framework}_LIBRARY) > + add_library(Apple::${framework} UNKNOWN IMPORTED) > + set_target_properties(Apple::${framework} PROPERTIES > + INTERFACE_INCLUDE_DIRECTORIES "${${framework}_INCLUDE_DIR}" > + IMPORTED_LOCATION "${${framework}_LIBRARY}" > + ) > + set(${framework}_FOUND ON PARENT_SCOPE) > + if (Apple_FIND_REQUIRED_${framework}) > + set(Apple_LIBS_FOUND ${Apple_LIBS_FOUND} "${framework} (required): ${${framework}_LIBRARY}" PARENT_SCOPE) > + else () > + set(Apple_LIBS_FOUND ${Apple_LIBS_FOUND} "${framework} (optional): ${${framework}_LIBRARY}}" PARENT_SCOPE) > + endif () > + else () > + if (Apple_FIND_REQUIRED_${framework}) > + set(_Apple_REQUIRED_LIBS_FOUND NO PARENT_SCOPE) > + set(Apple_LIBS_NOT_FOUND ${Apple_LIBS_NOT_FOUND} "${framework} (required)" PARENT_SCOPE) > + else () > + set(Apple_LIBS_NOT_FOUND ${Apple_LIBS_NOT_FOUND} "${framework} (optional)" PARENT_SCOPE) > + endif () > + endif () > + > + mark_as_advanced(${framework}_INCLUDE_DIR ${framework}_LIBRARY) > +endfunction() This is the function that searches for the libraries and headers and then creates an Apple:<C> target. If the framework is found then it adds it to the found list, and includes the path to the library. If the framework is not found then it adds it to the not found list. If the components are REQUIRED then if there's anything not found the module will assert and stop the build. Currently it doesn't handle the ${DEBUG_SUFFIX} case but it wouldn't be too painful to have it do a check within this function. With an imported library we should be able to set the path to the debug binaries as well. > Source/cmake/FindApple.cmake:96 > +if ("CoreFoundation" IN_LIST Apple_FIND_COMPONENTS) > + _FIND_APPLE_FRAMEWORK(CoreFoundation > + HEADER CoreFoundation/CoreFoundation.h > + LIBRARY_NAMES CoreFoundation CFlite > + ) > +endif () > + > +if ("CoreGraphics" IN_LIST Apple_FIND_COMPONENTS) > + _FIND_APPLE_FRAMEWORK(CoreGraphics > + HEADER CoreGraphics/CoreGraphics.h > + LIBRARY_NAMES CoreGraphics > + ) > +endif () Here we just add a check for whether a particular Apple framework has been requested. If so it just calls the function. This should be pretty easy to expand further. > Source/cmake/FindApple.cmake:111 > +if (NOT Apple_FIND_QUIETLY) > + if (Apple_LIBS_FOUND) > + message(STATUS "Found the following Apple libraries:") > + foreach (found ${Apple_LIBS_FOUND}) > + message(STATUS " ${found}") > + endforeach () > + endif () > + if (Apple_LIBS_NOT_FOUND) > + message(STATUS "The following Apple libraries were not found:") > + foreach (found ${Apple_LIBS_NOT_FOUND}) > + message(STATUS " ${found}") > + endforeach () > + endif () > +endif () This just prints out the results. The output was modeled after the output of FindICU.cmake. For example WinCairo will print the following -- Found the following Apple libraries: -- CoreFoundation (required): C:/webkit/WebKitLibraries/win/lib64/CFLite.lib -- Found Apple: YES While AppleWin will print -- Found the following Apple libraries: -- CoreFoundation (required): C:/cygwin/home/buildbot/WebKitLibraries/win/lib64/CoreFoundation.lib -- Found Apple: Y
Don Olmstead
Comment 5 2019-12-11 10:52:04 PST
Created attachment 385408 [details] Patch This completely migrates the Windows ports. The Mac port is left as an exercise for the reader, most likely Alex.
Don Olmstead
Comment 6 2019-12-11 10:55:37 PST
Konstantin Tokarev
Comment 7 2019-12-11 10:58:23 PST
I doubt it has any use for Mac as CMake natively supports finding and linking Apple frameworks
Don Olmstead
Comment 8 2019-12-11 11:35:02 PST
(In reply to Konstantin Tokarev from comment #7) > I doubt it has any use for Mac as CMake natively supports finding and > linking Apple frameworks Ok good to know. Wasn't sure how one would make targets out of them. Currently there's find_library calls in the Mac CMake.
Konstantin Tokarev
Comment 9 2019-12-11 11:50:47 PST
(In reply to Don Olmstead from comment #8) > Currently there's find_library calls in the Mac CMake. find_library works fine with frameworks, and linking framework in Apple way automatically adds include paths
Alex Christensen
Comment 10 2019-12-12 15:02:29 PST
Comment on attachment 385412 [details] Patch I'm not too opposed to this change, but I don't know what it improves and there's a high risk that it will break something in our hard-to-test internal build even once debug suffixes are added.
Don Olmstead
Comment 11 2020-01-09 11:47:24 PST
Comment on attachment 385412 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=385412&action=review (In reply to Alex Christensen from comment #10) > Comment on attachment 385412 [details] > Patch > > I'm not too opposed to this change, but I don't know what it improves and > there's a high risk that it will break something in our hard-to-test > internal build even once debug suffixes are added. Modern CMake wants everything to be targets. Its a lot cleaner in this case and it'll propagate things like include directories and linking information automatically. With the Apple internal build it includes the OptionsAppleWin.cmake file for each directory so it will have the targets available. I'd just like someone to run through with a real Apple internal build before landing. > Source/cmake/FindApple.cmake:115 > +if ("CoreFoundation" IN_LIST Apple_FIND_COMPONENTS) > + _FIND_APPLE_FRAMEWORK(CoreFoundation > + HEADER CoreFoundation/CoreFoundation.h > + LIBRARY_NAMES CoreFoundation CFlite Any AppleWin internal build stuff that requires ${DEBUG_SUFFIX} would just be inputted into the LIBRARY_NAMES area. Maybe perarne can verify that works as expected?
Don Olmstead
Comment 12 2020-02-18 13:55:36 PST Comment hidden (obsolete)
Don Olmstead
Comment 13 2020-02-18 15:21:49 PST
Alex Christensen
Comment 14 2020-02-18 15:31:29 PST
Comment on attachment 391102 [details] Patch I think this looks good. I'd like someone else to double check that things work before landing.
Per Arne Vollan
Comment 15 2020-02-18 15:32:52 PST
(In reply to Alex Christensen from comment #14) > Comment on attachment 391102 [details] > Patch > > I think this looks good. I'd like someone else to double check that things > work before landing. I can do a local test compile.
Don Olmstead
Comment 16 2020-02-18 16:27:21 PST
Created attachment 391117 [details] Patch Fix the style goof
Don Olmstead
Comment 17 2020-02-18 16:30:39 PST
Comment on attachment 391117 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=391117&action=review Per Arne thank you for verifying the internal build. I think everything should be good but feel free to ping me if you hit any issues. > Source/cmake/FindApple.cmake:87 > + LIBRARY_NAMES ASL${DEBUG_SUFFIX} I just added ${DEBUG_SUFFIX} to all the library names. This should be fine for the internal build. You'd just want to make sure that it links _debug.lib in all its builds. Should be able to see this from the log. > Source/cmake/OptionsAppleWin.cmake:62 > set(CMAKE_REQUIRED_LIBRARIES > - "${WEBKIT_LIBRARIES_LINK_DIR}/CoreFoundation${DEBUG_SUFFIX}.lib" > - "${WEBKIT_LIBRARIES_LINK_DIR}/AVFoundationCF${DEBUG_SUFFIX}.lib" > - "${WEBKIT_LIBRARIES_LINK_DIR}/QuartzCore${DEBUG_SUFFIX}.lib" > - "${WEBKIT_LIBRARIES_LINK_DIR}/libdispatch${DEBUG_SUFFIX}.lib" > + Apple::AVFoundationCF > + Apple::CoreFoundation > + Apple::QuartzCore > + Apple::libdispatch This is the only change that I'm worried about. Only the Apple internal build will be successful with all the different options being set. The documentation for CMAKE_REQUIRED_LIBRARIES says that targets are ok but remember Per Arne that all the options should end up on with the internal build.
Per Arne Vollan
Comment 19 2020-02-19 11:41:49 PST
Sorry, ignore the previous comment, it does seem to find the libraries.
Per Arne Vollan
Comment 20 2020-02-19 11:43:50 PST
(In reply to Per Arne Vollan from comment #19) > Sorry, ignore the previous comment, it does seem to find the libraries. Yes, libraries are found, build is in progress. I will let you know if I see any issues.
Per Arne Vollan
Comment 21 2020-02-19 11:49:10 PST Comment hidden (obsolete)
Don Olmstead
Comment 22 2020-02-19 12:52:13 PST
Created attachment 391191 [details] Patch Fix the issue Per Arne had. Used a , instead of ; in the targets.
Per Arne Vollan
Comment 23 2020-02-19 14:57:21 PST
There seems to be some compile errors: Creating library C:/Projects//WebKit/Debug/build32/lib32/JavaScriptCore_debug.lib and object C:/Projects//WebKit/Debug/build32/lib32/JavaScriptCore_debug.exp UnifiedSource-f2e18ffc-35.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) bool __cdecl WTF::isMainRunLoop(void)" (__imp_?isMainRunLoop@WTF@@YA_NXZ) referenced in function "void __cdecl WTF::removeIterator<class JSC::CallFrame *,struct WTF::KeyValuePair<class JSC::CallFrame *,class s td::unique_ptr<struct JSC::CheckpointOSRExitSideState,struct std::default_delete<struct JSC::CheckpointOSRExitSideState> > >,struct WTF::KeyValuePairKeyExtractor<struct WTF::KeyValuePair<class JSC::CallFrame *,class std::unique_ptr<struct JSC::CheckpointOSRExitSideState,struct std::default_delete<struct J SC::CheckpointOSRExitSideState> > > >,struct WTF::PtrHash<class JSC::CallFrame *>,struct WTF::HashMap<class JSC::CallFrame *,class std::unique_ptr<struct JSC::CheckpointOSRExitSideState,struct std::default_delete<struct JSC::CheckpointOSRExitSideState> >,struct WTF::PtrHash<class JSC::CallFrame *>,struct WTF::HashTraits<class JSC::CallFrame *>,struct WTF::HashTraits<class std::unique_ptr<struct JSC::CheckpointOSRExitSideState,struct std::default_delete<struct JSC::CheckpointOSRExitSideState> > > >::KeyValuePairTraits,struct WTF::HashTraits<class JSC::CallFrame *> >(class WTF::HashTableConstIterator<class JSC::CallFrame *,struct WTF::KeyValuePair<class JSC::CallFrame *,class std::unique_ptr<struct JSC::CheckpointOSRExitSideState,struct std::default_delete<struct JSC::CheckpointOSRExitSideState> > >,struct WTF::KeyValuePairKeyExtractor<struct WTF::KeyValuePair<class JSC::CallFrame *,class std::unique_ptr<st ruct JSC::CheckpointOSRExitSideState,struct std::default_delete<struct JSC::CheckpointOSRExitSideState> > > >,struct WTF::PtrHash<class JSC::CallFrame *>,struct WTF::HashMap<class JSC::CallFrame *,class std::unique_ptr<struct JSC::CheckpointOSRExitSideState,struct std::default_delete<struct JSC::Checkpoin tOSRExitSideState> >,struct WTF::PtrHash<class JSC::CallFrame *>,struct WTF::HashTraits<class JSC::CallFrame *>,struct WTF::HashTraits<class std::unique_ptr<struct JSC::CheckpointOSRExitSideState,struct std::default_delete<struct JSC::CheckpointOSRExitSideState> > > >::KeyValuePairTraits,struct WTF::HashT raits<class JSC::CallFrame *> > *)" (??$removeIterator@PAVCallFrame@JSC@@U?$KeyValuePair@PAVCallFrame@JSC@@V?$unique_ptr@UCheckpointOSRExitSideState@JSC@@U?$default_delete@UCheckpointOSRExitSideState@JSC@@@std@@@std@@@WTF@@U?$KeyValuePairKeyExtractor@U?$KeyValuePair@PAVCallFrame@JSC@@V?$unique_ptr@UCheckp ointOSRExitSideState@JSC@@U?$default_delete@UCheckpointOSRExitSideState@JSC@@@std@@@std@@@WTF@@@4@U?$PtrHash@PAVCallFrame@JSC@@@4@UKeyValuePairTraits@?$HashMap@PAVCallFrame@JSC@@V?$unique_ptr@UCheckpointOSRExitSideState@JSC@@U?$default_delete@UCheckpointOSRExitSideState@JSC@@@std@@@std@@U?$PtrHash@PAVCall Frame@JSC@@@WTF@@U?$HashTraits@PAVCallFrame@JSC@@@6@U?$HashTraits@V?$unique_ptr@UCheckpointOSRExitSideState@JSC@@U?$default_delete@UCheckpointOSRExitSideState@JSC@@@std@@@std@@@6@@4@U?$HashTraits@PAVCallFrame@JSC@@@4@@WTF@@YAXPAV?$HashTableConstIterator@PAVCallFrame@JSC@@U?$KeyValuePair@PAVCallFrame@JSC@@ V?$unique_ptr@UCheckpointOSRExitSideState@JSC@@U?$default_delete@UCheckpointOSRExitSideState@JSC@@@std@@@std@@@WTF@@U?$KeyValuePairKeyExtractor@U?$KeyValuePair@PAVCallFrame@JSC@@V?$unique_ptr@UCheckpointOSRExitSideState@JSC@@U?$default_delete@UCheckpointOSRExitSideState@JSC@@@std@@@std@@@WTF@@@4@U?$PtrHas h@PAVCallFrame@JSC@@@4@UKeyValuePairTraits@?$HashMap@PAVCallFrame@JSC@@V?$unique_ptr@UCheckpointOSRExitSideState@JSC@@U?$default_delete@UCheckpointOSRExitSideState@JSC@@@std@@@std@@U?$PtrHash@PAVCallFrame@JSC@@@WTF@@U?$HashTraits@PAVCallFrame@JSC@@@6@U?$HashTraits@V?$unique_ptr@UCheckpointOSRExitSideState @JSC@@U?$default_delete@UCheckpointOSRExitSideState@JSC@@@std@@@std@@@6@@4@U?$HashTraits@PAVCallFrame@JSC@@@4@@0@@Z) [C:\Projects\\WebKit\Debug\build32\JavaScriptCore.vcxproj] [C:\Projects\\WebKit\Source\JavaScriptCore\JavaScriptCore.vcxproj\JavaScriptCore.proj] UnifiedSource-0284c6ac-2.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) bool __cdecl WTF::isMainRunLoop(void)" (__imp_?isMainRunLoop@WTF@@YA_NXZ) [C:\Projects\\WebKit\Debug\build32\JavaScriptCore.vcxproj] [C:\Projects\\WebKit\Source\JavaScriptCore\JavaSc riptCore.vcxproj\JavaScriptCore.proj]
Don Olmstead
Comment 24 2020-02-19 15:02:27 PST
(In reply to Per Arne Vollan from comment #23) > There seems to be some compile errors: > > Creating library > C:/Projects//WebKit/Debug/build32/lib32/JavaScriptCore_debug.lib and object > C:/Projects//WebKit/Debug/build32/lib32/JavaScriptCore_debug.exp > UnifiedSource-f2e18ffc-35.obj : error LNK2019: unresolved external symbol > "__declspec(dllimport) bool __cdecl WTF::isMainRunLoop(void)" > (__imp_?isMainRunLoop@WTF@@YA_NXZ) referenced in function "void __cdecl > WTF::removeIterator<class JSC::CallFrame *,struct WTF::KeyValuePair<class > JSC::CallFrame *,class s > td::unique_ptr<struct JSC::CheckpointOSRExitSideState,struct > std::default_delete<struct JSC::CheckpointOSRExitSideState> > >,struct > WTF::KeyValuePairKeyExtractor<struct WTF::KeyValuePair<class JSC::CallFrame > *,class std::unique_ptr<struct JSC::CheckpointOSRExitSideState,struct > std::default_delete<struct J > SC::CheckpointOSRExitSideState> > > >,struct WTF::PtrHash<class > JSC::CallFrame *>,struct WTF::HashMap<class JSC::CallFrame *,class > std::unique_ptr<struct JSC::CheckpointOSRExitSideState,struct > std::default_delete<struct JSC::CheckpointOSRExitSideState> >,struct > WTF::PtrHash<class JSC::CallFrame *>,struct > WTF::HashTraits<class JSC::CallFrame *>,struct WTF::HashTraits<class > std::unique_ptr<struct JSC::CheckpointOSRExitSideState,struct > std::default_delete<struct JSC::CheckpointOSRExitSideState> > > > >::KeyValuePairTraits,struct WTF::HashTraits<class JSC::CallFrame *> >(class > WTF::HashTableConstIterator<class > JSC::CallFrame *,struct WTF::KeyValuePair<class JSC::CallFrame *,class > std::unique_ptr<struct JSC::CheckpointOSRExitSideState,struct > std::default_delete<struct JSC::CheckpointOSRExitSideState> > >,struct > WTF::KeyValuePairKeyExtractor<struct WTF::KeyValuePair<class JSC::CallFrame > *,class std::unique_ptr<st > ruct JSC::CheckpointOSRExitSideState,struct std::default_delete<struct > JSC::CheckpointOSRExitSideState> > > >,struct WTF::PtrHash<class > JSC::CallFrame *>,struct WTF::HashMap<class JSC::CallFrame *,class > std::unique_ptr<struct JSC::CheckpointOSRExitSideState,struct > std::default_delete<struct JSC::Checkpoin > tOSRExitSideState> >,struct WTF::PtrHash<class JSC::CallFrame *>,struct > WTF::HashTraits<class JSC::CallFrame *>,struct WTF::HashTraits<class > std::unique_ptr<struct JSC::CheckpointOSRExitSideState,struct > std::default_delete<struct JSC::CheckpointOSRExitSideState> > > > >::KeyValuePairTraits,struct WTF::HashT > raits<class JSC::CallFrame *> > *)" > (??$removeIterator@PAVCallFrame@JSC@@U?$KeyValuePair@PAVCallFrame@JSC@@V?$uni > que_ptr@UCheckpointOSRExitSideState@JSC@@U?$default_delete@UCheckpointOSRExit > SideState@JSC@@@std@@@std@@@WTF@@U?$KeyValuePairKeyExtractor@U?$KeyValuePair@ > PAVCallFrame@JSC@@V?$unique_ptr@UCheckp > ointOSRExitSideState@JSC@@U?$default_delete@UCheckpointOSRExitSideState@JSC@@ > @std@@@std@@@WTF@@@4@U?$PtrHash@PAVCallFrame@JSC@@@4@UKeyValuePairTraits@?$Ha > shMap@PAVCallFrame@JSC@@V?$unique_ptr@UCheckpointOSRExitSideState@JSC@@U?$def > ault_delete@UCheckpointOSRExitSideState@JSC@@@std@@@std@@U?$PtrHash@PAVCall > Frame@JSC@@@WTF@@U?$HashTraits@PAVCallFrame@JSC@@@6@U?$HashTraits@V?$unique_p > tr@UCheckpointOSRExitSideState@JSC@@U?$default_delete@UCheckpointOSRExitSideS > tate@JSC@@@std@@@std@@@6@@4@U?$HashTraits@PAVCallFrame@JSC@@@4@@WTF@@YAXPAV?$ > HashTableConstIterator@PAVCallFrame@JSC@@U?$KeyValuePair@PAVCallFrame@JSC@@ > V?$unique_ptr@UCheckpointOSRExitSideState@JSC@@U?$default_delete@UCheckpointO > SRExitSideState@JSC@@@std@@@std@@@WTF@@U?$KeyValuePairKeyExtractor@U?$KeyValu > ePair@PAVCallFrame@JSC@@V?$unique_ptr@UCheckpointOSRExitSideState@JSC@@U?$def > ault_delete@UCheckpointOSRExitSideState@JSC@@@std@@@std@@@WTF@@@4@U?$PtrHas > h@PAVCallFrame@JSC@@@4@UKeyValuePairTraits@?$HashMap@PAVCallFrame@JSC@@V?$uni > que_ptr@UCheckpointOSRExitSideState@JSC@@U?$default_delete@UCheckpointOSRExit > SideState@JSC@@@std@@@std@@U?$PtrHash@PAVCallFrame@JSC@@@WTF@@U?$HashTraits@P > AVCallFrame@JSC@@@6@U?$HashTraits@V?$unique_ptr@UCheckpointOSRExitSideState > @JSC@@U?$default_delete@UCheckpointOSRExitSideState@JSC@@@std@@@std@@@6@@4@U? > $HashTraits@PAVCallFrame@JSC@@@4@@0@@Z) > [C:\Projects\\WebKit\Debug\build32\JavaScriptCore.vcxproj] > [C:\Projects\\WebKit\Source\JavaScriptCore\JavaScriptCore. > vcxproj\JavaScriptCore.proj] > UnifiedSource-0284c6ac-2.obj : error LNK2001: unresolved external symbol > "__declspec(dllimport) bool __cdecl WTF::isMainRunLoop(void)" > (__imp_?isMainRunLoop@WTF@@YA_NXZ) > [C:\Projects\\WebKit\Debug\build32\JavaScriptCore.vcxproj] > [C:\Projects\\WebKit\Source\JavaScriptCore\JavaSc > riptCore.vcxproj\JavaScriptCore.proj] Are there other linker errors? It looks like WTF::isMainRunLoop is properly exported.
Don Olmstead
Comment 25 2022-12-05 16:43:38 PST
EWS
Comment 26 2022-12-06 12:43:47 PST
Committed 257428@main (d9aab5144958): <https://commits.webkit.org/257428@main> Reviewed commits have been landed. Closing PR #7179 and removing active labels.
Note You need to log in before you can comment on or make changes to this bug.