From 03feec0e60a84cbe1c1f77137eb23b2945fd2c44 Mon Sep 17 00:00:00 2001 From: Ken Raeburn Date: Thu, 6 May 2004 01:33:56 +0000 Subject: [PATCH] Since the AES code builds, and doesn't do any configure-time byte order checks that I noticed, something similar ought to work for the DB code. This is the first cut; nightly testing builds should tell us if it's sufficient on most of the platforms we work on. * include/db-int.h: Include stdlib.h, and endian.h if available. (LITTLE_ENDIAN, BIG_ENDIAN, BYTE_ORDER): If not defined, and if versions with one or two leading underscores are defined, define the no-underscore form in terms of the with-underscore one. (DB_BYTE_ORDER): Define by checking LITTLE_ENDIAN, BIG_ENDIAN, and BYTE_ORDER; report an error if that doesn't work. Don't check WORDS_BIGENDIAN. * Makefile.in (all-prerecurse): Make sure headers generated by config.status are up to date. (include/config.h, $(srcdir)/include/config.h.in, include/db-config.h): New rules. * configure.in: Don't check byte order here. Check for endian.h. ticket: 2551 status: open git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@16317 dc483132-0cff-0310-8789-dd5450dbe970 --- src/util/db2/ChangeLog | 8 ++++++ src/util/db2/Makefile.in | 8 ++++++ src/util/db2/configure.in | 3 ++- src/util/db2/include/ChangeLog | 10 +++++++ src/util/db2/include/db-int.h | 49 ++++++++++++++++++++++++++++++++++ 5 files changed, 77 insertions(+), 1 deletion(-) diff --git a/src/util/db2/ChangeLog b/src/util/db2/ChangeLog index df2504914..0591d6cd6 100644 --- a/src/util/db2/ChangeLog +++ b/src/util/db2/ChangeLog @@ -1,3 +1,11 @@ +2004-05-05 Ken Raeburn + + * Makefile.in (all-prerecurse): Make sure headers generated by + config.status are up to date. + (include/config.h, $(srcdir)/include/config.h.in, + include/db-config.h): New rules. + * configure.in: Don't check byte order here. Check for endian.h. + 2004-04-22 Ken Raeburn * libdb.exports: New file. diff --git a/src/util/db2/Makefile.in b/src/util/db2/Makefile.in index 6ca755097..39dc7c216 100644 --- a/src/util/db2/Makefile.in +++ b/src/util/db2/Makefile.in @@ -16,6 +16,7 @@ HDRDIR=$(BUILDTOP)/include HDRS = $(HDRDIR)/db.h $(HDRDIR)/db-config.h $(HDRDIR)/db-ndbm.h all-unix:: all-liblinks includes +all-prerecurse: include/config.h include/db-config.h clean-unix:: clean-liblinks clean-libs clean-includes includes:: $(HDRS) @@ -27,6 +28,13 @@ $(HDRDIR)/db-config.h: include/db-config.h $(HDRDIR)/db-ndbm.h: $(srcdir)/include/db-ndbm.h $(CP) $(srcdir)/include/db-ndbm.h $@ +include/config.h: $(srcdir)/include/config.h.in + cd $(thisconfigdir) && $(SHELL) config.status +$(srcdir)/include/config.h.in: @MAINT@ $(srcdir)/configure.in $(SRCTOP)/aclocal.m4 + cd $(srcdir) && ($(AUTOHEADER) --include=$(CONFIG_RELTOPDIR) $(AUTOHEADERFLAGS) || $(AUTOHEADER) --localdir=$(CONFIG_RELTOPDIR) $(AUTOHEADERFLAGS)) +include/db-config.h: $(srcdir)/include/db-config.h.in + cd $(thisconfigdir) && $(SHELL) config.status + clean-includes:: $(RM) $(HDRS) # @lib_frag@ diff --git a/src/util/db2/configure.in b/src/util/db2/configure.in index 6fe60397a..b64a126d2 100644 --- a/src/util/db2/configure.in +++ b/src/util/db2/configure.in @@ -63,7 +63,8 @@ AC_COMPILE_TYPE(u_int32_t, unsigned int) dnl checks for structures dnl checks for compiler characteristics -AC_C_BIGENDIAN +dnl AC_C_BIGENDIAN +AC_CHECK_HEADERS(endian.h) AC_C_CONST AC_CHECK_SIZEOF(int) diff --git a/src/util/db2/include/ChangeLog b/src/util/db2/include/ChangeLog index eacdbc8b7..3ca9befe5 100644 --- a/src/util/db2/include/ChangeLog +++ b/src/util/db2/include/ChangeLog @@ -1,3 +1,13 @@ +2004-05-05 Ken Raeburn + + * db-int.h: Include stdlib.h, and endian.h if available. + (LITTLE_ENDIAN, BIG_ENDIAN, BYTE_ORDER): If not defined, and if + versions with one or two leading underscores are defined, define + the no-underscore form in terms of the with-underscore one. + (DB_BYTE_ORDER): Define by checking LITTLE_ENDIAN, BIG_ENDIAN, and + BYTE_ORDER; report an error if that doesn't work. Don't check + WORDS_BIGENDIAN. + 2002-09-05 Ken Raeburn * db-int.h: If stdint.h or inttypes.h are found, include them. diff --git a/src/util/db2/include/db-int.h b/src/util/db2/include/db-int.h index 2c21fb207..ddc2d4764 100644 --- a/src/util/db2/include/db-int.h +++ b/src/util/db2/include/db-int.h @@ -44,11 +44,60 @@ #define DB_LITTLE_ENDIAN 1234 #define DB_BIG_ENDIAN 4321 +#include +#ifdef HAVE_ENDIAN_H +# include +#endif +/* Handle both BIG and LITTLE defined and BYTE_ORDER matches one, or + just one defined; both with and without leading underscores. + + Ignore "PDP endian" machines, this code doesn't support them + anyways. */ +#if !defined(LITTLE_ENDIAN) && !defined(BIG_ENDIAN) && !defined(BYTE_ORDER) +# ifdef _LITTLE_ENDIAN +# define LITTLE_ENDIAN _LITTLE_ENDIAN +# endif +# ifdef _BIG_ENDIAN +# define BIG_ENDIAN _BIG_ENDIAN +# endif +# ifdef _BYTE_ORDER +# define BYTE_ORDER _BYTE_ORDER +# endif +#endif +#if !defined(LITTLE_ENDIAN) && !defined(BIG_ENDIAN) && !defined(BYTE_ORDER) +# ifdef __LITTLE_ENDIAN +# define LITTLE_ENDIAN __LITTLE_ENDIAN +# endif +# ifdef __BIG_ENDIAN +# define BIG_ENDIAN __BIG_ENDIAN +# endif +# ifdef __BYTE_ORDER +# define BYTE_ORDER __BYTE_ORDER +# endif +#endif +#if defined(LITTLE_ENDIAN) && defined(BIG_ENDIAN) && defined(BYTE_ORDER) +# if LITTLE_ENDIAN == BYTE_ORDER +# define DB_BYTE_ORDER DB_LITTLE_ENDIAN +# elif BIG_ENDIAN == BYTE_ORDER +# define DB_BYTE_ORDER DB_BIG_ENDIAN +# else +# error "LITTLE_ENDIAN and BIG_ENDIAN defined, but can't determine byte order" +# endif +#elif defined(LITTLE_ENDIAN) && !defined(BIG_ENDIAN) +# define DB_BYTE_ORDER DB_LITTLE_ENDIAN +#elif defined(BIG_ENDIAN) && !defined(LITTLE_ENDIAN) +# define DB_BYTE_ORDER DB_BIG_ENDIAN +#else +# error "can't determine byte order from included system headers" +#endif + +#if 0 #ifdef WORDS_BIGENDIAN #define DB_BYTE_ORDER DB_BIG_ENDIAN #else #define DB_BYTE_ORDER DB_LITTLE_ENDIAN #endif +#endif /* end autoconf-based stuff */ -- 2.26.2