incubator-stdcxx-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Martin Sebor <se...@roguewave.com>
Subject Re: svn commit: r627618 - /stdcxx/trunk/etc/config/GNUmakefile.cfg
Date Thu, 21 Feb 2008 02:17:38 GMT
Thanks for creating the issue (STDCXX-737)! I think I've figured out
the problem with the original patch. Please check to make sure things
work as you expect with the change I'm suggesting in my comment on
the issue and if you're happy with it go ahead and commit the new
patch.

Martin

Farid Zaripov wrote:
>> -----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