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/SConscript#L68
> [2] 
> https://github.com/iotivity/iotivity/blob/1.2-rel/build_common/SConscript#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

I fired up a 32-bit Ubuntu 16.04 to try this, and there's more
trouble... if you try to build with this change, the system thinks
cross-compilation is happening.  Two scripts have this logic:

        if not target_arch == platform.machine():
            print '''
*********************************** Warning
**********************************
* You are trying cross build, please make sure cross (%s) libraries are
* installed!
******************************************************************************
''' % target_arch


while that's not a fail as written, just an output message, about the
first thing tried - building googletest - fails.  I'll try to get to the
bottom of it later, I'm being told I'm supposed to go have a weekend :)




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

Reply via email to