Hi Ronie, Esteban,

Could you do a quick review of my CMakeLists.txt change for��any obvious blunder.
This may be my last post on this thread for a short while.


On 8 August 2018 at 21:39, Ben Coman <btc@openinworld.com> wrote:

Well thats enough for one post!����
Success running a MSVC compiled Spur Stack "minheadless"��VM.

Next I'll try...�� �� option(COG_JIT "Cog JIT" ON)

I did that, and then...
�� "CMakeLists.txt > Cache(x64-Debug only) > Delete cache folder..."
�� "CMake > Build All"
then started "x64-Debug" , "pharo.exe minImage+eval"
and a console window opens that reports...
�� �� "linking callsite to invalid address"

Well I'm not sure how ready is the Windows 64bit JIT is,��
so lets try with 32bit JIT.
In VS selecting "x86-Debug" , "pharo.exe minImage+eval"��
and "Cmake > Build All"
reports... "Severity Code Description Project File Line Suppression State
Error C1189 #error:�� As yet no Cogit implementation appears to exist for your platform.
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CMakeLists.txt C:\#Repos\OpenSmalltalk\opensmalltalk-vm\spur64src\vm\cogit.c

In the CMake variables
�� �� SourceFolderName=spur64src
because..
�� ���� VM_64BITS=TRUE
which is set here...
�� �� if(SQUEAK_PLATFORM_X86_64)
if(BUILD_I386_VERSION)
�� �� �� �� set(SQUEAK_PLATFORM_X86_32 True)
�� �� set(SQUEAK_PLATFORM_X86_64 False)
else()
set(VM_64BITS TRUE)
set(SourceFolderName "${SourceFolderName}64")
if(WIN32)
set(FFI_VARIANT_X64_WIN64 True)
else()
set(FFI_VARIANT_X64_SYSV True)
endif()
�� �� �� �� set(VM_TARGET_CPU "x86_64")
endif()
�� �� else()
set(VM_64BITS False)
�� �� endif()

which I'm not clear how that logic works,����
since it seems����BUILD_I386_VERSION�� doesn't prevent����VM_64BITS=True

Rearranging like...

�� �� if(BUILD_I386_VERSION)
�� �� �� �� set(SQUEAK_PLATFORM_X86_32 True)
�� �� �� �� set(SQUEAK_PLATFORM_X86_64 False)
�� �� �� �� set(VM_64BITS False)
�� �� else()
�� �� endif()
�� �� if(SQUEAK_PLATFORM_X86_64)
�� �� �� �� set(VM_64BITS TRUE)
�� �� �� �� set(SourceFolderName "${SourceFolderName}64")
�� �� �� �� if(WIN32)
�� �� �� �� �� �� �� set(FFI_VARIANT_X64_WIN64 True)
�� �� �� �� else()
�� �� �� �� �� �� �� set(FFI_VARIANT_X64_SYSV True)
�� �� �� �� endif()
�� �� �� �� set(VM_TARGET_CPU "x86_64")
�� �� else()
�� �� endif()

then adding�� -DBUILD_I386_VERSION in "CmakeSettings.json"��like this...��
�� "CMakeLists.txt > Change Cmake Settings"
�� �� �� �� {
�� �� �� �� �� �� "name": "x86-Debug",
�� �� �� �� �� �� "generator": "Ninja",
�� �� �� �� �� �� "configurationType": "Debug",
�� �� �� �� �� �� "inheritEnvironments": [ "msvc_x86" ],
�� �� �� �� �� �� "buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
�� �� �� �� �� �� "installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
�� �� �� �� �� �� "cmakeCommandArgs": "-DBUILD_I386_VERSION=ON",
�� �� �� �� �� �� "buildCommandArgs": "-v",
�� �� �� �� �� �� "ctestCommandArgs": ""
�� �� �� �� },
��
then refreshing...
�� "CMakeLists.txt > Cache(x64-Debug only) > Delete cache folder..."
�� "CMake > Build All"

leaves these values in the Cmake variables...
�� ����VM_64BITS=False
�� ����SourceFolderName=spursrc

and the build completes successfully.

I'm leaving it there for the moment.����
Actually the above sat in unchanged in draft for a week since I've had to shift my attention to something else.

Modifications to date here... https://github.com/bencoman/opensmalltalk-vm/tree/MinimalisticHeadless-x64-msvc2017
Next would be to catch up to Esteban's branch... https://github.com/estebanlm/opensmalltalk-vm/tree/add-minheadless-vm

cheers -ben