Greetings Martin.
For what it's worth, this isn't a problem restricted to XLC++. My
reading of the .config files indicates that the only compilers that
won't be affected are the osf_cxx, Sunpro, reliant_cds, como and eccp
compilers. The first two compilers don't use a comma in the rpath
option, and the remainder don't have an rpath switch defined.
It might be possible to alter the makefiles to mangle the path, escaping
the comma, but I suspect that could cause other problems. I would
hazard a guess that spaces in the value of $BUILDDIR might also cause a
number of problems.
--Andrew Black
Martin Sebor wrote:
I've run into a linker error when building with IBM XLC++
in a directory whose name contains a comma (see below).
The problem is that we're passing the absolute pathname
of $BUILDDIR/lib to the linker via the -Wl compiler driver
option. This option uses the comma to separate individual
arguments from one another. I don't know if it's worth
trying to deal with this or not but I thought I'd mention
it in case someone else runs into the same problem or in
case Andrew has an idea for how to fix it.
Martin
$ nice gmake BUILDMODE=shared,debug
BUILDDIR=/build/sebor/tmp/stdcxx-vacpp-7.0-shared,debug
GNUmakefile:289: "CONFIG not specified, using vacpp.config"
expr: 0402-050 Syntax error.
creating BUILDDIR=/build/sebor/tmp/stdcxx-vacpp-7.0-shared,debug
generating /build/sebor/tmp/stdcxx-vacpp-7.0-shared,debug/makefile.in
from /amd/devco/sebor/stdcxx/etc/config/vacpp.config
expr: 0402-050 Syntax error.
gmake[1]: Entering directory
`/build/sebor/tmp/stdcxx-vacpp-7.0-shared,debug'
gmake[2]: Entering directory
`/build/sebor/tmp/stdcxx-vacpp-7.0-shared,debug/include'
gmake config
gmake[3]: Entering directory
`/build/sebor/tmp/stdcxx-vacpp-7.0-shared,debug/include'
configuring for xlCcore- on aix-5.3
checking if the compiler is sane ok (invoked with
xlCcore)
checking if the linker is sane ok (invoked with
xlCcore)
...
gmake[2]: Entering directory
`/build/sebor/tmp/stdcxx-vacpp-7.0-shared,debug/examples'
xlCcore -c -I/amd/devco/sebor/stdcxx/include/ansi -D_RWSTDDEBUG
-D_RWSTD_USE_CONFIG -I/amd/devco/sebor/stdcxx/include
-I/build/sebor/tmp/stdcxx-vacpp-7.0-shared,debug/include
-I/amd/devco/sebor/stdcxx/examples/include -g
-qtemplateregistry=accumulate.ti
/amd/devco/sebor/stdcxx/examples/manual/accumulate.cpp
xlCcore accumulate.o -o accumulate
-I/amd/devco/sebor/stdcxx/include/ansi -D_RWSTDDEBUG -D_RWSTD_USE_CONFIG
-liconv -brtl -L/build/sebor/tmp/stdcxx-vacpp-7.0-shared,debug/lib -lstd
-Wl,-bsvr4,-R/build/sebor/tmp/stdcxx-vacpp-7.0-shared,debug/lib -lm
-qtemplateregistry=accumulate.ti
ld: 0706-005 Cannot find or open file: debug/lib
ld:open(): A file or directory in the path name does not exist.
gmake[2]: *** [accumulate] Error 255
gmake[2]: Leaving directory
`/build/sebor/tmp/stdcxx-vacpp-7.0-shared,debug/examples'
gmake[1]: [examples] Error 2 (ignored)