Hi Mats,

> -----Original Message-----
> From: Mats Wichmann [mailto:m...@wichmann.us]
> Sent: Saturday, September 23, 2017 1:49 AM
> To: VanCutsem, Geoffroy <geoffroy.vancut...@intel.com>; iotivity-
> d...@lists.iotivity.org
> Subject: Re: [dev] Building IoTivity 1.3.0 for Linux 32-bit (esp. for arch 
> 'i586' or
> 'i686')
> 
> On 09/22/2017 04:33 PM, VanCutsem, Geoffroy wrote:
> > Hi folks,
> >
> > One of my team member mentioned that IoTivity 1.3.0 does not build
> anymore for some Linux in 32-bit mode (previous versions such as 1.2.1 built
> just fine). Specifically, when the platform.machine() (see [1]) returns
> something like 'i586' or 'i686', it will simply not build. You can override 
> this by
> forcing TARGET_ARCH to 'x86' but I feel that that shouldn't be needed.
> >
> > IoTivity 1.2.x had a mechanism in place so that when the 'default_arch'
> value was not in the 'os_arch_map' list (see [2]), then the very first arch 
> from
> the list for that particular OS was selected. It's a bit rough as for Linux 
> as an
> example, any unrecognized ARM, MIPS architecture would make the build
> system attempt to build for 'x86'. My patch [3] below is therefore a slight
> variation of that logic in that it simply detects if 'i586' or 'i686' was 
> detected
> (for Linux) and if so, it replaces that value by 'x86'. Does that sound like 
> the
> right fix to the problem?
> >
> > [1]
> > https://github.com/iotivity/iotivity/blob/master/build_common/SConscri
> > pt#L68 [2]
> > https://github.com/iotivity/iotivity/blob/1.2-rel/build_common/SConscr
> > ipt#L57
> > [3]
> > diff --git a/build_common/SConscript b/build_common/SConscript index
> > 46a6735..61c5889 100755
> > --- a/build_common/SConscript
> > +++ b/build_common/SConscript
> > @@ -55,6 +55,9 @@ else:
> >      default_arch = platform.machine()
> >      if target_os == 'windows':
> >          default_arch = default_arch.lower()
> > +    if target_os == 'linux':
> > +        if default_arch in ['i586', 'i686']:
> > +         default_arch = 'x86'
> >
> >  target_arch = ARGUMENTS.get('TARGET_ARCH', default_arch) # target
> > arch
> 
> something like it, yes.  There's another patch somewhere which also does
> this kind of remapping.
> 
> the question is whether it would be better to remap before TARGET_ARCH is
> set or after.

In my opinion, we should not overwrite TARGET_ARCH if it's set by the user, so 
I'd stick with remapping before. This is about trying to be as good as possible 
at guessing the architecture it should be built for. I'm kind of assuming that 
if one sets TARGET_ARCH to a specific value, it means they really want it set 
to something specific and the build system shouldn't overwrite it (or at least 
not silently).

> 
> If by any chance you can file a bug it will help me keep track of it, I can 
> make
> sure this is pushed through quickly.

Done: https://jira.iotivity.org/browse/IOT-2755 (it's been assigned to Uze by 
default but I can change that if you wish).

> 
> People still build for 32-bit linux?
> 

My team does because we use Intel Edison boards.

Thanks,
Geoffroy
_______________________________________________
iotivity-dev mailing list
iotivity-dev@lists.iotivity.org
https://lists.iotivity.org/mailman/listinfo/iotivity-dev

Reply via email to