Bug 40038 - Build fixes for VS Express 2005
Summary: Build fixes for VS Express 2005
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: New Bugs (show other bugs)
Version: 528+ (Nightly build)
Hardware: Other Windows XP
: P2 Normal
Assignee: Nobody
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-06-01 19:26 PDT by Tony Gentilcore
Modified: 2010-06-03 23:09 PDT (History)
3 users (show)

See Also:


Attachments
Patch (4.23 KB, patch)
2010-06-01 19:40 PDT, Tony Gentilcore
no flags Details | Formatted Diff | Diff
Patch (4.93 KB, patch)
2010-06-01 19:45 PDT, Tony Gentilcore
no flags Details | Formatted Diff | Diff
Patch (9.89 KB, patch)
2010-06-02 13:36 PDT, Tony Gentilcore
no flags Details | Formatted Diff | Diff
Patch (4.06 KB, patch)
2010-06-02 14:59 PDT, Tony Gentilcore
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Tony Gentilcore 2010-06-01 19:26:33 PDT
Build fixes for VS Express 2005
Comment 1 Tony Gentilcore 2010-06-01 19:40:10 PDT
Created attachment 57615 [details]
Patch
Comment 2 Tony Gentilcore 2010-06-01 19:45:27 PDT
Created attachment 57616 [details]
Patch
Comment 3 David Levin 2010-06-02 01:03:04 PDT
Comment on attachment 57616 [details]
Patch

Do you know why are these changes needed for VS Express 2005 (when other versions of VS compile the files fine)?

Ideally the ChangeLog would tell me.
Comment 4 Adam Roben (:aroben) 2010-06-02 06:48:49 PDT
Comment on attachment 57616 [details]
Patch

> +        * WebKitAPITest/WebKitAPITest.vcproj:

Please make changes to WebKitAPITestCommon.vsprops instead of this file.
Comment 5 Tony Gentilcore 2010-06-02 13:36:45 PDT
Created attachment 57695 [details]
Patch
Comment 6 Tony Gentilcore 2010-06-02 13:37:06 PDT
(In reply to comment #4)
> (From update of attachment 57616 [details])
> > +        * WebKitAPITest/WebKitAPITest.vcproj:
> 
> Please make changes to WebKitAPITestCommon.vsprops instead of this file.

Thanks. Fixed.
Comment 7 Tony Gentilcore 2010-06-02 13:42:41 PDT
(In reply to comment #3)
> (From update of attachment 57616 [details])
> Do you know why are these changes needed for VS Express 2005 (when other versions of VS compile the files fine)?

I don't know how it could link without these DLLs unless other versions of VS somehow have an additional mechanism by which the dependencies are inherited.

Here is how I came about this patch...

$ build-webkit
WinLauncher/Release/BuildLog.htm:
PrintWebUIDelegate.obj : error LNK2001: unresolved external symbol __imp__GetDeviceCaps@8
PrintWebUIDelegate.obj : error LNK2001: unresolved external symbol __imp__GetTextMetricsW@8
PrintWebUIDelegate.obj : error LNK2001: unresolved external symbol __imp__GetStockObject@4
PrintWebUIDelegate.obj : error LNK2001: unresolved external symbol __imp__SelectObject@8
PrintWebUIDelegate.obj : error LNK2001: unresolved external symbol __imp__MoveToEx@16
PrintWebUIDelegate.obj : error LNK2001: unresolved external symbol __imp__LineTo@12
WinLauncher.obj : error LNK2001: unresolved external symbol __imp__PrintDlgW@4
WinLauncher.obj : error LNK2001: unresolved external symbol __imp__SetAbortProc@8
WinLauncher.obj : error LNK2001: unresolved external symbol __imp__StartDocW@8
WinLauncher.obj : error LNK2001: unresolved external symbol __imp__StartPage@4
WinLauncher.obj : error LNK2001: unresolved external symbol __imp__EndPage@4
WinLauncher.obj : error LNK2001: unresolved external symbol __imp__EndDoc@4
WinLauncher.obj : error LNK2001: unresolved external symbol __imp__DeleteDC@4


*Add gdi32.lib*
$ build-webkit
WinLauncher/Release/BuildLog.htm:
WinLauncher.obj : error LNK2001: unresolved external symbol __imp__PrintDlgW@4


*Add comdlg32.lib*
$ build-webkit
WebKitAPITest/Debug/BuildLog.htm:
HostWindow.obj : error LNK2019: unresolved external symbol __imp__CreateWindowExW@48 referenced in function "public: bool __thiscall WebKitAPITest::HostWindow::initialize(void)" (?initialize@HostWindow@WebKitAPITest@@QAE_NXZ)
TestsController.obj : error LNK2001: unresolved external symbol __imp__CreateWindowExW@48
HostWindow.obj : error LNK2019: unresolved external symbol __imp__DestroyWindow@4 referenced in function "public: __thiscall WebKitAPITest::HostWindow::~HostWindow(void)" (??1HostWindow@WebKitAPITest@@QAE@XZ)
WebViewDestruction.obj : error LNK2001: unresolved external symbol __imp__DestroyWindow@4
HostWindow.obj : error LNK2019: unresolved external symbol __imp__IsWindow@4 referenced in function "public: __thiscall WebKitAPITest::HostWindow::~HostWindow(void)" (??1HostWindow@WebKitAPITest@@QAE@XZ)
WebViewDestruction.obj : error LNK2001: unresolved external symbol __imp__IsWindow@4
HostWindow.obj : error LNK2019: unresolved external symbol __imp__GetClientRect@8 referenced in function "public: struct tagRECT __thiscall WebKitAPITest::HostWindow::clientRect(void)const " (?clientRect@HostWindow@WebKitAPITest@@QBE?AUtagRECT@@XZ)
HostWindow.obj : error LNK2019: unresolved external symbol __imp__RegisterClassExW@4 referenced in function "private: static void __cdecl WebKitAPITest::HostWindow::registerWindowClass(void)" (?registerWindowClass@HostWindow@WebKitAPITest@@CAXXZ)
TestsController.obj : error LNK2001: unresolved external symbol __imp__RegisterClassExW@4
HostWindow.obj : error LNK2019: unresolved external symbol __imp__LoadCursorW@8 referenced in function "private: static void __cdecl WebKitAPITest::HostWindow::registerWindowClass(void)" (?registerWindowClass@HostWindow@WebKitAPITest@@CAXXZ)
TestsController.obj : error LNK2001: unresolved external symbol __imp__LoadCursorW@8
HostWindow.obj : error LNK2019: unresolved external symbol __imp__DefWindowProcW@16 referenced in function "private: static long __stdcall WebKitAPITest::HostWindow::wndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?wndProc@HostWindow@WebKitAPITest@@CGJPAUHWND__@@IIJ@Z)
TestsController.obj : error LNK2001: unresolved external symbol __imp__DefWindowProcW@16
main.obj : error LNK2019: unresolved external symbol __imp__OleInitialize@4 referenced in function _main
TestsController.obj : error LNK2019: unresolved external symbol __imp__DispatchMessageW@4 referenced in function "public: bool __thiscall WebKitAPITest::TestsController::runAllTests(void)" (?runAllTests@TestsController@WebKitAPITest@@QAE_NXZ)
WebViewDestruction.obj : error LNK2001: unresolved external symbol __imp__DispatchMessageW@4
TestsController.obj : error LNK2019: unresolved external symbol __imp__TranslateMessage@4 referenced in function "public: bool __thiscall WebKitAPITest::TestsController::runAllTests(void)" (?runAllTests@TestsController@WebKitAPITest@@QAE_NXZ)
WebViewDestruction.obj : error LNK2001: unresolved external symbol __imp__TranslateMessage@4
TestsController.obj : error LNK2019: unresolved external symbol __imp__GetMessageW@16 referenced in function "public: bool __thiscall WebKitAPITest::TestsController::runAllTests(void)" (?runAllTests@TestsController@WebKitAPITest@@QAE_NXZ)
TestsController.obj : error LNK2019: unresolved external symbol __imp__PostQuitMessage@4 referenced in function "private: void __thiscall WebKitAPITest::TestsController::runNextTest(void)" (?runNextTest@TestsController@WebKitAPITest@@AAEXXZ)
TestsController.obj : error LNK2019: unresolved external symbol __imp__SetTimer@16 referenced in function "private: void __thiscall WebKitAPITest::TestsController::runNextTestSoon(void)" (?runNextTestSoon@TestsController@WebKitAPITest@@AAEXXZ)
TestsController.obj : error LNK2019: unresolved external symbol __imp__KillTimer@8 referenced in function "private: static long __stdcall WebKitAPITest::TestsController::wndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?wndProc@TestsController@WebKitAPITest@@CGJPAUHWND__@@IIJ@Z)
WebViewDestruction.obj : error LNK2019: unresolved external symbol __imp__PeekMessageW@20 referenced in function "void __cdecl WebKitAPITest::runMessagePump(unsigned long)" (?runMessagePump@WebKitAPITest@@YAXK@Z)


*Add user32.lib*
$ build-webkit
WebKitAPITest/Debug/BuildLog.htm:
main.obj : error LNK2019: unresolved external symbol __imp__OleInitialize@4 referenced in function _main


*Add ole32.lib*
$ build-webkit
*WebKit is now built*

> 
> Ideally the ChangeLog would tell me.

I updated the ChangeLog to include the linker errors. Please let me know if it is too verbose or if you'd like to see any other tweaks.
Comment 8 Adam Roben (:aroben) 2010-06-02 14:39:35 PDT
Comment on attachment 57695 [details]
Patch

I think the ChangeLog should just say something like "Visual Studio implicitly links against these libs. VC++ Express does not."

r=me, but please do remove all those linker errors from the ChangeLog.
Comment 9 Tony Gentilcore 2010-06-02 14:59:56 PDT
Created attachment 57706 [details]
Patch
Comment 10 Tony Gentilcore 2010-06-02 15:00:49 PDT
(In reply to comment #8)
> (From update of attachment 57695 [details])
> I think the ChangeLog should just say something like "Visual Studio implicitly links against these libs. VC++ Express does not."
> 
> r=me, but please do remove all those linker errors from the ChangeLog.

Thanks. Done :-)
Comment 11 Daniel Bates 2010-06-02 15:01:38 PDT
Tony, I haven't compiled with VCExpress for some time so maybe this is a new issue, but I was able to compile with VCExpress before without a problem. I have a VM image with VCExpress and will try to compile with/without your patch tonight.

Out of curiosity, did you follow the steps on http://webkit.org/building/tools.html, in particular with step 3 in http://msdn.microsoft.com/en-us/library/ms235626(VS.80).aspx?
Comment 12 Tony Gentilcore 2010-06-02 15:11:32 PDT
(In reply to comment #11)
> Tony, I haven't compiled with VCExpress for some time so maybe this is a new issue, but I was able to compile with VCExpress before without a problem. I have a VM image with VCExpress and will try to compile with/without your patch tonight.
> 
> Out of curiosity, did you follow the steps on http://webkit.org/building/tools.html, in particular with step 3 in http://msdn.microsoft.com/en-us/library/ms235626(VS.80).aspx?

Yes, I followed those instructions and installed all service packs. However, my environment may not be completely typical...

I use Visual Studio 2008 for all of my development on chromium/webkit. Everything works great there, no problems. However, when I went to use the build-webkit/run-webkit-tests scripts, they wouldn't recognize VS2008, so I installed VSExpress 2005 along side it (following the above instructions). With https://bugs.webkit.org/show_bug.cgi?id=39296 and this patch, I was able to get build-webkit/run-webkit-tests working. So I thought it would be useful to contribute this up for others.

If you think it will be useful, I'd be interested in modifying build-webkit to use Visual Studio 2008 if available (gracefully falling back to other version). Thoughts?
Comment 13 WebKit Commit Bot 2010-06-03 23:09:29 PDT
Comment on attachment 57706 [details]
Patch

Clearing flags on attachment: 57706

Committed r60656: <http://trac.webkit.org/changeset/60656>
Comment 14 WebKit Commit Bot 2010-06-03 23:09:34 PDT
All reviewed patches have been landed.  Closing bug.