mirror of
https://git.zap.org.au/git/trader.git
synced 2024-11-03 17:27:29 -05:00
Move redefinition of _XOPEN_SOURCE into its own Autoconf macro and header
This makes the main source code look a little cleaner, at the expense of background magic happening in the configure-generated config.h. But this magic was already happening for _GNU_SOURCE, __EXTENSIONS__ and the like. The only wrinkle is that newer versions of NcursesW cause ./configure to include "-D_XOPEN_SOURCE=600" as part of the compilation command line--on systems that support _XOPEN_SOURCE=700. The AC_DEFINE/AC_DEFINE_UNQUOTED macros automatically comment out any "#undef" lines in config.h, so the file lib/xopen_source.h works around this limitation. It is automatically included by config.h.
This commit is contained in:
parent
e578802ac6
commit
2032f6de8a
2
.gitattributes
vendored
2
.gitattributes
vendored
@ -6,6 +6,8 @@ Makefile.am ident
|
||||
/data/trader.svg ident
|
||||
/doc/trader.* ident
|
||||
/lib/obsolete-strings.c ident
|
||||
/lib/xopen_source.h ident
|
||||
/m4/xopen_source.m4 ident
|
||||
/po/LINGUAS ident
|
||||
/po/Makevars ident
|
||||
/po/POTFILES.in ident
|
||||
|
@ -34,4 +34,5 @@ SUBDIRS = lib src po data doc m4
|
||||
EXTRA_DIST = \
|
||||
build-aux/bootstrap \
|
||||
build-aux/msgfmt-desktop \
|
||||
lib/obsolete-strings.c
|
||||
lib/obsolete-strings.c \
|
||||
lib/xopen_source.h
|
||||
|
@ -62,6 +62,11 @@ AS_IF([test "x$ac_cv_header_monetary_h" != xyes], [
|
||||
AC_MSG_ERROR([requires <monetary.h> to exist in the C library])
|
||||
])
|
||||
|
||||
USE_LATEST_XOPEN_SOURCE
|
||||
AS_IF([test "x$x_cv_latest_xopen_source" = xunknown], [
|
||||
AC_MSG_ERROR([requires X/Open SUSv4/XPG7 or SUSv3/XPG6])
|
||||
])
|
||||
|
||||
AX_WITH_CURSES
|
||||
AS_IF([test "x$ax_cv_curses" != xyes || test "x$ax_cv_curses_color" != xyes], [
|
||||
AC_MSG_ERROR([requires an X/Open-compatible Curses library with colour])
|
||||
|
@ -9,6 +9,11 @@ This directory, lib, contains source code as generated by the Gnulib GNU
|
||||
Portability Library "gnulib-tool" script. See the project web site at
|
||||
https://www.gnu.org/software/gnulib/ for more information.
|
||||
|
||||
The following file is used by xopen_source.m4 to redefine _XOPEN_SOURCE
|
||||
appropriately. It is not part of the GNU Portability Library:
|
||||
|
||||
xopen_source.h
|
||||
|
||||
The following file provides translatable strings for obsolete versions of
|
||||
various libraries. It is not part of the GNU Portability Library:
|
||||
|
||||
|
44
lib/xopen_source.h
Normal file
44
lib/xopen_source.h
Normal file
@ -0,0 +1,44 @@
|
||||
/************************************************************************
|
||||
* *
|
||||
* Star Traders: A Game of Interstellar Trading *
|
||||
* Copyright (C) 1990-2018, John Zaitseff *
|
||||
* *
|
||||
************************************************************************/
|
||||
|
||||
/*
|
||||
Author: John Zaitseff <J.Zaitseff@zap.org.au>
|
||||
$Id$
|
||||
|
||||
This file, xopen_source.h, redefines _XOPEN_SOURCE to be the latest
|
||||
version that is supported by the operating system's C library. It is
|
||||
used by the Autoconf macro in m4/xopen_source.m4.
|
||||
|
||||
|
||||
This program is free software: you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation, either version 3 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see https://www.gnu.org/licenses/.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef included_XOPEN_SOURCE_H
|
||||
#define included_XOPEN_SOURCE_H
|
||||
|
||||
|
||||
#ifdef LATEST_XOPEN_SOURCE
|
||||
# if ! defined(_XOPEN_SOURCE) || _XOPEN_SOURCE < LATEST_XOPEN_SOURCE
|
||||
# undef _XOPEN_SOURCE
|
||||
# define _XOPEN_SOURCE LATEST_XOPEN_SOURCE
|
||||
# endif
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* included_XOPEN_SOURCE_H */
|
@ -35,4 +35,5 @@ EXTRA_DIST = \
|
||||
ax_prepend_flag.m4 \
|
||||
ax_require_defined.m4 \
|
||||
ax_with_curses.m4 \
|
||||
gnulib-cache.m4
|
||||
gnulib-cache.m4 \
|
||||
xopen_source.m4
|
||||
|
@ -7,6 +7,10 @@
|
||||
|
||||
This directory, m4, contains M4 macros used by Autoconf.
|
||||
|
||||
The following macros are custom-defined for Star Traders:
|
||||
|
||||
xopen_source.m4
|
||||
|
||||
The following macros are from the Autoconf Archive project, as detailed on
|
||||
that project's web site, https://www.gnu.org/software/autoconf-archive/:
|
||||
|
||||
@ -18,7 +22,7 @@ that project's web site, https://www.gnu.org/software/autoconf-archive/:
|
||||
ax_with_curses.m4
|
||||
|
||||
The following macro was generated by running the GNU Portability Library
|
||||
"gnulib-tool" with appropriate command line options, as detailed on that
|
||||
"gnulib-tool" with appropriate command line options, as detailed on that
|
||||
project's web site, https://www.gnu.org/software/gnulib/:
|
||||
|
||||
gnulib-cache.m4
|
||||
|
64
m4/xopen_source.m4
Normal file
64
m4/xopen_source.m4
Normal file
@ -0,0 +1,64 @@
|
||||
#########################################################################
|
||||
# #
|
||||
# Star Traders: A Game of Interstellar Trading #
|
||||
# Copyright (C) 1990-2018, John Zaitseff #
|
||||
# #
|
||||
#########################################################################
|
||||
|
||||
# Author: John Zaitseff <J.Zaitseff@zap.org.au>
|
||||
# $Id$
|
||||
#
|
||||
# This file contains the macro USE_LATEST_XOPEN_SOURCE to determine the
|
||||
# latest version of _XOPEN_SOURCE supported by the C library. It does
|
||||
# this by compiling code with various values of that symbol. Once a
|
||||
# particular value compiles without error, it redefines _XOPEN_SOURCE to
|
||||
# that value using the auxiliary file <lib/xopen_source.h> and sets
|
||||
# $x_cv_latest_xopen_source to one of the following values:
|
||||
#
|
||||
# 700 - _XOPEN_SOURCE=700 (for SUSv4 / XPG7) was accepted
|
||||
# 600 - _XOPEN_SOURCE=600 (for SUSv3 / XPG6) was accepted
|
||||
# unknown - _XOPEN_SOURCE set to above values failed to compile
|
||||
#
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by the
|
||||
# Free Software Foundation, either version 3 of the License, or (at your
|
||||
# option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see https://www.gnu.org/licenses/.
|
||||
|
||||
AC_DEFUN([_CHECK_XOPEN_SOURCE], [dnl
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
|
||||
/* Test for $2 */
|
||||
@%:@define _XOPEN_SOURCE $1
|
||||
@%:@include <stdio.h>
|
||||
])], [$3], [$4])
|
||||
])dnl
|
||||
|
||||
AC_DEFUN([USE_LATEST_XOPEN_SOURCE], [dnl
|
||||
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
|
||||
AH_BOTTOM([
|
||||
/* Redefine _XOPEN_SOURCE as required */
|
||||
@%:@include <lib/xopen_source.h>
|
||||
])
|
||||
AC_CACHE_CHECK([the latest supported version of _XOPEN_SOURCE],
|
||||
[x_cv_latest_xopen_source], [
|
||||
x_cv_latest_xopen_source=unknown
|
||||
_CHECK_XOPEN_SOURCE([700], [SUSv4 / XPG7], [
|
||||
x_cv_latest_xopen_source=700
|
||||
], [_CHECK_XOPEN_SOURCE([600], [SUSv3 / XPG6], [
|
||||
x_cv_latest_xopen_source=600
|
||||
])])
|
||||
])
|
||||
AS_IF([test "x$x_cv_latest_xopen_source" != xunknown], [dnl
|
||||
AC_DEFINE_UNQUOTED([LATEST_XOPEN_SOURCE],
|
||||
[$x_cv_latest_xopen_source],
|
||||
[Define to the latest version of _XOPEN_SOURCE that is supported.])
|
||||
])
|
||||
])dnl USE_LATEST_XOPEN_SOURCE
|
12
src/system.h
12
src/system.h
@ -43,14 +43,10 @@
|
||||
* System header files *
|
||||
************************************************************************/
|
||||
|
||||
#if ! defined(_XOPEN_SOURCE) || _XOPEN_SOURCE < 700
|
||||
# undef _XOPEN_SOURCE
|
||||
# if defined(__sun) && defined(__SVR4)
|
||||
# define _XOPEN_SOURCE 600 // Use SUSv3 on SunOS 5.x
|
||||
# else
|
||||
# define _XOPEN_SOURCE 700 // Use SUSv4 everywhere else
|
||||
# endif
|
||||
#endif
|
||||
/* Note that the configure-generated "config.h" defines feature test
|
||||
macros as required by the compiler or operating system C library. In
|
||||
particular, it defines _XOPEN_SOURCE, _GNU_SOURCE, __EXTENSIONS__ and
|
||||
similar symbols to appropriate values. */
|
||||
|
||||
|
||||
// Headers defined by ISO/IEC 9899:1999 (C99)
|
||||
|
Loading…
Reference in New Issue
Block a user