<div dir="ltr">Just to be clear, with solution #1 proposed in the original message, then your option #3 is guaranteed to work.  (also, minor pedantic nit - it's VC 2008, not 2009).  You won't have to build python, it will literally just work.  The reason for this is that I will have the CMake build automatically compile the separate shared library with Microsoft's toolchain whose <a href="https://www.microsoft.com/en-us/download/details.aspx?id=44266">sole purpose in life is to build python extension modules</a> that interoperate with the binary release of python 2.7<br></div><br><div class="gmail_quote">On Wed, Feb 25, 2015 at 10:19 AM Ted Woodward <<a href="mailto:ted.woodward@codeaurora.org">ted.woodward@codeaurora.org</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div lang="EN-US" link="blue" vlink="purple"><div><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">I’m all for making it simpler. Believe me, coming up with my solution was a pain. But once I built Python, I was done with that part. We save off the binaries/modules, build against them, then copy them into the lib directory. I’ve got a patch that lets the builder set a default PYTHONHOME and PYTHONPATH in cmake, and if they don’t exist when LLDB is run it sets them in the environment based on the defaults. <u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">We need to build Python on Windows with VS2013 because the binaries from <a href="http://python.org" target="_blank">python.org</a> are built with VS 2009, and will cause crashes in LLDB built with VS2013 because of incompatibilities between the 2009 C++ library and the 2012 C++ library. Our options seem to be:<u></u><u></u></span></p><p><u></u><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"><span>1)<span style="font:7.0pt "Times New Roman"">      </span></span></span><u></u><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">Build Python and save an artifact<u></u><u></u></span></p><p><u></u><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"><span>2)<span style="font:7.0pt "Times New Roman"">      </span></span></span><u></u><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">Require everyone build Python<u></u><u></u></span></p><p><u></u><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"><span>3)<span style="font:7.0pt "Times New Roman"">      </span></span></span><u></u><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">Separate the Python interface into its own shared library and hope that when it calls the 2009 C++RT it won’t crash<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">I went for #1 for Hexagon LLDB because I couldn’t rely on the user having the correct Python installed, on Windows or Linux.<u></u><u></u></span></p></div></div><div lang="EN-US" link="blue" vlink="purple"><div><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">--<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">Qualcomm Innovation Center, Inc.<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">The Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"><u></u> <u></u></span></p></div></div><div lang="EN-US" link="blue" vlink="purple"><div><p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> Zachary Turner [mailto:<a href="mailto:zturner@google.com" target="_blank">zturner@google.com</a>] <br><b>Sent:</b> Wednesday, February 25, 2015 11:47 AM<br><b>To:</b> Ted Woodward; Reid Kleckner; Vince Harron</span></p></div></div><div lang="EN-US" link="blue" vlink="purple"><div><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"><br><b>Cc:</b> <a href="mailto:lldb-dev@cs.uiuc.edu" target="_blank">lldb-dev@cs.uiuc.edu</a><br><b>Subject:</b> Re: [lldb-dev] RFC: Separation of embedded Python from the rest of LLDB.<u></u><u></u></span></p></div></div><div lang="EN-US" link="blue" vlink="purple"><div><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"></span></p><p class="MsoNormal"><u></u> <u></u></p><div><p class="MsoNormal" style="margin-bottom:12.0pt"><u></u> <u></u></p><div><p class="MsoNormal">On Wed, Feb 25, 2015 at 9:39 AM Ted Woodward <<a href="mailto:ted.woodward@codeaurora.org" target="_blank">ted.woodward@codeaurora.org</a>> wrote:<u></u><u></u></p></div></div></div></div><div lang="EN-US" link="blue" vlink="purple"><div><div><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><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">Saying you can’t build Python with VS2013 isn’t true. I did. I’m having issues with some of the bindings (specifically “print lldb.debugger” gives “No value”, even though it’s there), but for the most part it works.</span><u></u><u></u></p></div></blockquote><div><p class="MsoNormal">Well sure, I did too.  As it's the only way to run tests.  I think his point is just that it's a big barrier to entry.  I've got 3 guys who sit around me.  One works on the windows linker, and the other two are responsible for much of clang-cl.  None of them feel like going through these hoops to build LLDB, even though there's bugs in LLDB on Windows that their expertise would be a great asset in making some progress on.<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">I mean yes I could do it for them, and yes they could ultimately do it themselves, but the point is that it shouldn't be this difficult.  What about people without the same amount of technical background, but who still want to hack around on the debugger?  I dont' want to discourage anyone from being able to work on the project.  Barriers close doors. I want the doors to be open.<u></u><u></u></p></div></div></div></div></div></blockquote></div>