Bug 106987

Summary: Get JavascriptCore compiling in VS2010 (32bit)
Product: WebKit Reporter: Roger Fong <roger_fong>
Component: PlatformAssignee: Roger Fong <roger_fong>
Status: RESOLVED FIXED    
Severity: Normal CC: bfulgham, jonlee, roger_fong, webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: 528+ (Nightly build)   
Hardware: PC   
OS: Windows 7   
Bug Depends on: 106986    
Bug Blocks: 106949, 106988    
Attachments:
Description Flags
JavaScript project files, buildscripts and property sheets
bfulgham: review+, bfulgham: commit-queue-
JavaScriptCore solution and testAPI/testRegExp projects bfulgham: review+

Description Roger Fong 2013-01-16 01:01:14 PST
This includes LLIntDesiredOffsets,LLIntOffsetsExtractor, LLIntAssembly, JavaScriptCoreGenerated, JavaScriptCore and jsc projects.
Comment 1 Radar WebKit Bug Importer 2013-01-16 01:01:27 PST
<rdar://problem/13022729>
Comment 2 Roger Fong 2013-01-16 01:21:56 PST
jsc for some reason crashes when being run in debug mode (but not release).
Otherwise, this part is also done.
Comment 3 Roger Fong 2013-01-19 15:29:47 PST
Created attachment 183640 [details]
JavaScript project files, buildscripts and property sheets
Comment 4 Brent Fulgham 2013-01-20 13:15:45 PST
Comment on attachment 183640 [details]
JavaScript project files, buildscripts and property sheets

View in context: https://bugs.webkit.org/attachment.cgi?id=183640&action=review

Do we really need to have a JavaScriptCore2010.vcproj directory?  VS 2010 uses "vxcproj" as the extension, so you could call is "JavaScriptCore.vcxproj" without conflict.

Also, this change removes the WinCairo support stuff.  This is no big deal, I can file a separate bug to add the property sheets I need.

I think this looks good as-is, but I'll hold off approving until you confirm my question about the assembly listing file.

> JavaScriptCore2010.vcproj/JavaScriptCore.resources/Info.plist:10
> +	<string>530, Copyright 2003-2010 Apple Inc.</string>

Copyright 2013?

> JavaScriptCore2010.vcproj/JavaScriptCoreExports.def:2
> +

Can we switch to using the export definition generator I built for WebKit/WebCore a few weeks ago?  This would be nice because:
1. We could maintain VS2005 compatibility if anyone needs that
2. We could support VS2012 and beyond without breaking old symbol files.
3. We can optionally add/remove symbol exports using CPP macro conditionals.

> JavaScriptCore2010.vcproj/LLInt.vcproj/LLIntOffsetsExtractor/LLIntOffsetsExtractor.asm:1
> +; Listing generated by Microsoft (R) Optimizing Compiler Version 16.00.40219.01 

Isn't this generated as part of the build? Was this intended to be checked in?
Comment 5 Roger Fong 2013-01-21 15:39:22 PST
> Do we really need to have a JavaScriptCore2010.vcproj directory?  VS 2010 uses "vxcproj" as the extension, so you could call is "JavaScriptCore.vcxproj" without conflict.

Hmm, yeah ok, I'll do that

> Also, this change removes the WinCairo support stuff.  This is no big deal, I can file a separate bug to add the property sheets I need.

Yeah, sry bout that, I don't think I'm going to be touching the Cairo files.
Would rather not touch something I don't use/know nothing about.

> Copyright 2013?

Looks like that hasn't been updated in a while huh...I'll go change that.

> > JavaScriptCore2010.vcproj/JavaScriptCoreExports.def:2
> > +
> 
> Can we switch to using the export definition generator I built for WebKit/WebCore a few weeks ago?  This would be nice because:
> 1. We could maintain VS2005 compatibility if anyone needs that
> 2. We could support VS2012 and beyond without breaking old symbol files.
> 3. We can optionally add/remove symbol exports using CPP macro conditionals.

Do you mean just adding another project that mirrors the WebKitExportGenerator project? (except in JSC of course) Or perhaps move the WebKitExportGenerator project into a generic ExportGenerator project that compiles before both JavascriptCore and WebKitLib.

JavaScriptCore2010.vcproj/LLInt.vcproj/LLIntOffsetsExtractor/LLIntOffsetsExtractor.asm:1
> Isn't this generated as part of the build? Was this intended to be checked in?

Oops no, that shouldn't be there.
Comment 6 Brent Fulgham 2013-01-22 11:50:05 PST
(In reply to comment #5)
> > > JavaScriptCore2010.vcproj/JavaScriptCoreExports.def:2
> > > +
> > 
> > Can we switch to using the export definition generator I built for WebKit/WebCore a few weeks ago?  This would be nice because:

> Do you mean just adding another project that mirrors the WebKitExportGenerator project? (except in JSC of course) Or perhaps move the WebKitExportGenerator project into a generic ExportGenerator project that compiles before both JavascriptCore and WebKitLib.

The project may not have been necessary; we might be able to build the thing using another stanza in the existing JavaScriptCoreGenerated and WebCoreGenerated makefiles.  That would probably be better (having more projects generally slows down VS).

Why don't you land what you have, and we (I?) can submit a separate patch to autogenerate things.
Comment 7 Roger Fong 2013-01-22 15:18:51 PST
http://trac.webkit.org/changeset/140472

Okay cool, yeah adding it to the *generated projects sounds great.
I was about to get to the WebKitExportGenerator project in my build steps, but I'll just check in my WebCore project files and then you can add the exports generator to both of the "generated" projects together.

That sound okay?
Also can you slap an r+ on this bug and briefly look over my WebCore patch so I don't have to feel guilty about checking in without actually getting the r+? :)
Comment 8 Brent Fulgham 2013-01-23 00:38:43 PST
Comment on attachment 183640 [details]
JavaScript project files, buildscripts and property sheets

Looks good, but please consider the items I mentioned when you land it.

Visual studio projects are fun!
Comment 9 Brent Fulgham 2013-01-23 00:39:17 PST
(In reply to comment #7)
> http://trac.webkit.org/changeset/140472
> 
> Okay cool, yeah adding it to the *generated projects sounds great.
> I was about to get to the WebKitExportGenerator project in my build steps, but I'll just check in my WebCore project files and then you can add the exports generator to both of the "generated" projects together.
> 
> That sound okay?

Perfect!

> Also can you slap an r+ on this bug and briefly look over my WebCore patch so I don't have to feel guilty about checking in without actually getting the r+? :)

Done.
Comment 10 Roger Fong 2013-01-23 10:32:40 PST
(In reply to comment #8)
> (From update of attachment 183640 [details])
> Looks good, but please consider the items I mentioned when you land it.

Yup, I made those changes locally, just didn't upload the patch.

> Visual studio projects are fun!

Conversion wizard is less fun :(, tried to use it for just WebCore, made a bunch of headers into sources. wha?
Comment 11 Brent Fulgham 2013-01-24 11:11:01 PST
It doesn't look like the JavaScriptCore solution made it into the landing.

Could you please land your "JavaScriptCore.vcxproj/JavaScriptCore.sln" file so I could try it out?
Comment 12 Roger Fong 2013-01-24 14:51:13 PST
Created attachment 184584 [details]
JavaScriptCore solution and testAPI/testRegExp projects

Made some more changes to JSC VS2010, including adding a solution for just JSC, adding some test projects, and cleaning up property sheets. Namely, the ConfigSuffixes are not needed since we build different configurations into different locations anyways.
Comment 13 Roger Fong 2013-01-24 14:51:50 PST
Note that the test projects I added don't run properly yet. I'm not sure that they do in the VS2005 build either, I'll check after I fix the current build.
Comment 14 Brent Fulgham 2013-01-25 10:08:44 PST
Comment on attachment 183640 [details]
JavaScript project files, buildscripts and property sheets

Marking obsolete, as this portion has already been landed.
Comment 15 Brent Fulgham 2013-01-25 11:53:04 PST
Comment on attachment 184584 [details]
JavaScriptCore solution and testAPI/testRegExp projects

Looks good.
Comment 16 Brent Fulgham 2013-01-25 11:55:11 PST
Can you please land the patch locally?  I can't seem to apply the current patch on my local tree due to conflict with the JavaScriptCore.vcxproj and so forth.  Maybe the patch is out of date against the current tree.
Comment 17 Roger Fong 2013-01-25 16:33:31 PST
Good to go here.