Merge upstream LLVM to 223068.
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..2f0da84
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,25 @@
+#==============================================================================#
+# This file specifies intentionally untracked files that git should ignore.
+# See: http://www.kernel.org/pub/software/scm/git/docs/gitignore.html
+#
+# This file is intentionally different from the output of `git svn show-ignore`,
+# as most of those are useless.
+#==============================================================================#
+
+#==============================================================================#
+# File extensions to be ignored anywhere in the tree.
+#==============================================================================#
+# Temp files created by most text editors.
+*~
+# Merge files created by git.
+*.orig
+# Byte compiled python modules.
+*.pyc
+# vim swap files
+.*.swp
+.sw?
+
+#==============================================================================#
+# Explicit files to ignore (only matches one).
+#==============================================================================#
+.gitusers
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f12c525..50c1fa2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -95,7 +95,15 @@
set(LIBCXX_LINK_FLAGS "")
# Configure compiler.
-include(config-ix)
+# @LOCALMOD-START Use a custom compiler config because cmake try_compile always
+# tries to link an executable and linking doesnt work during bootstrap without
+# libnacl.
+if (CMAKE_SYSTEM_NAME STREQUAL "nacl")
+ include(config-ix-pnacl)
+else()
+ include(config-ix)
+endif()
+# @LOCALMOD-END
# Configure ABI library
include(HandleLibCXXABI)
@@ -240,7 +248,8 @@
endif()
string(REPLACE ";" " " LIBCXX_CXX_FLAGS "${LIBCXX_CXX_FLAGS}")
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${LIBCXX_CXX_FLAGS}")
+# @LOCALMOD reverse the order, so that we can override -std=...
+set(CMAKE_CXX_FLAGS "${LIBCXX_CXX_FLAGS} ${CMAKE_CXX_FLAGS}")
#===============================================================================
# Setup Source Code
diff --git a/OWNERS b/OWNERS
new file mode 100644
index 0000000..ac015a5
--- /dev/null
+++ b/OWNERS
@@ -0,0 +1,8 @@
+dschuff@chromium.org
+eliben@chromium.org
+jfb@chromium.org
+jvoung@chromium.org
+kschimpf@chromium.org
+mseaborn@chromium.org
+sehr@chromium.org
+stichnot@chromium.org
diff --git a/PRESUBMIT.py b/PRESUBMIT.py
new file mode 100644
index 0000000..4d9f899
--- /dev/null
+++ b/PRESUBMIT.py
@@ -0,0 +1,66 @@
+# Copyright (c) 2013 The Native Client Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# Documentation on PRESUBMIT.py can be found at:
+# http://www.chromium.org/developers/how-tos/depottools/presubmit-scripts
+
+EXCLUDE_PROJECT_CHECKS_DIRS = [ '.' ]
+
+import subprocess
+def CheckGitBranch():
+ p = subprocess.Popen("git branch -vv", shell=True,
+ stdout=subprocess.PIPE)
+ output, _ = p.communicate()
+
+ lines = output.split('\n')
+ for line in lines:
+ # output format for checked-out branch should be
+ # * branchname hash [TrackedBranchName ...
+ toks = line.split()
+ if '*' not in toks[0]:
+ continue
+ if not 'origin/master' in toks[3]:
+ warning = 'Warning: your current branch:\n' + line
+ warning += '\nis not tracking origin/master. git cl push may silently '
+ warning += 'fail to push your change. To fix this, do\n'
+ warning += 'git branch -u origin/master'
+ return warning
+ return None
+ print 'Warning: presubmit check could not determine local git branch'
+ return None
+
+def _CommonChecks(input_api, output_api):
+ """Checks for both upload and commit."""
+ results = []
+ results.extend(input_api.canned_checks.PanProjectChecks(
+ input_api, output_api, project_name='Native Client',
+ excluded_paths=tuple(EXCLUDE_PROJECT_CHECKS_DIRS)))
+ branch_warning = CheckGitBranch()
+ if branch_warning:
+ results.append(output_api.PresubmitPromptWarning(branch_warning))
+ return results
+
+def CheckChangeOnUpload(input_api, output_api):
+ """Verifies all changes in all files.
+ Args:
+ input_api: the limited set of input modules allowed in presubmit.
+ output_api: the limited set of output modules allowed in presubmit.
+ """
+ report = []
+ report.extend(_CommonChecks(input_api, output_api))
+ return report
+
+def CheckChangeOnCommit(input_api, output_api):
+ """Verifies all changes in all files and verifies that the
+ tree is open and can accept a commit.
+ Args:
+ input_api: the limited set of input modules allowed in presubmit.
+ output_api: the limited set of output modules allowed in presubmit.
+ """
+ report = []
+ report.extend(CheckChangeOnUpload(input_api, output_api))
+ return report
+
+def GetPreferredTrySlaves(project, change):
+ return []
diff --git a/cmake/config-ix-pnacl.cmake b/cmake/config-ix-pnacl.cmake
new file mode 100644
index 0000000..829cfcc
--- /dev/null
+++ b/cmake/config-ix-pnacl.cmake
@@ -0,0 +1,46 @@
+# @LOCALMOD-START The PNaCl driver automatically adds dependencies to
+# libc++ which hasn't been built yet. The tests for
+# flags therefore fail because the library can't be
+# found. We should fix this in a different CL, and add
+# proper detection for newlib's lack of locale_t
+# support. See:
+# https://code.google.com/p/nativeclient/issues/detail?id=3661
+
+set(LIBCXX_HAS_STDCXX0X_FLAG 1)
+set(LIBCXX_HAS_STDCXX11_FLAG 1)
+set(LIBCXX_HAS_FPIC_FLAG 0) # Not quite true, but untested in PNaCl.
+set(LIBCXX_HAS_NODEFAULTLIBS_FLAG 1)
+set(LIBCXX_HAS_NOSTDINCXX_FLAG 1)
+set(LIBCXX_HAS_WALL_FLAG 1)
+set(LIBCXX_HAS_W_FLAG 1)
+set(LIBCXX_HAS_WNO_UNUSED_PARAMETER_FLAG 1)
+set(LIBCXX_HAS_WWRITE_STRINGS_FLAG 1)
+set(LIBCXX_HAS_WNO_LONG_LONG_FLAG 1)
+set(LIBCXX_HAS_PEDANTIC_FLAG 1)
+set(LIBCXX_HAS_WERROR_FLAG 1)
+set(LIBCXX_HAS_WNO_ERROR_FLAG 1)
+set(LIBCXX_HAS_FNO_EXCEPTIONS_FLAG 1)
+set(LIBCXX_HAS_FNO_RTTI_FLAG 1)
+# MSVC flags:
+set(LIBCXX_HAS_WX_FLAG 0)
+set(LIBCXX_HAS_NO_WX_FLAG 0)
+set(LIBCXX_HAS_EHSC_FLAG 0)
+set(LIBCXX_HAS_NO_EHS_FLAG 0)
+set(LIBCXX_HAS_NO_EHA_FLAG 0)
+set(LIBCXX_HAS_NO_GR_FLAG 0)
+
+set(LIBCXX_HAS_PTHREAD_LIB 1)
+set(LIBCXX_HAS_C_LIB 1)
+set(LIBCXX_HAS_M_LIB 1)
+set(LIBCXX_HAS_RT_LIB 0)
+set(LIBCXX_HAS_GCC_S_LIB 0)
+# @LOCALMOD-END
+
+# Check C++0x features
+if (LIBCXX_ENABLE_CXX0X)
+ if (LIBCXX_HAS_STDCXX0X_FLAG)
+ set(CMAKE_REQUIRED_DEFINITIONS -std=c++0x)
+ endif()
+else()
+ set(LIBCXX_HAS_STDCXX0X_FLAG FALSE)
+endif()
diff --git a/codereview.settings b/codereview.settings
new file mode 100644
index 0000000..21c6452
--- /dev/null
+++ b/codereview.settings
@@ -0,0 +1,10 @@
+# This file is used by gcl to get repository specific information.
+CODE_REVIEW_SERVER: codereview.chromium.org
+CC_LIST: native-client-reviews@googlegroups.com
+VIEW_VC: https://gerrit.chromium.org/gerrit/gitweb?p=native_client/pnacl-libcxx.git;a=commit;h=
+STATUS: http://nativeclient-status.appspot.com/status
+TRY_ON_UPLOAD: False
+TRYSERVER_PROJECT: nacl
+TRYSERVER_SVN_URL: svn://svn.chromium.org/chrome-try/try-nacl
+PUSH_URL_CONFIG: url.ssh://gerrit.chromium.org.pushinsteadof
+ORIGIN_URL_CONFIG: http://chromium.googlesource.com
diff --git a/include/__config b/include/__config
index df0bb77..6f57df5 100644
--- a/include/__config
+++ b/include/__config
@@ -647,6 +647,10 @@
#define _LIBCPP_ELAST ELAST
#elif defined(__linux__)
#define _LIBCPP_ELAST 4095
+// @LOCALMOD-START
+#elif defined(__native_client__)
+// NaCl doesn't have ELAST or __ELASTERROR
+// @LOCALMOD-END
#elif defined(_NEWLIB_VERSION)
#define _LIBCPP_ELAST __ELASTERROR
#elif defined(__APPLE__)
diff --git a/include/__locale b/include/__locale
index 4711620..03f1b52 100644
--- a/include/__locale
+++ b/include/__locale
@@ -31,6 +31,13 @@
# endif
#elif defined(__sun__)
# include <support/solaris/xlocale.h>
+// @LOCALMOD-START
+#elif defined(_NEWLIB_VERSION)
+// FIXME: replace all the uses of _NEWLIB_VERSION with __NEWLIB__ preceded by an
+// include of <sys/cdefs.h> once https://sourceware.org/ml/newlib-cvs/2014-q3/msg00038.html
+// has had a chance to bake for a bit.
+#include <support/newlib/xlocale.h>
+// @LOCALMOD-END
#elif (defined(__GLIBC__) || defined(__APPLE__) || defined(__FreeBSD__) \
|| defined(__EMSCRIPTEN__) || defined(__IBMCPP__))
# include <xlocale.h>
@@ -391,6 +398,21 @@
static const mask punct = _ISPUNCT;
static const mask xdigit = _ISXDIGIT;
static const mask blank = _ISBLANK;
+// @LOCALMOD-START
+#elif defined(_NEWLIB_VERSION)
+ typedef char mask; // Same type as Newlib's _ctype_ array in ctype.h.
+ // Defined in Newlib's ctype.h.
+ static const mask space = _S;
+ static const mask print = _P | _U | _L | _N | _B;
+ static const mask cntrl = _C;
+ static const mask upper = _U;
+ static const mask lower = _L;
+ static const mask alpha = _U | _L;
+ static const mask digit = _N;
+ static const mask punct = _P;
+ static const mask xdigit = _X | _N;
+ static const mask blank = _B;
+// @LOCALMOD-END
#else // __GLIBC__ || _WIN32 || __APPLE__ || __FreeBSD__ || __EMSCRIPTEN__ || __sun__
typedef unsigned long mask;
static const mask space = 1<<0;
diff --git a/include/atomic b/include/atomic
index b01a59f..fe85609 100644
--- a/include/atomic
+++ b/include/atomic
@@ -815,12 +815,24 @@
{
mutable _Atomic(_Tp) __a_;
+ // @LOCALMOD-BEGIN The NaCl builtin delays resolution of the lock-free
+ // property until translation time (time at which the
+ // actual target is known).
+#if defined (__pnacl__)
+ _LIBCPP_INLINE_VISIBILITY
+ bool is_lock_free() const volatile _NOEXCEPT
+ {return __nacl_atomic_is_lock_free(sizeof(_Tp), &__a_);}
+ _LIBCPP_INLINE_VISIBILITY
+ bool is_lock_free() const _NOEXCEPT
+ {return __nacl_atomic_is_lock_free(sizeof(_Tp), &__a_);}
+#else
_LIBCPP_INLINE_VISIBILITY
bool is_lock_free() const volatile _NOEXCEPT
{return __c11_atomic_is_lock_free(sizeof(_Tp));}
_LIBCPP_INLINE_VISIBILITY
bool is_lock_free() const _NOEXCEPT
{return __c11_atomic_is_lock_free(sizeof(_Tp));}
+#endif // @LOCALMOD-END
_LIBCPP_INLINE_VISIBILITY
void store(_Tp __d, memory_order __m = memory_order_seq_cst) volatile _NOEXCEPT
{__c11_atomic_store(&__a_, __d, __m);}
diff --git a/include/cmath b/include/cmath
index d3aa4be..bddae84 100644
--- a/include/cmath
+++ b/include/cmath
@@ -1377,7 +1377,11 @@
using ::log2f;
inline _LIBCPP_INLINE_VISIBILITY float log2(float __lcpp_x) _NOEXCEPT {return log2f(__lcpp_x);}
+#if defined(_NEWLIB_VERSION) // @LOCALMOD-START Missing from newlib. Note that PNaCl represents ``long double`` as ``double``, hence the intrinsic's type.
+inline _LIBCPP_INLINE_VISIBILITY long double log2(long double __lcpp_x) _NOEXCEPT {return __builtin_log2(__lcpp_x);}
+#else
inline _LIBCPP_INLINE_VISIBILITY long double log2(long double __lcpp_x) _NOEXCEPT {return log2l(__lcpp_x);}
+#endif // @LOCALMOD-END
template <class _A1>
inline _LIBCPP_INLINE_VISIBILITY
@@ -1390,7 +1394,11 @@
using ::logbf;
inline _LIBCPP_INLINE_VISIBILITY float logb(float __lcpp_x) _NOEXCEPT {return logbf(__lcpp_x);}
+#if defined(_NEWLIB_VERSION) // @LOCALMOD-START Missing from newlib. Note that PNaCl represents ``long double`` as ``double``, hence the intrinsic's type.
+inline _LIBCPP_INLINE_VISIBILITY long double logb(long double __lcpp_x) _NOEXCEPT {return __builtin_logb(__lcpp_x);}
+#else
inline _LIBCPP_INLINE_VISIBILITY long double logb(long double __lcpp_x) _NOEXCEPT {return logbl(__lcpp_x);}
+#endif // @LOCALMOD-END
template <class _A1>
inline _LIBCPP_INLINE_VISIBILITY
@@ -1475,6 +1483,15 @@
// nexttoward
+#if defined(_NEWLIB_VERSION) // @LOCALMOD-START Missing from newlib. Note that PNaCl represents ``long double`` as ``double``, hence the intrinsic's type.
+inline _LIBCPP_INLINE_VISIBILITY float nexttoward(float __lcpp_x, long double __lcpp_y) _NOEXCEPT {return __builtin_nexttoward(__lcpp_x, __lcpp_y);}
+inline _LIBCPP_INLINE_VISIBILITY long double nexttoward(long double __lcpp_x, long double __lcpp_y) _NOEXCEPT {return __builtin_nexttoward(__lcpp_x, __lcpp_y);}
+
+template <class _A1>
+inline _LIBCPP_INLINE_VISIBILITY
+typename enable_if<is_integral<_A1>::value, double>::type
+nexttoward(_A1 __lcpp_x, long double __lcpp_y) _NOEXCEPT {return __builtin_nexttoward((double)__lcpp_x, __lcpp_y);}
+#else
using ::nexttoward;
using ::nexttowardf;
@@ -1485,7 +1502,7 @@
inline _LIBCPP_INLINE_VISIBILITY
typename enable_if<is_integral<_A1>::value, double>::type
nexttoward(_A1 __lcpp_x, long double __lcpp_y) _NOEXCEPT {return nexttoward((double)__lcpp_x, __lcpp_y);}
-
+#endif // @LOCALMOD-END
// remainder
using ::remainder;
@@ -1658,14 +1675,18 @@
using ::llrintl;
using ::llroundl;
using ::log1pl;
+#if !defined(_NEWLIB_VERSION) // @LOCALMOD-START Missing from newlib.
using ::log2l;
using ::logbl;
+#endif // @LOCALMOD-END
using ::lrintl;
using ::lroundl;
using ::nanl;
using ::nearbyintl;
using ::nextafterl;
+#if !defined(_NEWLIB_VERSION) // @LOCALMOD-START Missing from newlib.
using ::nexttowardl;
+#endif // @LOCALMOD-END
using ::remainderl;
using ::remquol;
using ::rintl;
diff --git a/include/cstdio b/include/cstdio
index ce3af4d..e7d8fab 100644
--- a/include/cstdio
+++ b/include/cstdio
@@ -172,8 +172,11 @@
using ::fsetpos;
using ::ftell;
using ::rewind;
+#undef clearerr // @LOCALMOD
using ::clearerr;
+#undef feof // @LOCALMOD
using ::feof;
+#undef ferror // @LOCALMOD
using ::ferror;
using ::perror;
diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
index 12e9f4a..e83bc3e 100644
--- a/lib/CMakeLists.txt
+++ b/lib/CMakeLists.txt
@@ -1,5 +1,19 @@
# Get sources
file(GLOB LIBCXX_SOURCES ../src/*.cpp)
+
+# @LOCALMOD-START Bake libcxxabi into the libcxx build except on Mac, where
+# we use the system libcxxabi. When we do this, also don't link against
+# libcxxabi when building shared libraries.
+file(GLOB LIBCXXABI_SOURCES ../../libcxxabi/src/*.cpp)
+file(GLOB PNACL_EH_SUPPORT ../../libcxxabi/src/cxa_pnacl_sjlj_exception.cpp)
+if ( NOT CMAKE_SYSTEM_NAME STREQUAL "nacl" )
+ # Don't include pnacl EH support for non-nacl builds.
+ list(REMOVE_ITEM LIBCXXABI_SOURCES ${PNACL_EH_SUPPORT})
+endif()
+ list(APPEND LIBCXX_SOURCES ${LIBCXXABI_SOURCES})
+ set(LIBCXX_CXX_ABI_LIBRARY)
+# @LOCALMOD-END
+
if(WIN32)
file(GLOB LIBCXX_WIN32_SOURCES ../src/support/win32/*.cpp)
list(APPEND LIBCXX_SOURCES ${LIBCXX_WIN32_SOURCES})
@@ -53,10 +67,19 @@
target_link_libraries(cxx ${libraries})
# Setup flags.
-append_if(LIBCXX_COMPILE_FLAGS LIBCXX_HAS_FPIC_FLAG -fPIC)
+# @LOCALMOD removed append_if(LIBCXX_COMPILE_FLAGS LIBCXX_HAS_FPIC_FLAG -fPIC)
append_if(LIBCXX_LINK_FLAGS LIBCXX_HAS_NODEFAULTLIBS_FLAG -nodefaultlibs)
-if ( APPLE )
+# @LOCALMOD-START
+if ( CMAKE_SYSTEM_NAME STREQUAL "Darwin" )
+ # Needed to build against OSX 10.6 SDK
+ list(APPEND compile_flags "-U__STRICT_ANSI__")
+ # Do not re-export libc++abi symbols since they do not come from another dylib
+ list(APPEND link_flags
+ "-Wl,-unexported_symbols_list,${CMAKE_CURRENT_SOURCE_DIR}/libc++unexp.exp")
+endif()
+
+if ( False ) # @LOCALMOD-END
if ( CMAKE_OSX_DEPLOYMENT_TARGET STREQUAL "10.6" )
list(APPEND LIBCXX_COMPILE_FLAGS "-U__STRICT_ANSI__")
list(APPEND LIBCXX_LINK_FLAGS
diff --git a/src/locale.cpp b/src/locale.cpp
index f21e35d..191b239 100644
--- a/src/locale.cpp
+++ b/src/locale.cpp
@@ -1033,6 +1033,10 @@
// going to end up dereferencing it later...
#elif defined(__EMSCRIPTEN__)
return *__ctype_b_loc();
+#elif defined(_NEWLIB_VERSION) // @LOCALMOD-START
+ // Newlib has a 257-entry table in ctype_.c, where (char)0 starts at [1].
+ return _ctype_ + 1;
+ // @LOCALMOD-END
#elif defined(_AIX)
return (const unsigned int *)__lc_ctype_ptr->obj->mask;
#elif defined(__ANDROID__)
diff --git a/src/thread.cpp b/src/thread.cpp
index 0ced1e3..6a18e2c 100644
--- a/src/thread.cpp
+++ b/src/thread.cpp
@@ -17,7 +17,7 @@
#include "limits"
#include <sys/types.h>
#if !defined(_WIN32)
-#if !defined(__sun__) && !defined(__linux__) && !defined(_AIX)
+#if !defined(__sun__) && !defined(__linux__) && !defined(_AIX) && !defined(__native_client__) // @LOCALMOD
#include <sys/sysctl.h>
#endif // !__sun__ && !__linux__ && !_AIX
#include <unistd.h>
diff --git a/test/lit.cfg b/test/lit.cfg
index ec05d1c..62a8a28 100644
--- a/test/lit.cfg
+++ b/test/lit.cfg
@@ -29,12 +29,18 @@
"""
def __init__(self, cxx_under_test, use_verify_for_fail,
- cpp_flags, ld_flags, exec_env):
+ cpp_flags, ld_flags, exec_env,
+ # @LOCALMOD
+ exe_suffix, shell_prefix):
self.cxx_under_test = cxx_under_test
self.use_verify_for_fail = use_verify_for_fail
self.cpp_flags = list(cpp_flags)
self.ld_flags = list(ld_flags)
self.exec_env = dict(exec_env)
+ # @LOCALMOD-START
+ self.exe_suffix = exe_suffix
+ self.shell_prefix = shell_prefix
+ # @LOCALMOD-END
def execute(self, test, lit_config):
while True:
@@ -116,6 +122,10 @@
cmd.extend('%s=%s' % (name, value)
for name,value in self.exec_env.items())
cmd.append(exec_path)
+ # @LOCALMOD-START
+ if self.shell_prefix:
+ cmd = self.shell_prefix + cmd
+ # @LOCALMOD-END
if lit_config.useValgrind:
cmd = lit_config.valgrindArgs + cmd
out, err, exitCode = lit.util.executeCommand(cmd, cwd=in_dir)
@@ -149,7 +159,10 @@
report += "\n\nExpected compilation to fail!"
return lit.Test.FAIL, report
else:
- exec_file = tempfile.NamedTemporaryFile(suffix="exe", delete=False)
+ # @LOCALMOD-START
+ exec_file = tempfile.NamedTemporaryFile(
+ suffix=self.exe_suffix, delete=False)
+ # @LOCALMOD-END
exec_path = exec_file.name
exec_file.close()
@@ -195,6 +208,10 @@
def __init__(self, lit_config, config):
self.lit_config = lit_config
self.config = config
+ # @LOCALMOD-START
+ self.exe_suffix = None
+ self.shell_prefix = None
+ # @LOCALMOD-END
self.cxx = None
self.src_root = None
self.obj_root = None
@@ -227,6 +244,8 @@
"parameter '{}' should be true or false".format(name))
def configure(self):
+ # @LOCALMOD
+ self.configure_exe_wrappers()
self.configure_cxx()
self.configure_triple()
self.configure_src_root()
@@ -239,6 +258,13 @@
self.configure_link_flags()
self.configure_sanitizer()
self.configure_features()
+ # @LOCALMOD-START -- filter out nostdinc++ and nodefaultlibs if needed.
+ if self.use_system_lib:
+ self.compile_flags = [flag for flag in self.compile_flags
+ if flag != '-nostdinc++']
+ self.link_flags = [flag for flag in self.link_flags
+ if flag != '-nodefaultlibs']
+ # @LOCALMOD-END
# Print the final compile and link flags.
self.lit_config.note('Using compile flags: %s' % self.compile_flags)
self.lit_config.note('Using link flags: %s' % self.link_flags)
@@ -252,7 +278,21 @@
self.use_clang_verify,
cpp_flags=self.compile_flags,
ld_flags=self.link_flags,
- exec_env=self.env)
+ exec_env=self.env,
+ # @LOCALMOD
+ exe_suffix=self.exe_suffix,
+ shell_prefix=self.shell_prefix)
+
+ # @LOCALMOD-START
+ def configure_exe_wrappers(self):
+ # Allow customizing the resulting executable's suffix
+ # as well as an wrapper around how to run the executable
+ # via a shell_prefix.
+ self.exe_suffix = self.get_lit_conf('exe_suffix', 'exe')
+ self.shell_prefix = self.get_lit_conf('shell_prefix', None)
+ if self.shell_prefix:
+ self.shell_prefix = shlex.split(self.shell_prefix)
+ # @LOCALMOD-END
def configure_cxx(self):
# Gather various compiler parameters.