forked from pool/autoconf
This commit is contained in:
parent
59ac59e5ce
commit
1424cffa4f
250
ac-c-bigendian.diff
Normal file
250
ac-c-bigendian.diff
Normal file
@ -0,0 +1,250 @@
|
||||
--- doc/autoconf.texi
|
||||
+++ doc/autoconf.texi
|
||||
@@ -6739,7 +6739,7 @@ New programs need not use this macro.
|
||||
|
||||
@anchor{AC_C_BIGENDIAN}
|
||||
@defmac AC_C_BIGENDIAN (@ovar{action-if-true}, @ovar{action-if-false}, @
|
||||
- @ovar{action-if-unknown}, @ovar{action-if-universal})
|
||||
+ @ovar{action-if-unknown})
|
||||
@acindex{C_BIGENDIAN}
|
||||
@cvindex WORDS_BIGENDIAN
|
||||
@cindex Endianness
|
||||
@@ -6753,26 +6753,11 @@ system header files. When cross-compili
|
||||
grep'ed for some magic values. @var{action-if-unknown} is executed if
|
||||
the latter case fails to determine the byte sex of the host system.
|
||||
|
||||
-In some cases a single run of a compiler can generate code for multiple
|
||||
-architectures. This can happen, for example, when generating Mac OS X
|
||||
-universal binary files, which work on both PowerPC and Intel
|
||||
-architectures. In this case, the different variants might be for
|
||||
-different architectures whose endiannesses differ. If
|
||||
-@command{configure} detects this, it executes @var{action-if-universal}
|
||||
-instead of @var{action-if-unknown}.
|
||||
-
|
||||
The default for @var{action-if-true} is to define
|
||||
@samp{WORDS_BIGENDIAN}. The default for @var{action-if-false} is to do
|
||||
-nothing. The default for @var{action-if-unknown} is to
|
||||
-abort configure and tell the installer how to bypass this test.
|
||||
-And finally, the default for @var{action-if-universal} is to define
|
||||
-@samp{WORDS_BIGENDIAN} or not, depending on the architecture that the
|
||||
-code is being generated for.
|
||||
-
|
||||
-If you use this macro without specifying @var{action-if-universal}, you
|
||||
-should also use @code{AC_CONFIG_HEADERS}; otherwise
|
||||
-@samp{WORDS_BIGENDIAN} may be set incorrectly for Mac OS X universal
|
||||
-binary files.
|
||||
+nothing. And finally, the default for @var{action-if-unknown} is to
|
||||
+abort configure and tell the installer which variable he should preset
|
||||
+to bypass this test.
|
||||
@end defmac
|
||||
|
||||
@anchor{AC_C_CONST}
|
||||
--- lib/autoconf/c.m4
|
||||
+++ lib/autoconf/c.m4
|
||||
@@ -1393,140 +1393,74 @@ fi
|
||||
])# AC_C_CHAR_UNSIGNED
|
||||
|
||||
|
||||
-# AC_C_BIGENDIAN ([ACTION-IF-TRUE], [ACTION-IF-FALSE], [ACTION-IF-UNKNOWN],
|
||||
-# [ACTION-IF-UNIVERSAL])
|
||||
+# AC_C_BIGENDIAN ([ACTION-IF-TRUE], [ACTION-IF-FALSE], [ACTION-IF-UNKNOWN])
|
||||
# -------------------------------------------------------------------------
|
||||
AC_DEFUN([AC_C_BIGENDIAN],
|
||||
-[AH_VERBATIM([WORDS_BIGENDIAN],
|
||||
-[/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
|
||||
- significant byte first (like Motorola and SPARC, unlike Intel and VAX). */
|
||||
-#if defined __BIG_ENDIAN__
|
||||
-# define WORDS_BIGENDIAN 1
|
||||
-#elif ! defined __LITTLE_ENDIAN__
|
||||
-# undef WORDS_BIGENDIAN
|
||||
-#endif])dnl
|
||||
- AC_CACHE_CHECK([whether byte ordering is bigendian], [ac_cv_c_bigendian],
|
||||
- [ac_cv_c_bigendian=unknown
|
||||
- m4_ifval(m4_ifdef([AH_HEADER], 1)[$4],
|
||||
- [# See if __BIG_ENDIAN__ or __LITTLE_ENDIAN__ is defined.
|
||||
- AC_COMPILE_IFELSE(
|
||||
- [AC_LANG_SOURCE(
|
||||
- [[#if ! (defined __BIG_ENDIAN__ || defined __LITTLE_ENDIAN__)
|
||||
- neither is defined;
|
||||
- #endif
|
||||
- typedef int dummy;
|
||||
- ]])],
|
||||
- [ac_cv_c_bigendian=universal])],
|
||||
- [AC_DIAGNOSE([obsolete], [AC_C_BIGENDIAN suggests AC_CONFIG_HEADERS])])
|
||||
- if test $ac_cv_c_bigendian = unknown; then
|
||||
- # See if sys/param.h defines the BYTE_ORDER macro.
|
||||
- AC_COMPILE_IFELSE(
|
||||
- [AC_LANG_PROGRAM(
|
||||
- [[#include <sys/types.h>
|
||||
- #include <sys/param.h>
|
||||
- ]],
|
||||
- [[#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \
|
||||
- && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \
|
||||
- && LITTLE_ENDIAN)
|
||||
- bogus endian macros
|
||||
- #endif
|
||||
- ]])],
|
||||
- [# It does; now see whether it defined to BIG_ENDIAN or not.
|
||||
- AC_COMPILE_IFELSE(
|
||||
- [AC_LANG_PROGRAM(
|
||||
- [[#include <sys/types.h>
|
||||
- #include <sys/param.h>
|
||||
- ]],
|
||||
- [[#if BYTE_ORDER != BIG_ENDIAN
|
||||
- not big endian
|
||||
- #endif
|
||||
- ]])],
|
||||
- [ac_cv_c_bigendian=yes],
|
||||
- [ac_cv_c_bigendian=no])])
|
||||
- fi
|
||||
- if test $ac_cv_c_bigendian = unknown; then
|
||||
- # See if <limits.h> defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris).
|
||||
- AC_COMPILE_IFELSE(
|
||||
- [AC_LANG_PROGRAM(
|
||||
- [[#include <limits.h>
|
||||
- ]],
|
||||
- [[#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN)
|
||||
- bogus endian macros
|
||||
- #endif
|
||||
- ]])],
|
||||
- [# It does; now see whether it defined to _BIG_ENDIAN or not.
|
||||
- AC_COMPILE_IFELSE(
|
||||
- [AC_LANG_PROGRAM(
|
||||
- [[#include <limits.h>
|
||||
- ]],
|
||||
- [[#ifndef _BIG_ENDIAN
|
||||
- not big endian
|
||||
- #endif
|
||||
- ]])],
|
||||
- [ac_cv_c_bigendian=yes],
|
||||
- [ac_cv_c_bigendian=no])])
|
||||
- fi
|
||||
- if test $ac_cv_c_bigendian = unknown; then
|
||||
- # Compile a test program.
|
||||
- AC_RUN_IFELSE(
|
||||
- [AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT],
|
||||
- [[
|
||||
- /* Are we little or big endian? From Harbison&Steele. */
|
||||
- union
|
||||
- {
|
||||
- long int l;
|
||||
- char c[sizeof (long int)];
|
||||
- } u;
|
||||
- u.l = 1;
|
||||
- return u.c[sizeof (long int) - 1] == 1;
|
||||
- ]])],
|
||||
- [ac_cv_c_bigendian=no],
|
||||
- [ac_cv_c_bigendian=yes],
|
||||
- [# Try to guess by grepping values from an object file.
|
||||
- AC_COMPILE_IFELSE(
|
||||
- [AC_LANG_PROGRAM(
|
||||
- [[short int ascii_mm[] =
|
||||
- { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
|
||||
- short int ascii_ii[] =
|
||||
- { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
|
||||
- int use_ascii (int i) {
|
||||
- return ascii_mm[i] + ascii_ii[i];
|
||||
- }
|
||||
- short int ebcdic_ii[] =
|
||||
- { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
|
||||
- short int ebcdic_mm[] =
|
||||
- { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
|
||||
- int use_ebcdic (int i) {
|
||||
- return ebcdic_mm[i] + ebcdic_ii[i];
|
||||
- }
|
||||
- extern int foo;
|
||||
- ]],
|
||||
- [[return use_ascii (foo) == use_ebcdic (foo);]])],
|
||||
- [if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then
|
||||
- ac_cv_c_bigendian=yes
|
||||
- fi
|
||||
- if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then
|
||||
- if test "$ac_cv_c_bigendian" = unknown; then
|
||||
- ac_cv_c_bigendian=no
|
||||
- else
|
||||
- # finding both strings is unlikely to happen, but who knows?
|
||||
- ac_cv_c_bigendian=unknown
|
||||
- fi
|
||||
- fi])])
|
||||
- fi])
|
||||
- case $ac_cv_c_bigendian in #(
|
||||
- yes)
|
||||
- m4_default([$1],
|
||||
- [AC_DEFINE([WORDS_BIGENDIAN], 1)]);; #(
|
||||
- no)
|
||||
- $2 ;; #(
|
||||
- universal)
|
||||
- $4 ;; #(
|
||||
- *)
|
||||
- m4_default([$3],
|
||||
- [AC_MSG_ERROR([unknown endianness
|
||||
- presetting ac_cv_c_bigendian=no (or yes) will help])]) ;;
|
||||
- esac
|
||||
+[AC_CACHE_CHECK(whether byte ordering is bigendian, ac_cv_c_bigendian,
|
||||
+[# See if sys/param.h defines the BYTE_ORDER macro.
|
||||
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <sys/types.h>
|
||||
+#include <sys/param.h>
|
||||
+],
|
||||
+[#if ! (defined BYTE_ORDER && defined BIG_ENDIAN && defined LITTLE_ENDIAN \
|
||||
+ && BYTE_ORDER && BIG_ENDIAN && LITTLE_ENDIAN)
|
||||
+ bogus endian macros
|
||||
+#endif
|
||||
+])],
|
||||
+[# It does; now see whether it defined to BIG_ENDIAN or not.
|
||||
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <sys/types.h>
|
||||
+#include <sys/param.h>
|
||||
+], [#if BYTE_ORDER != BIG_ENDIAN
|
||||
+ not big endian
|
||||
+#endif
|
||||
+])], [ac_cv_c_bigendian=yes], [ac_cv_c_bigendian=no])],
|
||||
+[# It does not; compile a test program.
|
||||
+AC_RUN_IFELSE(
|
||||
+[AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT], [[
|
||||
+ /* Are we little or big endian? From Harbison&Steele. */
|
||||
+ union
|
||||
+ {
|
||||
+ long int l;
|
||||
+ char c[sizeof (long int)];
|
||||
+ } u;
|
||||
+ u.l = 1;
|
||||
+ return u.c[sizeof (long int) - 1] == 1;
|
||||
+]])],
|
||||
+ [ac_cv_c_bigendian=no],
|
||||
+ [ac_cv_c_bigendian=yes],
|
||||
+[# try to guess the endianness by grepping values into an object file
|
||||
+ ac_cv_c_bigendian=unknown
|
||||
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
|
||||
+[[short int ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
|
||||
+short int ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
|
||||
+void _ascii () { char *s = (char *) ascii_mm; s = (char *) ascii_ii; }
|
||||
+short int ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
|
||||
+short int ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
|
||||
+void _ebcdic () { char *s = (char *) ebcdic_mm; s = (char *) ebcdic_ii; }]],
|
||||
+[[ _ascii (); _ebcdic (); ]])],
|
||||
+[if grep BIGenDianSyS conftest.$ac_objext >/dev/null ; then
|
||||
+ ac_cv_c_bigendian=yes
|
||||
+fi
|
||||
+if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then
|
||||
+ if test "$ac_cv_c_bigendian" = unknown; then
|
||||
+ ac_cv_c_bigendian=no
|
||||
+ else
|
||||
+ # finding both strings is unlikely to happen, but who knows?
|
||||
+ ac_cv_c_bigendian=unknown
|
||||
+ fi
|
||||
+fi])])])])
|
||||
+case $ac_cv_c_bigendian in
|
||||
+ yes)
|
||||
+ m4_default([$1],
|
||||
+ [AC_DEFINE([WORDS_BIGENDIAN], 1,
|
||||
+ [Define to 1 if your processor stores words with the most significant
|
||||
+ byte first (like Motorola and SPARC, unlike Intel and VAX).])]) ;;
|
||||
+ no)
|
||||
+ $2 ;;
|
||||
+ *)
|
||||
+ m4_default([$3],
|
||||
+ [AC_MSG_ERROR([unknown endianness
|
||||
+presetting ac_cv_c_bigendian=no (or yes) will help])]) ;;
|
||||
+esac
|
||||
])# AC_C_BIGENDIAN
|
||||
|
||||
|
@ -1,3 +1,9 @@
|
||||
-------------------------------------------------------------------
|
||||
Thu Jul 17 16:11:10 CEST 2008 - schwab@suse.de
|
||||
|
||||
- Revert AC_C_BIGENDIAN change for now.
|
||||
- Fix config header substitution.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Apr 9 10:32:41 CEST 2008 - schwab@suse.de
|
||||
|
||||
|
@ -16,7 +16,7 @@ License: GPL v2 or later
|
||||
Group: Productivity/Editors/Emacs
|
||||
AutoReqProv: on
|
||||
Version: 2.62
|
||||
Release: 3
|
||||
Release: 9
|
||||
Summary: Emacs mode for editing GNU Autoconf scripts
|
||||
Url: http://www.gnu.org/software/autoconf
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||
@ -70,6 +70,9 @@ rm -rf $RPM_BUILD_ROOT
|
||||
%{site_lisp}/*.elc
|
||||
|
||||
%changelog
|
||||
* Thu Jul 17 2008 schwab@suse.de
|
||||
- Revert AC_C_BIGENDIAN change for now.
|
||||
- Fix config header substitution.
|
||||
* Wed Apr 09 2008 schwab@suse.de
|
||||
- Update to autoconf 2.62.
|
||||
<http://git.savannah.gnu.org/gitweb/?p=autoconf.git;a=blobdiff;f=NEWS;h=ef008867d725a89b743b20eeba97bec09e906fd6;hp=2a49e0feb1b4101bb5252fdd137992ec49f468fa>
|
||||
|
@ -1,3 +1,9 @@
|
||||
-------------------------------------------------------------------
|
||||
Thu Jul 17 16:11:10 CEST 2008 - schwab@suse.de
|
||||
|
||||
- Revert AC_C_BIGENDIAN change for now.
|
||||
- Fix config header substitution.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Apr 9 10:32:41 CEST 2008 - schwab@suse.de
|
||||
|
||||
|
@ -19,10 +19,12 @@ AutoReqProv: on
|
||||
Requires: m4 >= %(rpm -q --qf=%%{VERSION} m4)
|
||||
PreReq: %{install_info_prereq}
|
||||
Version: 2.62
|
||||
Release: 3
|
||||
Release: 6
|
||||
Summary: A GNU Tool for Automatically Configuring Source Code
|
||||
Source: autoconf-%{version}.tar.bz2
|
||||
Patch: autoreconf-ltdl.diff
|
||||
Patch1: output-headers-prepare.diff
|
||||
Patch2: ac-c-bigendian.diff
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||
|
||||
%description
|
||||
@ -48,6 +50,8 @@ Authors:
|
||||
%prep
|
||||
%setup -q
|
||||
%patch
|
||||
%patch1 -p1
|
||||
%patch2
|
||||
|
||||
%build
|
||||
%{suse_update_config -f config}
|
||||
@ -80,6 +84,9 @@ rm -rf $RPM_BUILD_ROOT
|
||||
%doc %{_mandir}/man1/*.gz
|
||||
|
||||
%changelog
|
||||
* Thu Jul 17 2008 schwab@suse.de
|
||||
- Revert AC_C_BIGENDIAN change for now.
|
||||
- Fix config header substitution.
|
||||
* Wed Apr 09 2008 schwab@suse.de
|
||||
- Update to autoconf 2.62.
|
||||
<http://git.savannah.gnu.org/gitweb/?p=autoconf.git;a=blobdiff;f=NEWS;h=ef008867d725a89b743b20eeba97bec09e906fd6;hp=2a49e0feb1b4101bb5252fdd137992ec49f468fa>
|
||||
|
62
output-headers-prepare.diff
Normal file
62
output-headers-prepare.diff
Normal file
@ -0,0 +1,62 @@
|
||||
commit c87512b5ae11de7a98ccc8c3e42d5df6f5039fe0
|
||||
Author: Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
|
||||
Date: Tue Jun 17 08:42:14 2008 +0200
|
||||
|
||||
Fix '#undef variable /* comment */' transform in config headers.
|
||||
|
||||
* lib/autoconf/status.m4 (_AC_OUTPUT_HEADERS_PREPARE): For
|
||||
undefined preprocessor macros that are followed by a comment
|
||||
in the header template, do not create nested comments in the
|
||||
output.
|
||||
* tests/torture.at (@%:@define header templates): Extend test.
|
||||
* NEWS: Update.
|
||||
Report by Karsten Hopp <karsten@redhat.com>.
|
||||
|
||||
Signed-off-by: Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
|
||||
|
||||
diff --git a/lib/autoconf/status.m4 b/lib/autoconf/status.m4
|
||||
index 50be77b..d5ed323 100644
|
||||
--- a/lib/autoconf/status.m4
|
||||
+++ b/lib/autoconf/status.m4
|
||||
@@ -832,9 +832,9 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
||||
}
|
||||
split(mac1, mac2, "(") #)
|
||||
macro = mac2[1]
|
||||
+ prefix = substr(line, 1, index(line, defundef) - 1)
|
||||
if (D_is_set[macro]) {
|
||||
# Preserve the white space surrounding the "#".
|
||||
- prefix = substr(line, 1, index(line, defundef) - 1)
|
||||
print prefix "define", macro P[macro] D[macro]
|
||||
next
|
||||
} else {
|
||||
@@ -842,7 +842,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
||||
# in the case of _POSIX_SOURCE, which is predefined and required
|
||||
# on some systems where configure will not decide to define it.
|
||||
if (defundef == "undef") {
|
||||
- print "/*", line, "*/"
|
||||
+ print "/*", prefix defundef, macro, "*/"
|
||||
next
|
||||
}
|
||||
}
|
||||
diff --git a/tests/torture.at b/tests/torture.at
|
||||
index c37daba..92f8d5b 100644
|
||||
--- a/tests/torture.at
|
||||
+++ b/tests/torture.at
|
||||
@@ -497,6 +497,8 @@ AT_DATA([config.hin],
|
||||
#define str(define) \
|
||||
#define
|
||||
#define stringify(arg) str(arg)
|
||||
+#undef aaa /* with comments */
|
||||
+#undef not_substed /* with comments */
|
||||
]])
|
||||
|
||||
AT_CHECK_AUTOCONF
|
||||
@@ -527,6 +529,8 @@ ARG1
|
||||
#define str(define) \
|
||||
#define
|
||||
#define stringify(arg) str(arg)
|
||||
+#define aaa AAA
|
||||
+/* #undef not_substed */
|
||||
]])
|
||||
AT_CHECK([cat config.h], 0, expout)
|
||||
|
Loading…
Reference in New Issue
Block a user