<div dir="ltr"><div>Hi, Joel.</div><div><br></div><div>These are procedures to build the Swift compiler/library in Cygwin and in Windows (MSVC). It has some interim workaround to resolve problems.</div><div><br></div><div>I think you will take time to build these. If you failed at some steps or have any questions, let me know them.</div><div><br></div><a href="https://github.com/tinysun212/swift-windows/blob/swift-msvc-20160428/BUILD-WINDOWS.md">https://github.com/tinysun212/swift-windows/blob/swift-msvc-20160428/BUILD-WINDOWS.md</a><br><div><br></div><div><a href="https://github.com/tinysun212/swift-windows/blob/swift-cygwin-20160428/BUILD-CYGWIN-64.md">https://github.com/tinysun212/swift-windows/blob/swift-cygwin-20160428/BUILD-CYGWIN-64.md</a><br></div><div><br></div><div>- Han Sanjign</div></div><div class="gmail_extra"><br><div class="gmail_quote">2016-04-28 11:55 GMT+09:00 Erica Sadun <span dir="ltr">&lt;<a href="mailto:erica@ericasadun.com" target="_blank">erica@ericasadun.com</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div>Please whoever is doing the windows port, please drop me an email and let me know how things are going, what challenges you&#39;re facing etc. I&#39;d like to get you a little publicity. (Also happy to write about any other dev-specific challenges for the language, not just Windows.)</div><div><br></div><div>Cheers, -- Erica</div><div><div class="h5"><div><br></div><div><blockquote type="cite"><div>On Apr 27, 2016, at 6:25 PM, Han via swift-dev &lt;<a href="mailto:swift-dev@swift.org" target="_blank">swift-dev@swift.org</a>&gt; wrote:</div><br><div><div dir="auto"><div>I was busy. Before cleaning build procedure, I merged recent snapshot, and resolving conflict,  followed up some bug, modified and checked Cygwin build. Now in cleaning build procedure for MSVC, I decided to change the cmake generator to Ninja from MSBuild - it is more faster when recompiling.</div><div><br></div><div>It will be finished in soon. But don&#39;t expect too much, ... you should use hexa editor to build the static library.</div><div><br></div><div>- Han Sangjin</div><div><br>2016. 4. 28. 6:09 Joel Van Eenwyk &lt;<a href="mailto:joel.vaneenwyk@gmail.com" target="_blank">joel.vaneenwyk@gmail.com</a>&gt; :<br><br></div><blockquote type="cite"><div><div dir="ltr"><div lang="EN-US" link="blue" vlink="purple"><div><p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1f497d">Hi Han,<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1f497d">I’ve synced and ready to help out on this.<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1f497d">“For building MSVC port, it will be better waiting several days until I prepare a draft build manual - current build description is too dirty (/<span>misc</span>/Build_msvc.txt).”<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1f497d">Any updates on this?</span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1f497d"><a name="m_-7202498904121080928_m_4695428887972579702_m_-6179875563934254525__MailEndCompose"><br></a></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1f497d"><a name="m_-7202498904121080928_m_4695428887972579702_m_-6179875563934254525__MailEndCompose">--Joel</a></span></p><p class="MsoNormal"><span><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1f497d"><u></u> <u></u></span></span></p><span></span><p class="MsoNormal"><a name="m_-7202498904121080928_m_4695428887972579702_m_-6179875563934254525__MailOriginal"><b><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif">From:</span></b></a><span><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif"> Shawn Erickson [mailto:<a href="mailto:shawnce@gmail.com" target="_blank">shawnce@gmail.com</a>] <br><b>Sent:</b> Friday, April 22, 2016 8:27 AM<br><b>To:</b> Sangjin Han &lt;<a href="mailto:tinysun.net@gmail.com" target="_blank">tinysun.net@gmail.com</a>&gt;; Joel Van Eenwyk &lt;<a href="mailto:joel.vaneenwyk@gmail.com" target="_blank">joel.vaneenwyk@gmail.com</a>&gt;<br><b>Cc:</b> swift-dev &lt;<a href="mailto:swift-dev@swift.org" target="_blank">swift-dev@swift.org</a>&gt;<br><b>Subject:</b> Re: [swift-dev] Swift port to Windows : Offering help!<u></u><u></u></span></span></p><p class="MsoNormal"><span><u></u> <u></u></span></p><div><p class="MsoNormal"><span>Trying to get back on PR1950 today.. fighting to get things building again after a recent update-checkout.<u></u><u></u></span></p><div><p class="MsoNormal"><span><u></u> <u></u></span></p></div><div><p class="MsoNormal" style="margin-bottom:12.0pt"><span>-Shawn<u></u><u></u></span></p><div><div><p class="MsoNormal"><span>On Thu, Apr 21, 2016 at 7:18 PM Sangjin Han via swift-dev &lt;</span><a href="mailto:swift-dev@swift.org" target="_blank"><span>swift-dev@swift.org</span><span></span></a><span>&gt; wrote:<u></u><u></u></span></p></div><blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in"><div><div><p class="MsoNormal"><span>Hi Joel,<u></u><u></u></span></p></div><div><p class="MsoNormal"><span><u></u> <u></u></span></p></div><div><p class="MsoNormal"><span>I list some URLs.<u></u><u></u></span></p></div><div><p class="MsoNormal"><span><u></u> <u></u></span></p></div><div><p class="MsoNormal"><span>Bug/Feature report in </span><a href="http://bugs.swift.org/" target="_blank"><span>http://bugs.swift.org</span><span></span></a><span><u></u><u></u></span></p></div><div><p class="MsoNormal"><span>-------------------------------------------<u></u><u></u></span></p></div><div><p class="MsoNormal"><span>SR-34 Port Swift to Windows (</span><a href="https://bugs.swift.org/browse/SR-34" target="_blank"><span>https://bugs.swift.org/browse/SR-34</span><span></span></a><span>)<u></u><u></u></span></p></div><div><p class="MsoNormal"><span>SR-612 In Cygwin port, print() crashed at hook (</span><a href="https://bugs.swift.org/browse/SR-612" target="_blank"><span>https://bugs.swift.org/browse/SR-612</span><span></span></a><span>)<u></u><u></u></span></p></div><div><p class="MsoNormal"><span>SR-1128 autolink extraction does not work on Cygwin (</span><a href="https://bugs.swift.org/browse/SR-1128" target="_blank"><span>https://bugs.swift.org/browse/SR-1128</span><span></span></a><span>)<u></u><u></u></span></p></div><div><p class="MsoNormal"><span>SR-1131 Build script for MSVC on Windows (</span><a href="https://bugs.swift.org/browse/SR-1131" target="_blank"><span>https://bugs.swift.org/browse/SR-1131</span><span></span></a><span>)<u></u><u></u></span></p></div><div><p class="MsoNormal"><span><u></u> <u></u></span></p></div><div><p class="MsoNormal"><span><u></u> <u></u></span></p></div><div><p class="MsoNormal"><span>Pull Requsts in </span><a href="http://github.com/apple/swift" target="_blank"><span>http://github.com/apple/swift</span><span></span></a><span> <u></u><u></u></span></p></div><div><p class="MsoNormal"><span>---------------------------------------------<u></u><u></u></span></p></div><div><p class="MsoNormal"><span>[stdlib/msvc] Runtime with MSVC library (</span><a href="https://github.com/apple/swift/pull/1918" target="_blank"><span>https://github.com/apple/swift/pull/1918</span><span></span></a><span>)<u></u><u></u></span></p></div><div><p class="MsoNormal"><span>-- Currently working on. Waiting passing PR #1950.<u></u><u></u></span></p></div><div><p class="MsoNormal"><span><u></u> <u></u></span></p></div><div><p class="MsoNormal"><span>[swiftc/msvc] Compiling with MSVC library (</span><a href="https://github.com/apple/swift/pull/1516" target="_blank"><span>https://github.com/apple/swift/pull/1516</span><span></span></a><span>)<u></u><u></u></span></p></div><div><p class="MsoNormal"><span>-- Waiting some more opinions or reviews.<u></u><u></u></span></p></div><div><p class="MsoNormal"><span><u></u> <u></u></span></p></div><div><p class="MsoNormal"><span>[runtime] enhanced and refactored recently added Mutex abstraction (</span><a href="https://github.com/apple/swift/pull/1950" target="_blank"><span>https://github.com/apple/swift/pull/1950</span><span></span></a><span>)<u></u><u></u></span></p></div><div><p class="MsoNormal"><span>-- This is not about porting, but it enhances portability by removing POSIX pthread. After merging, PR #1918 will be more simpler.<u></u><u></u></span></p></div><div><p class="MsoNormal"><span><u></u> <u></u></span></p></div><div><p class="MsoNormal"><span>IRGen: add support for DLL Storage semantics (</span><a href="https://github.com/apple/swift/pull/2080" target="_blank"><span>https://github.com/apple/swift/pull/2080</span><span></span></a><span>)<u></u><u></u></span></p></div><div><p class="MsoNormal"><span>-- I think this is the most important topic for Windows/MSVC porting, but not Cygwin port.<u></u><u></u></span></p></div><div><p class="MsoNormal"><span><u></u> <u></u></span></p></div><div><p class="MsoNormal"><span><u></u> <u></u></span></p></div><div><p class="MsoNormal"><span>Issues in Mailing list<u></u><u></u></span></p></div><div><p class="MsoNormal"><span>----------------------<u></u><u></u></span></p></div><div><p class="MsoNormal"><span>Subject: &quot;swift (ABI) and Windows&quot; in </span><a href="https://lists.swift.org/pipermail/swift-dev/Week-of-Mon-20160404/subject.html" target="_blank"><span>https://lists.swift.org/pipermail/swift-dev/Week-of-Mon-20160404/subject.html</span><span></span></a><span> and  </span><a href="https://lists.swift.org/pipermail/swift-dev/Week-of-Mon-20160411/subject.html" target="_blank"><span>https://lists.swift.org/pipermail/swift-dev/Week-of-Mon-20160411/subject.html</span><span></span></a><span> <u></u><u></u></span></p></div><div><p class="MsoNormal"><span><u></u> <u></u></span></p></div><div><p class="MsoNormal"><span>Subject: &quot;long double usage in swift&quot; in </span><a href="https://lists.swift.org/pipermail/swift-dev/Week-of-Mon-20160321/subject.html" target="_blank"><span>https://lists.swift.org/pipermail/swift-dev/Week-of-Mon-20160321/subject.html</span><span></span></a><span><u></u><u></u></span></p></div><div><p class="MsoNormal"><span><u></u> <u></u></span></p></div><div><p class="MsoNormal"><span><u></u> <u></u></span></p></div><div><p class="MsoNormal"><span>My Repo for Patch<u></u><u></u></span></p></div><div><p class="MsoNormal"><span>-----------------<u></u><u></u></span></p></div><div><p class="MsoNormal"><span>Repository: </span><a href="https://github.com/tinysun212/swift-windows/tree/upstream-with-windows" target="_blank"><span>https://github.com/tinysun212/swift-windows/tree/upstream-with-windows</span><span></span></a><span><u></u><u></u></span></p></div><div><p class="MsoNormal"><span>binary for MSVC: </span><a href="https://github.com/tinysun212/swift-windows/releases/tag/swift-msvc-20160418" target="_blank"><span>https://github.com/tinysun212/swift-windows/releases/tag/swift-msvc-20160418</span><span></span></a><span><u></u><u></u></span></p></div><div><p class="MsoNormal"><span>binary for Cygwin: </span><a href="https://github.com/tinysun212/swift-windows-bin/tree/master/swift-cygwin" target="_blank"><span>https://github.com/tinysun212/swift-windows-bin/tree/master/swift-cygwin</span><span></span></a><span><u></u><u></u></span></p></div><div><p class="MsoNormal"><span><u></u> <u></u></span></p></div><div><p class="MsoNormal"><span><u></u> <u></u></span></p></div><div><p class="MsoNormal"><span>Help<u></u><u></u></span></p></div><div><p class="MsoNormal"><span>----<u></u><u></u></span></p></div><div><p class="MsoNormal"><span>If you are also interested in Cygwin port, it is also very helpful to verify/check the build manual (it is placed at /BUILD-CYGWIN-64.md in root of my repo), so that we make a PR for master, and everyone build the Cygwin port without my forked repo.<u></u><u></u></span></p></div><div><p class="MsoNormal"><span><u></u> <u></u></span></p></div><div><p class="MsoNormal"><span>For building MSVC port, it will be better waiting several days until I prepare a draft build manual - current build description is too dirty (/misc/Build_msvc.txt).<u></u><u></u></span></p></div><div><p class="MsoNormal"><span><u></u> <u></u></span></p></div><div><p class="MsoNormal"><span>If you once run the compilers, you can see they are lack compared to Linux or OS X.<u></u><u></u></span></p></div><div><p class="MsoNormal"><span><u></u> <u></u></span></p></div><div><p class="MsoNormal"><span>All of that is only on swift port. For swift-lldb, swift-corelibs-foundation, swift-corelibs-libdispatch, I have not touched at all.<u></u><u></u></span></p></div></div><div><div><p class="MsoNormal"><span><u></u> <u></u></span></p></div><div><p class="MsoNormal"><span>Han Sangjin<u></u><u></u></span></p></div></div><div><div><p class="MsoNormal"><span><u></u> <u></u></span></p></div><div><div><p class="MsoNormal"><span>2016-04-22 8:20 GMT+09:00 Joel Van Eenwyk &lt;</span><a href="mailto:joel.vaneenwyk@gmail.com" target="_blank"><span>joel.vaneenwyk@gmail.com</span><span></span></a><span>&gt;:<u></u><u></u></span></p><blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in"><div><p class="MsoNormal"><span>Hi Han,<u></u><u></u></span></p><div><p class="MsoNormal"><span><u></u> <u></u></span></p></div><div><p class="MsoNormal"><span>Thanks for the details! Do you have a custom fork or branch with these changes? I&#39;d love to be able to test this out and contribute if you think that could help you out. I can get started on testing what you have now as soon as tomorrow.<u></u><u></u></span></p></div><div><p class="MsoNormal"><span><u></u> <u></u></span></p></div><div><p class="MsoNormal"><span>Cheers,<u></u><u></u></span></p></div><div><p class="MsoNormal"><span><u></u> <u></u></span></p></div><div><p class="MsoNormal"><span>--Joel<u></u><u></u></span></p></div></div><div><div><div><p class="MsoNormal"><span><u></u> <u></u></span></p><div><p class="MsoNormal"><span>On Thu, Apr 21, 2016 at 4:15 PM, Sangjin Han via swift-dev &lt;</span><a href="mailto:swift-dev@swift.org" target="_blank"><span>swift-dev@swift.org</span><span></span></a><span>&gt; wrote:<u></u><u></u></span></p><blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in"><div><div><p class="MsoNormal"><span><u></u> <u></u></span></p></div><div><p class="MsoNormal"><span>I&#39;m writing code for Windows/Cygwin port on my free time. There is no well documented information about that. Instead I&#39;ll give you some information and several links for you.<u></u><u></u></span></p></div><div><p class="MsoNormal"><span><u></u> <u></u></span></p></div><div><p class="MsoNormal"><span>1. Cygwin port<u></u><u></u></span></p></div><div><p class="MsoNormal"><span>  Cygwin is a POSIX environment on Windows. Porting to Cygwin is relatively easer than Windows native. This is x86_64-unknown-windows-cygwin in llvm target name.<u></u><u></u></span></p></div><div><p class="MsoNormal"><span>  <u></u><u></u></span></p></div><div><p class="MsoNormal"><span>  Currently, you can build the swift compiler and standard library if you applying my &#39;informal&#39; hacked patch and build manual.<u></u><u></u></span></p></div><div><p class="MsoNormal"><span>  <u></u><u></u></span></p></div><div><p class="MsoNormal"><span>  To-be tasks are verifying and sharing the build manual, porting the autolink-extract module, passing failed test code, etc.<u></u><u></u></span></p></div><div><p class="MsoNormal"><span>  <u></u><u></u></span></p></div><div><p class="MsoNormal"><span><u></u> <u></u></span></p></div><div><p class="MsoNormal"><span>2. Window port<u></u><u></u></span></p></div><div><p class="MsoNormal"><span>  This is x86_64-pc-windows-msvc in llvm target name, so I call this &#39;Windows with MSVC library&#39; when confusing with Cygwin - Windows with Cygwin DLL. Porting to Windows is harder than Cygwin. Swift source uses C++11 standard with some POSIX functions, GNU extension functions as well as platform specific codes for OS X or Linux, and the build script for Swift supposed to run on BASH shell. To compile the Swift source, we should use the Clang compiler for clang specific feature.<u></u><u></u></span></p></div><div><p class="MsoNormal"><span>  <u></u><u></u></span></p></div><div><p class="MsoNormal"><span>  Currently, there is a &#39;informal&#39; compiler that barely compiles Hello.swift.<u></u><u></u></span></p></div><div><p class="MsoNormal"><span>  <u></u><u></u></span></p></div><div><p class="MsoNormal"><span>  To-be tasks are the solving problems, dllimport/dllexport problem for DLL, build script problem, plus all tasks of Cygwin&#39;s.<u></u><u></u></span></p></div><div><p class="MsoNormal"><span><u></u> <u></u></span></p></div><div><p class="MsoNormal"><span>I&#39;ll give you related links in next post.<u></u><u></u></span></p></div><div><p class="MsoNormal"><span><span style="color:#888888"><u></u> <u></u></span></span></p></div><div><p class="MsoNormal"><span><span style="color:#888888">Han Sangjin<u></u><u></u></span></span></p></div><div><p class="MsoNormal"><span><span style="color:#888888"><u></u> <u></u></span></span></p></div></div><div><div><div><p class="MsoNormal"><span><u></u> <u></u></span></p><div><p class="MsoNormal"><span>2016-04-22 3:29 GMT+09:00 Dmitri Gribenko &lt;</span><a href="mailto:gribozavr@gmail.com" target="_blank"><span>gribozavr@gmail.com</span><span></span></a><span>&gt;:<u></u><u></u></span></p><blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in"><p class="MsoNormal"><span>CC&#39;ing Han, the maintainer of the Cygwin port.<u></u><u></u></span></p><div><div><p class="MsoNormal"><span><br>On Wed, Apr 20, 2016 at 10:59 PM, Joel Van Eenwyk via swift-dev<br>&lt;</span><a href="mailto:swift-dev@swift.org" target="_blank"><span>swift-dev@swift.org</span><span></span></a><span>&gt; wrote:<br>&gt; Hi all,<br>&gt;<br>&gt; I&#39;m a very new user of Swift and interested in finding ways to contribute to<br>&gt; the project. I can happily work with the Linux port of the project, but I<br>&gt; have a lot of Windows development experience and would probably be most<br>&gt; useful there. Where can I find information about the current status of a<br>&gt; Windows port (if any)? Perhaps I&#39;m blind but finding any &#39;official&#39;<br>&gt; information about a Windows version has been quite tricky. :)<br>&gt;<br>&gt; For background on me, I&#39;m primarily a game programmer and the company I work<br>&gt; for (Havok) recently got acquired by Microsoft. Working on some open source<br>&gt; projects is just something I&#39;m interested in exploring in my free time.<br>&gt;<br>&gt; All the best,<br>&gt;<br>&gt; --Joel<br>&gt;<u></u><u></u></span></p></div></div><p class="MsoNormal"><span>&gt; _______________________________________________<br>&gt; swift-dev mailing list<br>&gt; </span><a href="mailto:swift-dev@swift.org" target="_blank"><span>swift-dev@swift.org</span><span></span></a><span><br>&gt; </span><a href="https://lists.swift.org/mailman/listinfo/swift-dev" target="_blank"><span>https://lists.swift.org/mailman/listinfo/swift-dev</span><span></span></a><span><br>&gt;<br><span style="color:#888888"><br><br><br>--<br>main(i,j){for(i=2;;i++){for(j=2;j&lt;i;j++){if(!(i%j)){j=0;break;}}if<br>(j){printf(&quot;%d\n&quot;,i);}}} /*Dmitri Gribenko &lt;</span></span><a href="mailto:gribozavr@gmail.com" target="_blank"><span>gribozavr@gmail.com</span><span></span></a><span><span style="color:#888888">&gt;*/</span><u></u><u></u></span></p></blockquote></div><p class="MsoNormal"><span><u></u> <u></u></span></p></div></div></div><p class="MsoNormal" style="margin-bottom:12.0pt"><span><br>_______________________________________________<br>swift-dev mailing list<br></span><a href="mailto:swift-dev@swift.org" target="_blank"><span>swift-dev@swift.org</span><span></span></a><span><br></span><a href="https://lists.swift.org/mailman/listinfo/swift-dev" target="_blank"><span>https://lists.swift.org/mailman/listinfo/swift-dev</span><span></span></a><span><u></u><u></u></span></p></blockquote></div><p class="MsoNormal"><span><u></u> <u></u></span></p></div></div></div></blockquote></div><p class="MsoNormal"><span><u></u> <u></u></span></p></div></div><p class="MsoNormal"><span>_______________________________________________<br>swift-dev mailing list<br></span><a href="mailto:swift-dev@swift.org" target="_blank"><span>swift-dev@swift.org</span><span></span></a><span><br></span><a href="https://lists.swift.org/mailman/listinfo/swift-dev" target="_blank"><span>https://lists.swift.org/mailman/listinfo/swift-dev</span><span></span></a><span></span><u></u><u></u></p></blockquote></div></div></div></div></div></div>
</div></blockquote></div>_______________________________________________<br>swift-dev mailing list<br><a href="mailto:swift-dev@swift.org" target="_blank">swift-dev@swift.org</a><br><a href="https://lists.swift.org/mailman/listinfo/swift-dev" target="_blank">https://lists.swift.org/mailman/listinfo/swift-dev</a><br></div></blockquote></div><br></div></div></div></blockquote></div><br></div>