git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [RFC/PATCH 1/2] Teach Solaris that _XOPEN_SOURCE=600 really menas XPG6

From
Tomas Carnecky <tom@dbservice.com>
Date
Jun 11, 2009, 15:06 UTC
Message-ID
<B96700A1-EC8C-4DDE-A158-CE298FCCA09F@dbservice.com>
In-Reply-To
<1243106697-6424-2-git-send-email-gitster@pobox.com>
On May 23, 2009, at 9:24 PM, Junio C Hamano wrote:
Show 64 quoted lines
> In git-compat-util.h, we do
>
>    #define _XOPEN_SOURCE 600
>    #define _XOPEN_SOURCE_EXTENDED 1
>
> unless we are on BSD or SCO.
>
> On OpenSolaris (200811), /usr/include/sys/feature_tests.h has this  
> nice
> table:
>
>    Feature Test Macro				     Specification
>    ------------------------------------------------  -------------
>    _XOPEN_SOURCE                                         XPG3
>    _XOPEN_SOURCE && _XOPEN_VERSION = 4                   XPG4
>    _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED = 1           XPG4v2
>    _XOPEN_SOURCE = 500                                   XPG5
>    _XOPEN_SOURCE = 600  (or POSIX_C_SOURCE=200112L)      XPG6
>
> Later in the same header, compilation with -c99 is made to fail if  
> _XPG6 is
> not set, like this:
>
>    #if defined(_STDC_C99) && (defined(__XOPEN_OR_POSIX) && ! 
> defined(_XPG6))
>    #error "Compiler or options invalid for pre-UNIX 03 X/Open  
> applications \
>            and pre-2001 POSIX applications"
>    #elif ...
>
> The problem is that they check things in an order that is  
> inconvenient for
> us.  When they see _XOPEN_SOURCE_EXTENDED, they declare that we are  
> XPG4v2,
> regardless of the value of _XOPEN_SOURCE.
>
> To work around this problem, do not define _XOPEN_SOURCE_EXTENDED on
> Sun's.
>
> Signed-off-by: Junio C Hamano <gitster@pobox.com>
> ---
> git-compat-util.h |    2 ++
> 1 files changed, 2 insertions(+), 0 deletions(-)
>
> diff --git a/git-compat-util.h b/git-compat-util.h
> index c7cf2d5..4236647 100644
> --- a/git-compat-util.h
> +++ b/git-compat-util.h
> @@ -41,8 +41,10 @@
>
> #if !defined(__APPLE__) && !defined(__FreeBSD__)  && ! 
> defined(__USLC__) && !defined(_M_UNIX)
> #define _XOPEN_SOURCE 600 /* glibc2 and AIX 5.3L need 500, OpenBSD  
> needs 600 for S_ISLNK() */
> +#ifndef __sun__
> #define _XOPEN_SOURCE_EXTENDED 1 /* AIX 5.3L needs this */
> #endif
> +#endif
> #define _ALL_SOURCE 1
> #define _GNU_SOURCE 1
> #define _BSD_SOURCE 1
> -- 
> 1.6.3.1.145.gb74d77
>

Until this commit a simple 'make prefix=...' worked just fine. Now I have to explicitly add '-std=c99' to the gcc commandline. Is there a reason why the makefile doesn't add this switch automatically?

tom
Previous: Junio C HamanoNext: Brandon Casey
Message 9 of 15 in “OpenSolaris 2008.11 portability fixes”
  1. 0/2 OpenSolaris 2008.11 portability fixesJunio C Hamano, May 23, 2009
  2. 1/2 Teach Solaris that _XOPEN_SOURCE=600 really menas XPG6Junio C Hamano, May 23, 2009
  3. 2/2 OpenSolaris 200811 (SunOS 5.11) does not want OLD_ICONVJunio C Hamano, May 23, 2009
  4. Brandon CaseyMay 28, 2009
  5. Jeff KingMay 28, 2009
  6. Brandon CaseyMay 28, 2009
  7. Jeff KingMay 28, 2009
  8. Junio C HamanoMay 28, 2009
  9. Tomas CarneckyJun 11, 2009
  10. Brandon CaseyJun 11, 2009
  11. Tomas CarneckyJun 11, 2009
  12. Brandon CaseyJun 11, 2009
  13. Tomas CarneckyJun 11, 2009
  14. Brandon CaseyJun 11, 2009
  15. Junio C HamanoJun 11, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.