<div class="gmail_quote">On Fri, Jan 14, 2011 at 3:43 PM, Pau Garcia i Quiles <span dir="ltr">&lt;<a href="mailto:pgquiles@elpauer.org">pgquiles@elpauer.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
Hi,<br>
<br>
I&#39;m trying to get this working on Windows using a self-contained build<br>
environment that does NOT have Perl in path.<br>
<br>
It&#39;s a .bat file which downloads CMake and Perl and then fires a<br>
CMakeLists.txt with the ExternalProject_Add to build zlib (no problem<br>
after the patches I sent yesterday) and OpenSSL.<br>
<br>
One problem I&#39;ve found is the PATH environment variable.<br>
ExternalProject_Add does not allow to set it, which forces me to use<br>
CMake in command mode + set (ENV{PATH} ... ) + execute_process. Ugly.<br>
<br>
Features I&#39;m missing in ExternalProject_Add and I just realized<br>
&quot;thanks&quot; to OpenSSL:<br>
- Add a PATH parameter to ExternalProject_Add,<br>
ExternalProject_Add_Step and execute_process. It should override the<br>
default path. Adding new directories to the path would be possible by<br>
doing PATH &quot;$ENV{PATH}:/my/new/dir/in/path&quot;<br></blockquote><div><br>Good suggestion. Actually, we&#39;ve wanted to add a feature to specify environment variables to arbitrary calls to add_custom_command for quite a while, but there are some subtle details behind it, and we haven&#39;t found the time and funding to get that done yet. This would be an easy pass-through from ExternalProject to such a feature as soon as the underlying feature exists in add_custom_command.<br>
<br> <br></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
- Define variables for SOURCE_DIR, BINARY_DIR, etc even if EP_PREFIX<br>
and EP_BASE are not set<br></blockquote><div><br>Not sure what you mean here?<br><br>If you got a ExternalProject_Get_Property(${proj} source_dir) immediately after an ExternalProject_Add call you can retrieve the value of its source dir regardless of if you have EP_PREFIX or EP_BASE set, right? Those only control some of the default layouts that we had come up with when trying to organize things.<br>
<br><br></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
- Allow for multiple CONFIGURE_COMMAND steps (I know, I can add my<br>
custom step, but it&#39;s much more complex)<br></blockquote><div><br>How many would you like? Why not just run a script as the single configure command, and then have your script do the multiple steps needed?<br> <br><br>
</div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<br>
Another more issue I&#39;m seeing with ExternalProject_Add is tarballs<br>
with symlinks on Windows. The OpenSSL contains symlinks, which leads<br>
to a broken source dir because CMake is unable to create some files.<br>
Maybe CMake should pass libarchive some parameter? (if I extract the<br>
OpenSSL tarball with WinRAR, it does not fail)<br></blockquote><div><br>What does WinRAR give you? Symlinks because the Windows you&#39;re using supports them? Or copies of the linked-to files in place of symlinks? Or something else?<br>
<br> <br></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div class="im"><br>
On Fri, Jan 7, 2011 at 9:34 PM, kent williams &lt;<a href="mailto:nkwmailinglists@gmail.com">nkwmailinglists@gmail.com</a>&gt; wrote:<br>
</div><div><div></div><div class="h5">&gt; This shouldn&#39;t be a big deal -- something like this should work:<br>
&gt;<br>
&gt; ExternalProject_add(OpenSSL<br>
&gt;    URL &quot;<a href="http://www.openssl.org/source/openssl-1.0.0c.tar.gz" target="_blank">http://www.openssl.org/source/openssl-1.0.0c.tar.gz</a>&quot;<br>
&gt;    URL_MD5 ff8fb85610aef328315a9decbb2712e4<br>
&gt;    CONFIGURE_COMMAND ./config --prefix=&quot;${CMAKE_CURRENT_BINARY_DIR}/OpenSSL&quot;<br>
&gt;   BUILD_IN_SOURCE 1<br>
&gt;     INSTALL_DIR &quot;${CMAKE_CURRENT_BINARY_DIR}/OpenSSL&quot;<br>
&gt;   )<br>
&gt; set(OPENSSL_INCLUDE_DIR &quot;${CMAKE_CURRENT_BINARY_DIR}/OpenSSL/include&quot;)<br>
&gt; link_directories(&quot;${CMAKE_CURRENT_BINARY_DIR}/OpenSSL/libs)<br>
&gt; set(OPENSSL_LIBRARIES ssl ssleay32 ssleay32MD)<br>
&gt;<br>
&gt; The problem is that OpenSSL doesn&#39;t handle configuration scripts in<br>
&gt; the usual way -- the configure script wants you to specify your<br>
&gt; platform/compiler string.<br>
&gt;<br>
&gt; They provide an &#39;automatic&#39; script instead called config, so<br>
&gt;<br>
&gt; config --prefix=...<br>
&gt;<br>
&gt; Does mostly what you want, but they make you handle the OS X 64-bit<br>
&gt; case manually -- it wants you to run configure and tell it explicitly<br>
&gt; about the platform:<br>
&gt;<br>
&gt; ./Configure darwin64-x86_64-cc<br>
&gt;<br>
&gt; This is kind of crazy, but OK, whatever. So I need to try and figure<br>
&gt; out at configure time if it&#39;s an OS X build and if it&#39;s a 64 bit<br>
&gt; build.  I can use<br>
&gt;<br>
&gt; if(APPLE)<br>
&gt;<br>
&gt; to detect an Mac platform, but there&#39;s no way I can figure out to<br>
&gt; determine if the currently selected build type is 64 bits.  And I<br>
&gt; think that the stock OpenSSL distribution would completely lose its<br>
&gt; mind if you tried to configure a Universal Binary build!<br>
&gt;<br>
&gt; Any suggestions?<br>
&gt; _______________________________________________<br>
&gt; Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
&gt;<br>
&gt; Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
&gt;<br>
&gt; Please keep messages on-topic and check the CMake FAQ at: <a href="http://www.cmake.org/Wiki/CMake_FAQ" target="_blank">http://www.cmake.org/Wiki/CMake_FAQ</a><br>
&gt;<br>
&gt; Follow this link to subscribe/unsubscribe:<br>
&gt; <a href="http://www.cmake.org/mailman/listinfo/cmake" target="_blank">http://www.cmake.org/mailman/listinfo/cmake</a><br>
&gt;<br>
<br>
<br>
<br>
</div></div><font color="#888888">--<br>
Pau Garcia i Quiles<br>
<a href="http://www.elpauer.org" target="_blank">http://www.elpauer.org</a><br>
(Due to my workload, I may need 10 days to answer)<br>
</font><div><div></div><div class="h5">_______________________________________________<br>
Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Please keep messages on-topic and check the CMake FAQ at: <a href="http://www.cmake.org/Wiki/CMake_FAQ" target="_blank">http://www.cmake.org/Wiki/CMake_FAQ</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://www.cmake.org/mailman/listinfo/cmake" target="_blank">http://www.cmake.org/mailman/listinfo/cmake</a><br>
</div></div></blockquote></div><br>