stdcxx-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Farid Zaripov" <Farid_Zari...@epam.com>
Subject RE: svn commit: r627618 - /stdcxx/trunk/etc/config/GNUmakefile.cfg
Date Wed, 20 Feb 2008 16:36:09 GMT
> -----Original Message-----
> From: Martin Sebor [mailto:msebor@gmail.com] On Behalf Of Martin Sebor
> Sent: Wednesday, February 20, 2008 1:54 AM
> To: dev@stdcxx.apache.org
> Subject: Re: svn commit: r627618 - 
> /stdcxx/trunk/etc/config/GNUmakefile.cfg
> 
> Hi Farid,
> 
> This change seems to have broken the config test dependency 
> detection logic and caused the EDG eccp build regression 
> described in STDCXX-733.
> I assigned the issue to you but just in case you miss it 
> among all the other traffic on issues@s.a.o... Can you please 
> take a look into it whenever you have chance?
> 
>      http://issues.apache.org/jira/browse/STDCXX-733
> 
> Incidentally, out of curiosity, what is this change supposed to do?

  I made this change in GNUmakefile because the
EXTERN_FUNCTION_TEMPLATE.cpp
config test has compiled twice on my gcc/Linux:

1) first it was not linked with extern_function_template_imp.o and due
to this
the macro _RWSTD_NO_EXTERN_FUNCTION_TEMPLATE is defined in config.h

config.log:
---------
...
gcc -D_RWSTDDEBUG -pthread -I. -pedantic -nostdinc++ -g  -W -Wall
-Wcast-qual -Winline -Wshadow -Wwrite-strings -Wno-long-long
-Wcast-align  -c
/usr/src/trunk/etc/config/src/extern_function_template_imp.cpp -o
extern_function_template_imp.o
gcc -D_RWSTDDEBUG -pthread -I. -pedantic -nostdinc++ -g  -W -Wall
-Wcast-qual -Winline -Wshadow -Wwrite-strings -Wno-long-long
-Wcast-align  -c
/usr/src/trunk/etc/config/src/EXTERN_FUNCTION_TEMPLATE.cpp -o
EXTERN_FUNCTION_TEMPLATE.o
gcc EXTERN_FUNCTION_TEMPLATE.o -pthread  -lm -lsupc++  -o
EXTERN_FUNCTION_TEMPLATE
EXTERN_FUNCTION_TEMPLATE.o(.text+0x26): In function `main':
/usr/src/trunk/etc/config/src/EXTERN_FUNCTION_TEMPLATE.cpp:47: undefined
reference to `S<int> foobar<int>(S<int>)'
collect2: ld returned 1 exit status
...
---------

config.h:
---------
...
// #define _RWSTD_NO_extern_function_template_imp
#define _RWSTD_NO_EXTERN_FUNCTION_TEMPLATE
...
---------

2) second it was linked with extern_function_template_imp.o and the
config.h contains the second entry, where
_RWSTD_NO_EXTERN_FUNCTION_TEMPLATE define is commented

config.log:
---------
...gcc -D_RWSTDDEBUG -pthread -I. -pedantic -nostdinc++ -g  -W -Wall
-Wcast-qual -Winline -Wshadow -Wwrite-strings -Wno-long-long
-Wcast-align  -c
/usr/src/trunk/etc/config/src/EXTERN_FUNCTION_TEMPLATE.cpp -o
EXTERN_FUNCTION_TEMPLATE.o
gcc EXTERN_FUNCTION_TEMPLATE.o -pthread extern_function_template_imp.o
-lm -lsupc++  -o EXTERN_FUNCTION_TEMPLATE
./EXTERN_FUNCTION_TEMPLATE
...
---------

config.h:
---------
...
// #define _RWSTD_NO_EXTERN_FUNCTION_TEMPLATE
...
---------

  As a result the _RWSTD_NO_EXTERN_FUNCTION_TEMPLATE macro is defined
while gcc supports the extern function templates.

  The first compilation is come from "%.o: %.cpp" rule, and the second -
from "config:" rule.

Farid.

Mime
View raw message