|
After playing a little with my compiler (e.g. float.h in Como has LDBL_MAX incorrectly defined) I was able to come up with the attached config.
It seems it is possible at least partially to get stdcxx compiled. Now it is failing on examples (see build.log). Sometime soon I hope to be able to work on this issue. AFAICS, the first linker error is in the localedef utility due to unsatisfied references to implicit instantiations of the std::vector primary template. The argument to the --template_directory option should be the same as that to the -L option, i.e., $BUILDDIR/lib (or $INSTALLDIR/lib when linking with an already installed library), but it's /lib instead. Check the value of CXXFLAGS in makefile.in.
como localedef.o locale.o aliases.o charmap.o codecvt.o collate.o ctype.o def.o diagnostic.o \
memchk.o messages.o monetary.o numeric.o path.o time.o scanner.o \
-o localedef --template_directory=/lib -lpthread -L/opt/src/stdcxx-4.2.1/build/lib -lstd12s -lm
[...]
C++ prelinker: executing: /opt/bin/realcomo -c --version --display_mode --wchar_t_keyword \
--bool --enum_overloading --explicit --typename --extern_inline --new_for_init --exceptions \
--export --alternative_tokens --diag_suppress=161 -I/opt/src/stdcxx-4.2.1/include/ansi \
-D_REENTRANT -I/opt/src/stdcxx-4.2.1/include -I/opt/src/stdcxx-4.2.1/build/include \
-A -x --long_long --template_directory=/lib -O --display_error_number \
--diag_suppress 111,177,228,236,549,550,830 /opt/src/stdcxx-4.2.1/util/locale.cpp
Comeau C/C++ 4.3.10.1 (May 7 2008 12:23:21) for LINUX_INTEL_ELF_Beta
Copyright 1988-2008 Comeau Computing. All rights reserved.
MODE:strict errors C++ noC++0x_extensions
[...]
aliases.o: In function `get_installed_locales(int)':
aliases.int.c:(.text+0x3de): warning: the use of `tmpnam' is dangerous, better use `mkstemp'
localedef.o: In function `std::vector<std::string>::~vector()':
localedef.int.c:(.text+0x516): undefined reference to `std::vector<std::string>::_C_destroy(std::string*)'
[...]
localedef.o: In function `std::vector<Charmap*>::push_back(Charmap* const&)':
localedef.int.c:(.text+0x6b3): undefined reference to `std::vector<Charmap*>::_C_insert_1(Charmap** const&, Charmap* const&)'
localedef.o: In function `std::vector<Charmap*>::~vector()':
localedef.int.c:(.text+0x7b9): undefined reference to `std::vector<Charmap*>::_C_destroy(Charmap**)'
[...]
After changing como.config to include remarks by Martin (como.config attached) the library compiles and can be installed. It fails, however, the same way as EDG reported here STDCXX-592
I haven't spent too much time analyzing STDCXX-592 but it feels like a compiler problem. IIRC, it goes away when the export feature is disabled, making it hard to isolate to a small standalone test case. In your build, does it affect any other programs besides the three stdcxx examples, codecvt.cpp, collate.cpp, and ctype.cpp?
It looks like only these three files are affected.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
como -c -DCHECK_DECL -A -x --no_stdarg_builtin --template_directory=/lib -O \ --display_error_number --diag_suppress 11,450,518 \ -DHDRNAME="<stdio.h>" -DFUNNAME=clearerr -DFUN=clearerr -DTAKE_ADDR=1 \ /tmp/libc_decl_tmpsrc-26489.cpp -o /tmp/clearerr-26489.o Comeau C/C++ 4.3.10.1 (May 7 2008 12:23:21) for LINUX_INTEL_ELF_Beta Copyright 1988-2008 Comeau Computing. All rights reserved. MODE:strict errors C++ noC++0x_extensions "/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.2/include/stdarg.h", line 43: error #20: identifier "__builtin_va_list" is undefined typedef __builtin_va_list __gnuc_va_list; ^ 1 error detected in the compilation of "/tmp/libc_decl_tmpsrc-26489.cpp".