<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Hi Ronie, <div class=""><br class=""></div><div class="">this is cool :)</div><div class=""><br class=""></div><div class="">btw… I do not think the VM should open any windowing system in any way. </div><div class="">This should be a task performed at image level, IMO.</div><div class=""><br class=""></div><div class="">Esteban</div><div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On 24 Dec 2016, at 22:25, Ronie Salgado <<a href="mailto:roniesalg@gmail.com" class="">roniesalg@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class=""><div class=""><div class="">Hi all,<br class=""><br class=""></div><div class="">I am happy to announce that my latest VM refactoring experiment is almost complete. I am only missing adding traditional style Makefiles to make Eliot happy ;), and making this work with MSVC.<br class=""><br class=""></div><div class="">The minheadless is a VM variant that unifies a lot of the code for Windows, Linux and OS X. To the point that I am using the same CMake scripts for building on the three platforms. <br class=""></div><div class=""><br class="">The minheadless VM is a completely headless by default VM, unless the configure script finds SDL2.<br class=""><br class="">If the configure script finds SDL2, and the legacy display interface is enabled(which is by default), then this VM will be built using SDL2 to implement the normal diplay primitives. The SDL2 backend work with normal Pharo and Squeak image.<br class=""><br class=""></div><div class="">If SDL2  is not found by the configure script, or the legacy display primitives are disabled in the configure script, or the VM is started in headless mode, then the traditional display primitives are just going to be a /dev/null.<br class=""></div><div class=""><br class="">Currently I am commiting this VM variant to the MinimalisticHeadless branch at: <a href="https://github.com/ronsaldo/opensmalltalk-vm/tree/MinimalisticHeadless" class="">https://github.com/ronsaldo/opensmalltalk-vm/tree/MinimalisticHeadless</a><br class=""><br class=""></div><div class="">For building using CMake it can be done in two ways:<br class=""><br class="">------------------------------------<br class=""></div><div class="">Calling CMake directly<br class=""><br class=""></div><div class="">mkdir build<br class=""></div><div class="">cmake .. -DCMAKE_BUILD_TYPE=<The build type> (or cmake-gui ..)<br class=""></div><div class="">make<br class=""><br class=""></div><div class="">The supported build types are:<br class=""></div><div class="">- Debug<br class=""></div><div class="">- Assert<br class=""></div><div class="">- RelWithDebInfo<br class=""></div><div class="">- Release<br class=""></div><div class=""><br class=""></div><div class="">If you are on an x86_64 system and you want to build  32 bits version, you have to pass the -DBUILD_I386_VERSION=True option to cmake.<br class=""><br class=""><div class="">mkdir build<br class=""></div><div class="">cmake .. (or cmake-gui ..)<br class=""></div>make<br class=""><br class=""></div><div class="">------------------------------------<br class=""></div><div class="">Using mvm style scripts<br class=""><br class=""></div><div class="">Easy mode:<br class=""><br class=""></div><div class="">cd build.minheadless.cmake/<x86 or x64>/vm_variant<br class=""></div><div class="">./mvm<br class=""><br class=""></div><div class="">A bit more complicated/flexible mode:<br class=""><br class=""></div><div class="">This mvm will configure and build the vm for the four build types. This behavior was present on the mvm for Windows, so I am replicating it.<br class=""><br class=""></div><div class="">In these same folders that are two other scripts: mvm_configure (calls cmake to only configure the build types), and mvm_configure_variant<br class=""></div><div class=""><br class="">mvm_configure_variant is used to actually call cmake and configure the VM for building. The syntax of mvm_configure_variant is the following:<br class=""><br class="">mvm_configure_variant <BuildDirectory> <BuildType><br class=""><br class=""></div><div class="">Currently my workflow for using these scripts is the following with MSys/Cygwin/Linux:<br class=""><br class=""></div><div class="">./mvm_configure<br class=""></div><div class="">make -j8<br class=""><br class=""></div><div class="">The makefile at build.minheadless.cmake/<x86 or x64>/vm_variant is only used for delegating to the makefiles created by CMake.<br class=""><br class=""></div><div class="">------------------------------------<br class="">I am leaving some prebuilt Pharo VMs with the SDL2 backend for Windows for experimenting at: <a href="http://ronie.cl/files/vm/" class="">http://ronie.cl/files/vm/</a><br class=""><br class=""></div><div class="">Using OSWindow with this VM requires loading the latest version of OSWindow by reloading the ConfigurationOfOSWindow manually in Monticello, and then doing ConfigurationOfOSWindow load. With this VM, there are finally no more duplicated events.<br class=""><br class=""></div>My TODO list for this includes adding plain Makefile. BTW: during the following week I will continue working with Lowcode. I really need it working again.<br class=""><br class="">Happy longest/shortest day of the year<br class=""></div>Ronie<br class=""></div>
</div></blockquote></div><br class=""></div></body></html>