<br><br><div class="gmail_quote">On Thu, Jun 6, 2013 at 5:15 AM, Alexander Pyhalov <span dir="ltr"><<a href="mailto:alp@rsu.ru" target="_blank">alp@rsu.ru</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">

Ok, while building ncurses I encountered the following problem.<br>
<br>
It seems that a lot of projects define __XOPEN_SOURCE_EXTENDED macros.<br>
When it is tested in feature_tests.h the value of __XOPEN_SOURCE is ignored, and we have problems - _XPG5 is not defined for gcc 3.4 and _XPG5 and _XPG6 are not defined for gcc4.7.<br>
So, we miss some declarations in wchar.h/wchar_iso.h<br>
for example because of  the following macro<br>
#if (!defined(_XPG4) && !defined(_XPG4_2) || defined(_XPG5))<br>
<br>
and possibly receive the following error with gcc 4.7 from feature_test.h:<br>
<br>
if defined(_STDC_C99) && (defined(__XOPEN_OR_POSIX) && !defined(_XPG6))<br>
#error "Compiler or options invalid for pre-UNIX 03 X/Open applications \<br>
        and pre-2001 POSIX applications"<br>
<br>
It seems the following patch solves the problem.<br>
Is it a correct solution or I just don't see potential problems?<br>
Or, alternavely we could add && (_XOPEN_SOURCE - 0 < 500) condition to<br>
<br>
#elif (defined(_XOPEN_SOURCE) && _XOPEN_SOURCE_EXTENDED - 0 == 1)<br> 
<br></blockquote><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
This condition is used in the first #if branch.<br>
<br>
--- /export/home/build/srcs/<u></u>illumos-gate/usr/src/uts/<u></u>common/sys/feature_tests.h 2013-05-29 16:15:49.497379177 +0400<br>
+++ /usr/include/sys/feature_<u></u>tests.h    2013-06-06 12:57:43.994292322 +0400<br>
@@ -275,8 +275,9 @@<br>
 #define        _XPG4_2<br>
 #define        _XPG4<br>
 #define        _XPG3<br>
+#endif<br>
 /* X/Open CAE Specification, Issue 5 */<br>
-#elif  (_XOPEN_SOURCE - 0 == 500)<br>
+#if    (_XOPEN_SOURCE - 0 == 500)<br>
 #define        _XPG5<br>
 #define        _XPG4_2<br>
 #define        _XPG4<span class="HOEnZb"><font color="#888888"><br>
<br></font></span></blockquote><div><br>Alternatively, you could reverse the order of the conditional blocks. I'm not sure what the implications of defining _XPG3 as well as _XPG5 are offhand.<br><br>-Albert<br><br></div>

<blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class="HOEnZb"><font color="#888888">
-- <br>
Best regards,<br>
Alexander Pyhalov,<br>
system administrator of Computer Center of Southern Federal University<br>
<br>
______________________________<u></u>_________________<br>
oi-dev mailing list<br>
<a href="mailto:oi-dev@openindiana.org" target="_blank">oi-dev@openindiana.org</a><br>
<a href="http://openindiana.org/mailman/listinfo/oi-dev" target="_blank">http://openindiana.org/<u></u>mailman/listinfo/oi-dev</a><br>
</font></span></blockquote></div><br>