{"action":"created","issue":{"url":"https://api.github.com/repos/nodejs/node/issues/7487","repository_url":"https://api.github.com/repos/nodejs/node","labels_url":"https://api.github.com/repos/nodejs/node/issues/7487/labels{/name}","comments_url":"https://api.github.com/repos/nodejs/node/issues/7487/comments","events_url":"https://api.github.com/repos/nodejs/node/issues/7487/events","html_url":"https://github.com/nodejs/node/pull/7487","id":163016464,"number":7487,"title":"build: windows sharedlib support (DO NOT LAND YET)","user":{"login":"stefanmb","id":1356314,"avatar_url":"https://avatars.githubusercontent.com/u/1356314?v=3","gravatar_id":"","url":"https://api.github.com/users/stefanmb","html_url":"https://github.com/stefanmb","followers_url":"https://api.github.com/users/stefanmb/followers","following_url":"https://api.github.com/users/stefanmb/following{/other_user}","gists_url":"https://api.github.com/users/stefanmb/gists{/gist_id}","starred_url":"https://api.github.com/users/stefanmb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stefanmb/subscriptions","organizations_url":"https://api.github.com/users/stefanmb/orgs","repos_url":"https://api.github.com/users/stefanmb/repos","events_url":"https://api.github.com/users/stefanmb/events{/privacy}","received_events_url":"https://api.github.com/users/stefanmb/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/nodejs/node/labels/build","name":"build","color":"eb6420"},{"url":"https://api.github.com/repos/nodejs/node/labels/in%20progress","name":"in progress","color":"ededed"},{"url":"https://api.github.com/repos/nodejs/node/labels/V8","name":"V8","color":"0052cc"},{"url":"https://api.github.com/repos/nodejs/node/labels/windows","name":"windows","color":"9944dd"}],"state":"open","locked":false,"assignee":{"login":"stefanmb","id":1356314,"avatar_url":"https://avatars.githubusercontent.com/u/1356314?v=3","gravatar_id":"","url":"https://api.github.com/users/stefanmb","html_url":"https://github.com/stefanmb","followers_url":"https://api.github.com/users/stefanmb/followers","following_url":"https://api.github.com/users/stefanmb/following{/other_user}","gists_url":"https://api.github.com/users/stefanmb/gists{/gist_id}","starred_url":"https://api.github.com/users/stefanmb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stefanmb/subscriptions","organizations_url":"https://api.github.com/users/stefanmb/orgs","repos_url":"https://api.github.com/users/stefanmb/repos","events_url":"https://api.github.com/users/stefanmb/events{/privacy}","received_events_url":"https://api.github.com/users/stefanmb/received_events","type":"User","site_admin":false},"assignees":[{"login":"stefanmb","id":1356314,"avatar_url":"https://avatars.githubusercontent.com/u/1356314?v=3","gravatar_id":"","url":"https://api.github.com/users/stefanmb","html_url":"https://github.com/stefanmb","followers_url":"https://api.github.com/users/stefanmb/followers","following_url":"https://api.github.com/users/stefanmb/following{/other_user}","gists_url":"https://api.github.com/users/stefanmb/gists{/gist_id}","starred_url":"https://api.github.com/users/stefanmb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stefanmb/subscriptions","organizations_url":"https://api.github.com/users/stefanmb/orgs","repos_url":"https://api.github.com/users/stefanmb/repos","events_url":"https://api.github.com/users/stefanmb/events{/privacy}","received_events_url":"https://api.github.com/users/stefanmb/received_events","type":"User","site_admin":false}],"milestone":null,"comments":13,"created_at":"2016-06-29T20:16:20Z","updated_at":"2016-07-19T10:16:33Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/nodejs/node/pulls/7487","html_url":"https://github.com/nodejs/node/pull/7487","diff_url":"https://github.com/nodejs/node/pull/7487.diff","patch_url":"https://github.com/nodejs/node/pull/7487.patch"},"body":"<!--\r\nThank you for your pull request. Please review below requirements.\r\n\r\nBug fixes and new features should include tests and possibly benchmarks.\r\n\r\nContributors guide: https://github.com/nodejs/node/blob/master/CONTRIBUTING.md\r\n-->\r\n\r\n##### Checklist\r\n<!-- Remove items that do not apply. For completed items, change [ ] to [x]. -->\r\n\r\n- [x] `make -j4 test` (UNIX), or `vcbuild test nosign` (Windows) passes\r\n- [] commit message follows commit guidelines (Edit: Will fix after review)\r\n\r\n##### Affected core subsystem(s)\r\n<!-- Provide affected core subsystem(s) (like doc, cluster, crypto, etc). -->\r\n\r\nbuild\r\n\r\n##### Description of change\r\n<!-- Provide a description of the change below this comment. -->\r\n\r\nFollowing https://github.com/nodejs/node/pull/6994 the next step is to provide support for generating a DLL on Windows for people using Node.js as a shared library. This commit makes the necessary changes, but unfortunately it requires a floating patch to V8's gyp files. I do not believe there is any way around this issue, so I am opening the PR now to get some feedback on my approach.\r\n\r\nOverview:\r\n* Added \"dll\" option to vcbuild.bat\r\n* Insure that Unix SO name is not used on Windows (i.e. produce a .dll file) \r\n* Insure that Node and its V8 dependency link against the Visual C++ Runtime dynamically.\r\n\r\nThe last point is very important. In Windows If different libraries you link use different versions of the C++ Runtime you will get a variety of issues that are well documented here: http://siomsystems.com/mixing-visual-studio-versions/. Note that this situation can occur in multiple ways:\r\n* If different libraries in your program mix static and dynamic runtime libraries.\r\n* If different libraries in your program mix versions of Visual Studio.\r\n* If both situations above occur.\r\n\r\nThis also means that people using `node.dll` must also use the exact same Visual Studio version that Node was compiled with to build the program that links against the DLL. Further information is available here: https://www.softwariness.com/articles/visual-cpp-runtime-libraries/\r\n\r\nThe basic problem with V8 is that its gyp files are setup to always link statically against the C++ runtime unless V8 itself is being compiled as a shared library. The floating patch I provided is minimal and is inspired by https://github.com/qt/qtwebengine-chromium/commit/743a6413f3cc0a621865a81f06c6d7bed7b662c5.\r\n\r\n"},"comment":{"url":"https://api.github.com/repos/nodejs/node/issues/comments/233589926","html_url":"https://github.com/nodejs/node/pull/7487#issuecomment-233589926","issue_url":"https://api.github.com/repos/nodejs/node/issues/7487","id":233589926,"user":{"login":"sxa555","id":6487691,"avatar_url":"https://avatars.githubusercontent.com/u/6487691?v=3","gravatar_id":"","url":"https://api.github.com/users/sxa555","html_url":"https://github.com/sxa555","followers_url":"https://api.github.com/users/sxa555/followers","following_url":"https://api.github.com/users/sxa555/following{/other_user}","gists_url":"https://api.github.com/users/sxa555/gists{/gist_id}","starred_url":"https://api.github.com/users/sxa555/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sxa555/subscriptions","organizations_url":"https://api.github.com/users/sxa555/orgs","repos_url":"https://api.github.com/users/sxa555/repos","events_url":"https://api.github.com/users/sxa555/events{/privacy}","received_events_url":"https://api.github.com/users/sxa555/received_events","type":"User","site_admin":false},"created_at":"2016-07-19T10:16:33Z","updated_at":"2016-07-19T10:16:33Z","body":"Now landed in V8 master :-)"}}
{"actor":{"display_login":"sxa555"}}