RESOLVED FIXED 67852
[Meta] Master bug for replacing exp symbol files with header export defines
https://bugs.webkit.org/show_bug.cgi?id=67852
Summary [Meta] Master bug for replacing exp symbol files with header export defines
Kevin Ollivier
Reported 2011-09-09 09:46:03 PDT
Much of the JSCore API is private (anything outside of Source/JavaScriptCore/API), and as such, it is project policy to declare these APIs with private linkage so they are not accessible by JSCore clients. However, some of those private APIs are still needed by WebCore, WebKit, DRT, etc., and so we cannot use private linkage inside JSCore for these APIs. To solve this problem, currently ports which build JSCore as a shared library must manually maintain largely similar (but not the same, as there are port-specific APIs) compiler-specific export symbol files that contain a list of symbols needed by other components of WebKit. However, this is inefficient, because each export symbol file must be changed each time a common symbol is exported (or removed from export). I came across this myself when the wx's lack of export symbol file caused problems running DRT. This bug intends to resolve this issue by having the exported symbols declared in the JSCore headers directly, so that a single change updates all ports. This will reduce overall maintenance and make it easier for other ports to build JSCore as a shared library without increasing the maintenance burden. The framework for doing this is already in JSCore, its use controlled by the WTF_USE_EXPORT_MACROS define in Platform.h, so the basic approach has already been r+ed. The next steps are as follows: 1) Add JS_EXPORT_PRIVATE / WTF_EXPORT_PRIVATE macros to any JSCore function which is needed by WebCore, DRT, etc. 2) Switch each port to using them one at a time by defining WTF_USE_EXPORT_MACROS to 1 for that port.
Attachments
Gavin Barraclough
Comment 1 2012-09-21 16:42:06 PDT
All child bugs closed & all exp files have been removed from JavaScriptCore – I believe this action is complete (yay!)
Note You need to log in before you can comment on or make changes to this bug.