[Vm-dev] Compiling squeak.cog.spur on Pi

Eliot Miranda eliot.miranda at gmail.com
Fri Jun 24 16:53:46 UTC 2016


Hi David,

> On Jun 24, 2016, at 6:36 AM, David T. Lewis <lewis at mail.msen.com> wrote:
> 
> 
>> On Thu, Jun 23, 2016 at 11:52:48PM -0400, Phil (list) wrote:
>> 
>>> On Thu, 2016-06-23 at 19:55 -0700, tim Rowledge wrote:
>>> ??
>>> 
>>>> On 23-06-2016, at 7:35 PM, David T. Lewis <lewis at mail.msen.com>
>>>> wrote:
>>>> 
>>>> 
>>>>> On Thu, Jun 23, 2016 at 10:19:23PM -0400, Phil (list) wrote:
>>>>> {snip}
>>>>> Yes, I ran into it as well... the build is hard-coded to build
>>>>> for the
>>>>> ARMv6 of the original Pi. ??Remove the line with the compiler
>>>>> flags??"-
>>>>> march=armv6 -mfpu=vfp -mfloat-abi=hard" in mvm. ??That fixed the
>>>>> issue
>>>>> for me for ARMv7 builds.
>>>> 
>>>> Phil,
>>>> 
>>>> Brilliant! I removed the -march=armv6 and it compiles now.\
>>> 
>>> That is both weird and in some sense wrong; Eliot & I use the armv6
>>> flag so far as????I know and don???t have this issue. I *did* have this
>>> problem a very long time ago though. The question is whether I can
>>> find any evidence of what I did to get????past it???
>> 
>> IIRC, it has to do with the build of gcc that is installed for (most?)
>> ARMv7 distros. ??Are you and Elliot using an armel or armhf based
>> installs or just the stock rpi install (which is ARMv6 hf I think)?
>> ??Most of the ARM world (with the notable exception of rpi) is running
>> armhf these days which is where the problem seems to be (i.e. I was
>> able to build using the shipped mvm as-is on armel, but not armhf)
> 
> Also regarding the gcc version, it looks like the configure script is
> getting rather old. I see this in my config log:
> 
> g++: error: unrecognized command line option '-V'
> 
> This apparently had no ill effect on the build for Pi, but it's important
> because I think that the -V option has gone away in recent gcc versions,
> and that is what prevented me from being able to build Cog/Spur on my
> Intel Ubuntu laptop. I ran out of patience trying to rebuild the
> autotools configuration, and that is what finally prompted me to buy
> this Raspberry Pi :-)

IIRC, the issue is that the default build.linux32ARM produces a VM that will run on Pi 1, which Tim needs for Scratch deployment, and this requires the "-march=armv6 -mfpu=vfp -mfloat-abi=hard" flags.  And alas this produces a VM that won't run on, eg, android.

So we really need two build.linux32ARM variants.  See below.


> 
> So ... I think that somebody with more patience than me is going to
> need to update the autotools build one of these days.

If you remember the board conversation about moving to github you'll recall I got agreement that I could rewrite the Linux build process to use gmake and makefiles and eliminate autotools.  Esteban is working on generating the per-platform config file (cogConfig.h, osvmConfig.h?) that will contain the platform facility defines (such as #define HAS_POLL) that will sit in each build directory, probably in the common directory containing the makefiles (eg build.win32x86/common, build.macos32x86/common, etc) and hence only be generated once per platform.  Then we can (if armv6 still makes sense, which for scratch it does) split build.linux32ARM into build.linux32ARMv6 and build.linux32ARMv7 and eventually add build.linux64ARMv8.

We can do this now and have different mvm scripts in build.linux32ARMv6 and build.linux32ARMv7.  Feel free to make this split, but be sure to get Travis to build each.

> 
> Dave
> 


More information about the Vm-dev mailing list