diff options
author | Mark W. Krentel <krentel@rice.edu> | 2018-10-09 17:12:34 -0500 |
---|---|---|
committer | Peter Scheibel <scheibel1@llnl.gov> | 2018-10-09 15:12:34 -0700 |
commit | 54bd049d9944a1b9751a378d47aa0e59e58d2552 (patch) | |
tree | b954054605cc24037c2bba6a405cba7fa0c6fb0d | |
parent | 5cafe1b4e8099c386ad4bd3adc4a9658f1958426 (diff) | |
download | spack-54bd049d9944a1b9751a378d47aa0e59e58d2552.tar.gz spack-54bd049d9944a1b9751a378d47aa0e59e58d2552.tar.bz2 spack-54bd049d9944a1b9751a378d47aa0e59e58d2552.tar.xz spack-54bd049d9944a1b9751a378d47aa0e59e58d2552.zip |
xerces-c: add variant for transcoder, rework config flags. (#9393)
* xerces-c: Add variant for choice of transcoder (gnuiconv, iconv, icu,
macos, windows). It's important to specify a --enable-transcoder
option on the configure line or else xerces may make a different
choice when multiple transcoders are available.
* Pass the compile flags to configure. For cflags and cxxflags, this is
necessary to respect the value from the spack install line.
Otherwise, xerces (and any autotools package) will choose a default
value that overrides the spack compiler wrapper.
* Add xerces version 3.2.2.
* icu4c needs the --enable-rpath configure option on Darwin
-rw-r--r-- | var/spack/repos/builtin/packages/icu4c/package.py | 9 | ||||
-rw-r--r-- | var/spack/repos/builtin/packages/xerces-c/package.py | 52 |
2 files changed, 56 insertions, 5 deletions
diff --git a/var/spack/repos/builtin/packages/icu4c/package.py b/var/spack/repos/builtin/packages/icu4c/package.py index 39523b1563..e6a3df465d 100644 --- a/var/spack/repos/builtin/packages/icu4c/package.py +++ b/var/spack/repos/builtin/packages/icu4c/package.py @@ -46,4 +46,11 @@ class Icu4c(AutotoolsPackage): return url.format(version.dotted, version.underscored) def configure_args(self): - return ['--enable-rpath'] + args = [] + + # The --enable-rpath option is only needed on MacOS, and it + # breaks the build for xerces-c on Linux. + if 'platform=darwin' in self.spec: + args.append('--enable-rpath') + + return args diff --git a/var/spack/repos/builtin/packages/xerces-c/package.py b/var/spack/repos/builtin/packages/xerces-c/package.py index 8733289069..7b321f61bd 100644 --- a/var/spack/repos/builtin/packages/xerces-c/package.py +++ b/var/spack/repos/builtin/packages/xerces-c/package.py @@ -23,6 +23,7 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * +import sys class XercesC(AutotoolsPackage): @@ -35,13 +36,56 @@ class XercesC(AutotoolsPackage): homepage = "https://xerces.apache.org/xerces-c" url = "https://archive.apache.org/dist/xerces/c/3/sources/xerces-c-3.2.1.tar.bz2" + version('3.2.2', '4c395216ecbef3c88a756ff4090e6f7e') version('3.2.1', '8f98a81a3589bbc2dad9837452f7d319') version('3.1.4', 'd04ae9d8b2dee2157c6db95fa908abfd') - depends_on('libiconv') + # It's best to be explicit about the transcoder or else xerces may + # choose another value. + if sys.platform == 'darwin': + default_transcoder = 'macos' + elif sys.platform.startswith('win') or sys.platform == 'cygwin': + default_transcoder = 'windows' + else: + default_transcoder = 'gnuiconv' - def setup_environment(self, spack_env, run_env): - spack_env.append_flags('LDFLAGS', self.spec['libiconv'].libs.ld_flags) + variant('transcoder', default=default_transcoder, + values=('gnuiconv', 'iconv', 'icu', 'macos', 'windows'), + multi=False, + description='Use the specified transcoder') + + depends_on('libiconv', type='link', when='transcoder=gnuiconv') + depends_on('icu4c', type='link', when='transcoder=icu') + + # Pass flags to configure. This is necessary for CXXFLAGS or else + # the xerces default will override the spack wrapper. + def flag_handler(self, name, flags): + spec = self.spec + + # There is no --with-pkg for gnuiconv. + if name == 'ldflags' and 'transcoder=gnuiconv' in spec: + flags.append(spec['libiconv'].libs.ld_flags) + + return (None, None, flags) def configure_args(self): - return ['--disable-network'] + spec = self.spec + args = ['--disable-network'] + + if 'transcoder=gnuiconv' in spec: + args.append('--enable-transcoder-gnuiconv') + + if 'transcoder=iconv' in spec: + args.append('--enable-transcoder-iconv') + + if 'transcoder=icu' in spec: + args.append('--enable-transcoder-icu') + args.append('--with-icu=%s' % spec['icu4c'].prefix) + + if 'transcoder=macos' in spec: + args.append('--enable-transcoder-macosunicodeconverter') + + if 'transcoder=windows' in spec: + args.append('--enable-transcoder-windows') + + return args |