bpo-31904 : Python should support VxWorks RTOS by kuhlenough · Pull Request #4179 · python/cpython (original) (raw)

This pull request enables cpython to cross-build on VxWorks (the world’s leading RTOS and the only interplanetary OS)

This does not provide complete configuration of all target systems possible. It's assumed that the user is familiar with automake cross-builds and has called ./configure with the appropriate environment (CFLAGS,LDFLAGS, CC,CCP, etc) and appropriate site.config and configuration arguments.

VxWorks 7 currently supports Intel, ARM and PowerPC processors running in 32bit and 64bit mode compiled with GCC, ICC, a llvm/clang variant, or Wind River’s Diab compiler. So the verification matrix is large and subsequent pull requests will address the various variants as they are validated.

This pull also also includes some support for automake's --enable-shared=no functionality. If this non-default flag is set, various targets and flags are disabled in Make.pre.in and thus the generated Makefile


Validated with GCC 4.8.1.10 as provided with VxWorks 7

. ./vxworks_env.sh && \
./configure --host=x86-wrs-vxworks --prefix=/yow-build40-lx1/bkuhl/workspace/vsbSim/usr/root \
--bindir=/yow-build40-lx1/bkuhl/workspace/vsbSim/usr/root/gnu/bin --includedir=/yow-build40-lx1/bkuhl/workspace/vsbSim/usr/h/public \
--libdir=/yow-build40-lx1/bkuhl/workspace/vsbSim/usr/lib/common  --build=i686-linux-gnu  --cache-file=config.vx.app --with-libm=no --with-ensurepip=no --with-suffix=.vxe

.. and an appropriate site.config

#! /bin/sh
# config.vx.app - autoconf configuration file for VxWorks
#
# Copyright (c) 2017  Wind River Systems, Inc.
#
# This software is released under the terms of the 
# Python Software Foundation License Version 2
# included in this repository in the LICENSE file
# or at https://docs.python.org/3/license.html
#
# modification history
# -------------------- 
# 23sep17,brk  create
    

    #defined in UNIX layer, but just a wrapper to select()
    ac_cv_func_poll=no
     
    # forces define of PY_FORMAT_LONG_LONG (Python)
    ac_cv_have_long_long_format=yes

    #Python wants these explicit when cross compiling
    
    ac_cv_file__dev_ptmx=no
    ac_cv_file__dev_ptc=no
    
    ac_cv_buggy_getaddrinfo=no
    
    ac_cv_func_gettimeofday=yes
    
    #ignore empty header in UNIX layer
    ac_cv_header_langinfo_h=no

        #avoid not finding pthread in various extra libs, 
        ac_cv_pthread_is_default=yes

        #gcc fails to compile endian test
        case $host in 
                 ppc*-vxworks )
                        ac_cv_c_bigendian=yes ;;
                 arm*-vxworks )
                        ac_cv_c_bigendian=no ;;
                 x86*-vxworks )
                        ac_cv_c_bigendian=no ;;
                 mips*-vxworks )
                        ac_cv_c_bigendian=yes ;;
        esac

https://bugs.python.org/issue31904