Skip to content

Commit

Permalink
bpo-31904: setup.py: fix cross-compilation on VxWorks (GH-24191)
Browse files Browse the repository at this point in the history
Add library search path by wr-cc in add_cross_compiling_paths().
  • Loading branch information
pxinwr authored and adorilson committed Mar 11, 2021
1 parent 5ebd2c3 commit e110475
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 0 deletions.
@@ -0,0 +1 @@
Add library search path by wr-cc in add_cross_compiling_paths() for VxWorks.
48 changes: 48 additions & 0 deletions setup.py
Expand Up @@ -682,6 +682,51 @@ def add_multiarch_paths(self):
finally:
os.unlink(tmpfile)

def add_wrcc_search_dirs(self):
# add library search path by wr-cc, the compiler wrapper

def convert_mixed_path(path):
# convert path like C:\folder1\folder2/folder3/folder4
# to msys style /c/folder1/folder2/folder3/folder4
drive = path[0].lower()
left = path[2:].replace("\\", "/")
return "/" + drive + left

def add_search_path(line):
# On Windows building machine, VxWorks does
# cross builds under msys2 environment.
pathsep = (";" if sys.platform == "msys" else ":")
for d in line.strip().split("=")[1].split(pathsep):
d = d.strip()
if sys.platform == "msys":
# On Windows building machine, compiler
# returns mixed style path like:
# C:\folder1\folder2/folder3/folder4
d = convert_mixed_path(d)
d = os.path.normpath(d)
add_dir_to_list(self.compiler.library_dirs, d)

cc = sysconfig.get_config_var('CC')
tmpfile = os.path.join(self.build_temp, 'wrccpaths')
os.makedirs(self.build_temp, exist_ok=True)
try:
ret = run_command('%s --print-search-dirs >%s' % (cc, tmpfile))
if ret:
return
with open(tmpfile) as fp:
# Parse paths in libraries line. The line is like:
# On Linux, "libraries: = path1:path2:path3"
# On Windows, "libraries: = path1;path2;path3"
for line in fp:
if not line.startswith("libraries"):
continue
add_search_path(line)
finally:
try:
os.unlink(tmpfile)
except OSError:
pass

def add_cross_compiling_paths(self):
cc = sysconfig.get_config_var('CC')
tmpfile = os.path.join(self.build_temp, 'ccpaths')
Expand Down Expand Up @@ -715,6 +760,9 @@ def add_cross_compiling_paths(self):
finally:
os.unlink(tmpfile)

if VXWORKS:
self.add_wrcc_search_dirs()

def add_ldflags_cppflags(self):
# Add paths specified in the environment variables LDFLAGS and
# CPPFLAGS for header and library files.
Expand Down

0 comments on commit e110475

Please sign in to comment.