You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@stdcxx.apache.org by Eric Lemings <Er...@roguewave.com> on 2008/05/06 17:25:19 UTC

terminate.h config test header

 
Try this:

    cd $SRCDIR/etc/config/src && grep -2 'terminate\.h' *

Note that every #include for this header is wrapped by the same #if
directives.  Wouldn't it make sense to move all of these nested if
directives into the header itself and just always include the header?

For example:

	file etc/config/src/terminate.h:
 	...
	#include "config.h"

	#ifndef _RWSTD_NO_HONOR_STD
	#  ifdef _RWSTD_NO_STD_TERMINATE

	namespace std {

	void terminate ()
	{
	    ...
	}
 
	}   // namespace std

	#  endif   // _RWSTD_NO_STD_TERMINATE
	#endif   // _RWSTD_NO_HONOR_STD

Just a thought.

Brad.

Re: terminate.h config test header

Posted by Martin Sebor <se...@roguewave.com>.
Travis Vitek wrote:
>  
> 
>> Eric Lemings wrote:
>>
>> Try this:
>>
>>    cd $SRCDIR/etc/config/src && grep -2 'terminate\.h' *
>>
>> Note that every #include for this header is wrapped by the same #if
>> directives.  Wouldn't it make sense to move all of these nested if
>> directives into the header itself and just always include the header?
>>
>> For example:
>>
>> 	file etc/config/src/terminate.h:
>> 	...
>> 	#include "config.h"
>>
>> 	#ifndef _RWSTD_NO_HONOR_STD
>> 	#  ifdef _RWSTD_NO_STD_TERMINATE
>>
>> 	namespace std {
>>
>> 	void terminate ()
>> 	{
>> 	    ...
>> 	}
>>
>> 	}   // namespace std
>>
>> 	#  endif   // _RWSTD_NO_STD_TERMINATE
>> 	#endif   // _RWSTD_NO_HONOR_STD
>>
>> Just a thought.
>>
>> Brad.
>>
> 
> Normally this would be the right thing to do, but the build system
> actually uses the #ifndef you see there to establish a dependency on
> other config tests (see GNUmakefile.cfg). In the above example, this
> test depends on the config tests HONOR_STD.cpp and STD_TERMINATE.cpp
> being run before this particular test is compiled.

Right. See http://issues.apache.org/jira/browse/STDCXX-674

Martin

> 
> If this were to change it would require a small change to the build
> infrastructure. I'd prefer to see a list of dependencies written as
> comments near the top of the file instead, but that is just me.


RE: terminate.h config test header

Posted by Travis Vitek <Tr...@roguewave.com>.
 

>Eric Lemings wrote:
> 
>Try this:
>
>    cd $SRCDIR/etc/config/src && grep -2 'terminate\.h' *
>
>Note that every #include for this header is wrapped by the same #if
>directives.  Wouldn't it make sense to move all of these nested if
>directives into the header itself and just always include the header?
>
>For example:
>
>	file etc/config/src/terminate.h:
> 	...
>	#include "config.h"
>
>	#ifndef _RWSTD_NO_HONOR_STD
>	#  ifdef _RWSTD_NO_STD_TERMINATE
>
>	namespace std {
>
>	void terminate ()
>	{
>	    ...
>	}
> 
>	}   // namespace std
>
>	#  endif   // _RWSTD_NO_STD_TERMINATE
>	#endif   // _RWSTD_NO_HONOR_STD
>
>Just a thought.
>
>Brad.
>

Normally this would be the right thing to do, but the build system
actually uses the #ifndef you see there to establish a dependency on
other config tests (see GNUmakefile.cfg). In the above example, this
test depends on the config tests HONOR_STD.cpp and STD_TERMINATE.cpp
being run before this particular test is compiled.

If this were to change it would require a small change to the build
infrastructure. I'd prefer to see a list of dependencies written as
comments near the top of the file instead, but that is just me.