Skip to content
Snippets Groups Projects
Commit 845df79a authored by Nick Forrington's avatar Nick Forrington Committed by Greg Becker
Browse files

Patch libtool when using the Arm compiler (#12004)

* Patch libtool when using the arm, clang, and fujitsu compilers

If libtool does not have values for linker/pic flags, patch them in
parent 44485c56
Branches
Tags
No related merge requests found
......@@ -5,10 +5,12 @@
import inspect
import fileinput
import os
import os.path
import shutil
import stat
import sys
from subprocess import PIPE
from subprocess import check_call
......@@ -56,6 +58,9 @@ class AutotoolsPackage(PackageBase):
build_system_class = 'AutotoolsPackage'
#: Whether or not to update ``config.guess`` on old architectures
patch_config_guess = True
#: Whether or not to update ``libtool``
#: (currently only for Arm/Clang/Fujitsu compilers)
patch_libtool = True
#: Targets for ``make`` during the :py:meth:`~.AutotoolsPackage.build`
#: phase
......@@ -148,6 +153,25 @@ def _do_patch_config_guess(self):
raise RuntimeError('Failed to find suitable config.guess')
@run_after('configure')
def _do_patch_libtool(self):
"""If configure generates a "libtool" script that does not correctly
detect the compiler (and patch_libtool is set), patch in the correct
flags for the Arm, Clang/Flang, and Fujitsu compilers."""
libtool = os.path.join(self.build_directory, "libtool")
if self.patch_libtool and os.path.exists(libtool):
if self.spec.satisfies('%arm') or self.spec.satisfies('%clang') \
or self.spec.satisfies('%fj'):
for line in fileinput.input(libtool, inplace=True):
# Replace missing flags with those for Arm/Clang
if line == 'wl=""\n':
line = 'wl="-Wl,"\n'
if line == 'pic_flag=""\n':
line = 'pic_flag="{0}"\n'\
.format(self.compiler.pic_flag)
sys.stdout.write(line)
@property
def configure_directory(self):
"""Returns the directory where 'configure' resides.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment