Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
32f5fdd7
Commit
32f5fdd7
authored
Feb 27, 2019
by
pxinwr
Committed by
Victor Stinner
Feb 27, 2019
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
bpo-31904: Add cross-build support for VxWorks RTOS (GH-11968)
parent
53b9e1a1
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
75 additions
and
18 deletions
+75
-18
Include/osdefs.h
Include/osdefs.h
+4
-0
Misc/NEWS.d/next/Build/2019-02-21-14-48-31.bpo-31904.J82jY2.rst
...EWS.d/next/Build/2019-02-21-14-48-31.bpo-31904.J82jY2.rst
+1
-0
configure
configure
+19
-2
configure.ac
configure.ac
+19
-2
setup.py
setup.py
+32
-14
No files found.
Include/osdefs.h
View file @
32f5fdd7
...
...
@@ -14,6 +14,10 @@ extern "C" {
#define DELIM L';'
#endif
#ifdef __VXWORKS__
#define DELIM L';'
#endif
/* Filename separator */
#ifndef SEP
#define SEP L'/'
...
...
Misc/NEWS.d/next/Build/2019-02-21-14-48-31.bpo-31904.J82jY2.rst
0 → 100644
View file @
32f5fdd7
Enable build system to cross-build for VxWorks RTOS.
configure
View file @
32f5fdd7
...
...
@@ -3268,6 +3268,9 @@ then
*
-
*
-cygwin
*
)
ac_sys_system
=
Cygwin
;;
*
-
*
-vxworks
*
)
ac_sys_system
=
VxWorks
;;
*
)
# for now, limit cross builds to known configurations
MACHDEP
=
"unknown"
...
...
@@ -3312,6 +3315,9 @@ if test "$cross_compiling" = yes; then
*
-
*
-cygwin
*
)
_host_cpu
=
;;
*
-
*
-vxworks
*
)
_host_cpu
=
$host_cpu
;;
*
)
# for now, limit cross builds to known configurations
MACHDEP
=
"unknown"
...
...
@@ -3399,6 +3405,11 @@ $as_echo "#define _BSD_SOURCE 1" >>confdefs.h
QNX/6.3.2
)
define_xopen_source
=
no
;;
# On VxWorks, defining _XOPEN_SOURCE causes compile failures
# in network headers still using system V types.
VxWorks/
*
)
define_xopen_source
=
no
;;
esac
...
...
@@ -5283,6 +5294,8 @@ cat >> conftest.c <<EOF
i386-gnu
#elif defined(__APPLE__)
darwin
#elif defined(__VXWORKS__)
vxworks
#else
# error unknown platform triplet
#endif
...
...
@@ -9391,7 +9404,7 @@ then
BLDSHARED
=
"
$LDSHARED
"
fi
;;
Linux
*
|
GNU
*
|
QNX
*
)
Linux
*
|
GNU
*
|
QNX
*
|
VxWorks
*
)
LDSHARED
=
'$(CC) -shared'
LDCXXSHARED
=
'$(CXX) -shared'
;;
FreeBSD
*
)
...
...
@@ -9472,6 +9485,8 @@ then
then
CCSHARED
=
"-fPIC"
else
CCSHARED
=
"-Kpic -belf"
fi
;;
VxWorks
*
)
CCSHARED
=
"-fpic -D__SO_PICABILINUX__ -ftls-model=global-dynamic"
esac
fi
{
$as_echo
"
$as_me
:
${
as_lineno
-
$LINENO
}
: result:
$CCSHARED
"
>
&5
...
...
@@ -9530,6 +9545,8 @@ then
# to 2048 kilobytes so that the stack doesn't overflow
# when running test_compile.py.
LINKFORSHARED
=
'-Wl,-E -N 2048K'
;;
VxWorks
*
)
LINKFORSHARED
=
'--export-dynamic'
;;
esac
fi
{
$as_echo
"
$as_me
:
${
as_lineno
-
$LINENO
}
: result:
$LINKFORSHARED
"
>
&5
...
...
@@ -15079,7 +15096,7 @@ $as_echo "$SOABI" >&6; }
case
$ac_sys_system
in
Linux
*
|
GNU
*
|
Darwin
)
Linux
*
|
GNU
*
|
Darwin
|VxWorks
)
EXT_SUFFIX
=
.
${
SOABI
}${
SHLIB_SUFFIX
}
;;
*
)
EXT_SUFFIX
=
${
SHLIB_SUFFIX
}
;;
...
...
configure.ac
View file @
32f5fdd7
...
...
@@ -379,6 +379,9 @@ then
*-*-cygwin*)
ac_sys_system=Cygwin
;;
*-*-vxworks*)
ac_sys_system=VxWorks
;;
*)
# for now, limit cross builds to known configurations
MACHDEP="unknown"
...
...
@@ -423,6 +426,9 @@ if test "$cross_compiling" = yes; then
*-*-cygwin*)
_host_cpu=
;;
*-*-vxworks*)
_host_cpu=$host_cpu
;;
*)
# for now, limit cross builds to known configurations
MACHDEP="unknown"
...
...
@@ -507,6 +513,11 @@ case $ac_sys_system/$ac_sys_release in
QNX/6.3.2)
define_xopen_source=no
;;
# On VxWorks, defining _XOPEN_SOURCE causes compile failures
# in network headers still using system V types.
VxWorks/*)
define_xopen_source=no
;;
esac
...
...
@@ -829,6 +840,8 @@ cat >> conftest.c <<EOF
i386-gnu
#elif defined(__APPLE__)
darwin
#elif defined(__VXWORKS__)
vxworks
#else
# error unknown platform triplet
#endif
...
...
@@ -2555,7 +2568,7 @@ then
BLDSHARED="$LDSHARED"
fi
;;
Linux*|GNU*|QNX*)
Linux*|GNU*|QNX*
|VxWorks*
)
LDSHARED='$(CC) -shared'
LDCXXSHARED='$(CXX) -shared';;
FreeBSD*)
...
...
@@ -2634,6 +2647,8 @@ then
then CCSHARED="-fPIC"
else CCSHARED="-Kpic -belf"
fi;;
VxWorks*)
CCSHARED="-fpic -D__SO_PICABILINUX__ -ftls-model=global-dynamic"
esac
fi
AC_MSG_RESULT($CCSHARED)
...
...
@@ -2690,6 +2705,8 @@ then
# to 2048 kilobytes so that the stack doesn't overflow
# when running test_compile.py.
LINKFORSHARED='-Wl,-E -N 2048K';;
VxWorks*)
LINKFORSHARED='--export-dynamic';;
esac
fi
AC_MSG_RESULT($LINKFORSHARED)
...
...
@@ -4578,7 +4595,7 @@ AC_MSG_RESULT($SOABI)
AC_SUBST(EXT_SUFFIX)
case $ac_sys_system in
Linux*|GNU*|Darwin)
Linux*|GNU*|Darwin
|VxWorks
)
EXT_SUFFIX=.${SOABI}${SHLIB_SUFFIX};;
*)
EXT_SUFFIX=${SHLIB_SUFFIX};;
...
...
setup.py
View file @
32f5fdd7
...
...
@@ -44,6 +44,8 @@ def get_platform():
return
sys
.
platform
host_platform
=
get_platform
()
VXWORKS
=
(
'vxworks'
in
host_platform
)
# Were we compiled --with-pydebug or with #define Py_DEBUG?
COMPILED_WITH_PYDEBUG
=
(
'--with-pydebug'
in
sysconfig
.
get_config_var
(
"CONFIG_ARGS"
))
...
...
@@ -509,13 +511,14 @@ class PyBuildExt(build_ext):
finally
:
os
.
unlink
(
tmpfile
)
def
add_
gcc
_paths
(
self
):
g
cc
=
sysconfig
.
get_config_var
(
'CC'
)
tmpfile
=
os
.
path
.
join
(
self
.
build_temp
,
'
g
ccpaths'
)
def
add_
cross_compiling
_paths
(
self
):
cc
=
sysconfig
.
get_config_var
(
'CC'
)
tmpfile
=
os
.
path
.
join
(
self
.
build_temp
,
'ccpaths'
)
if
not
os
.
path
.
exists
(
self
.
build_temp
):
os
.
makedirs
(
self
.
build_temp
)
ret
=
os
.
system
(
'%s -E -v - </dev/null 2>%s 1>/dev/null'
%
(
g
cc
,
tmpfile
))
ret
=
os
.
system
(
'%s -E -v - </dev/null 2>%s 1>/dev/null'
%
(
cc
,
tmpfile
))
is_gcc
=
False
is_clang
=
False
in_incdirs
=
False
inc_dirs
=
[]
lib_dirs
=
[]
...
...
@@ -525,17 +528,19 @@ class PyBuildExt(build_ext):
for
line
in
fp
.
readlines
():
if
line
.
startswith
(
"gcc version"
):
is_gcc
=
True
elif
line
.
startswith
(
"clang version"
):
is_clang
=
True
elif
line
.
startswith
(
"#include <...>"
):
in_incdirs
=
True
elif
line
.
startswith
(
"End of search list"
):
in_incdirs
=
False
elif
is_gcc
and
line
.
startswith
(
"LIBRARY_PATH"
):
elif
(
is_gcc
or
is_clang
)
and
line
.
startswith
(
"LIBRARY_PATH"
):
for
d
in
line
.
strip
().
split
(
"="
)[
1
].
split
(
":"
):
d
=
os
.
path
.
normpath
(
d
)
if
'/gcc/'
not
in
d
:
add_dir_to_list
(
self
.
compiler
.
library_dirs
,
d
)
elif
is_gcc
and
in_incdirs
and
'/gcc
/'
not
in
line
:
elif
(
is_gcc
or
is_clang
)
and
in_incdirs
and
'/gcc/'
not
in
line
and
'/clang
/'
not
in
line
:
add_dir_to_list
(
self
.
compiler
.
include_dirs
,
line
.
strip
())
finally
:
...
...
@@ -550,7 +555,7 @@ class PyBuildExt(build_ext):
add_dir_to_list
(
self
.
compiler
.
include_dirs
,
'/usr/local/include'
)
# only change this for cross builds for 3.3, issues on Mageia
if
cross_compiling
:
self
.
add_
gcc
_paths
()
self
.
add_
cross_compiling
_paths
()
self
.
add_multiarch_paths
()
# Add paths specified in the environment variables LDFLAGS and
...
...
@@ -722,7 +727,8 @@ class PyBuildExt(build_ext):
# pwd(3)
exts
.
append
(
Extension
(
'pwd'
,
[
'pwdmodule.c'
])
)
# grp(3)
exts
.
append
(
Extension
(
'grp'
,
[
'grpmodule.c'
])
)
if
not
VXWORKS
:
exts
.
append
(
Extension
(
'grp'
,
[
'grpmodule.c'
])
)
# spwd, shadow passwords
if
(
config_h_vars
.
get
(
'HAVE_GETSPNAM'
,
False
)
or
config_h_vars
.
get
(
'HAVE_GETSPENT'
,
False
)):
...
...
@@ -859,7 +865,12 @@ class PyBuildExt(build_ext):
libs
=
[
'crypt'
]
else
:
libs
=
[]
exts
.
append
(
Extension
(
'_crypt'
,
[
'_cryptmodule.c'
],
libraries
=
libs
)
)
if
not
VXWORKS
:
exts
.
append
(
Extension
(
'_crypt'
,
[
'_cryptmodule.c'
],
libraries
=
libs
)
)
elif
self
.
compiler
.
find_library_file
(
lib_dirs
,
'OPENSSL'
):
libs
=
[
'OPENSSL'
]
exts
.
append
(
Extension
(
'_crypt'
,
[
'_cryptmodule.c'
],
libraries
=
libs
)
)
# CSV files
exts
.
append
(
Extension
(
'_csv'
,
[
'_csv.c'
])
)
...
...
@@ -868,8 +879,14 @@ class PyBuildExt(build_ext):
exts
.
append
(
Extension
(
'_posixsubprocess'
,
[
'_posixsubprocess.c'
])
)
# socket(2)
exts
.
append
(
Extension
(
'_socket'
,
[
'socketmodule.c'
],
depends
=
[
'socketmodule.h'
])
)
if
not
VXWORKS
:
exts
.
append
(
Extension
(
'_socket'
,
[
'socketmodule.c'
],
depends
=
[
'socketmodule.h'
])
)
elif
self
.
compiler
.
find_library_file
(
lib_dirs
,
'net'
):
libs
=
[
'net'
]
exts
.
append
(
Extension
(
'_socket'
,
[
'socketmodule.c'
],
depends
=
[
'socketmodule.h'
],
libraries
=
libs
)
)
# Detect SSL support for the socket module (via _ssl)
ssl_ext
,
hashlib_ext
=
self
.
_detect_openssl
(
inc_dirs
,
lib_dirs
)
if
ssl_ext
is
not
None
:
...
...
@@ -1319,9 +1336,10 @@ class PyBuildExt(build_ext):
# Unix-only modules
if
host_platform
!=
'win32'
:
# Steen Lumholt's termios module
exts
.
append
(
Extension
(
'termios'
,
[
'termios.c'
])
)
# Jeremy Hylton's rlimit interface
if
not
VXWORKS
:
# Steen Lumholt's termios module
exts
.
append
(
Extension
(
'termios'
,
[
'termios.c'
])
)
# Jeremy Hylton's rlimit interface
exts
.
append
(
Extension
(
'resource'
,
[
'resource.c'
])
)
else
:
missing
.
extend
([
'resource'
,
'termios'
])
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment