Ticket #23674 (closed defect: fixed)
libsdl 1.2.14 misdetects endianess on PPC non-universal build
| Reported by: | michael.klein@… | Owned by: | jmr@… |
|---|---|---|---|
| Priority: | Normal | Milestone: | |
| Component: | ports | Version: | 1.8.2 |
| Keywords: | haspatch | Cc: | keybounce@… |
| Port: | libsdl |
Description
$ grep SDL_BYTEORDER /opt/local/include/SDL/SDL_config.h #define SDL_BYTEORDER 1234
On PPC, this should be rather 4321. SDL's configure script, generated by autoconf 2.63, reports checking whether byte ordering is bigendian... universal, although I did not ask for a universal variant.
Regenerating with autoconf 2.65 fixes this.
Attachments
Change History
comment:1 Changed 3 years ago by jmr@…
- Owner changed from macports-tickets@… to nox@…
- Keywords haspatch added
Please remember to cc the maintainer.
comment:2 follow-up: ↓ 3 Changed 3 years ago by jmr@…
You can just set use_autoconf yes rather than running the autogen script with system.
comment:3 in reply to: ↑ 2 Changed 3 years ago by michael.klein@…
Replying to jmr@…:
You can just set use_autoconf yes rather than running the autogen script with system.
Good to know, unfortunately this does not seem to work for libsdl:
$ port -v configure
MacPorts running without privileges. You may be unable to complete certain actions (eg install).
---> Computing dependencies for libsdl.
MacPorts running without privileges. You may be unable to complete certain actions (eg install).
---> Fetching libsdl
MacPorts running without privileges. You may be unable to complete certain actions (eg install).
---> Verifying checksum(s) for libsdl
---> Checksumming SDL-1.2.14.tar.gz
MacPorts running without privileges. You may be unable to complete certain actions (eg install).
---> Extracting libsdl
---> Extracting SDL-1.2.14.tar.gz
MacPorts running without privileges. You may be unable to complete certain actions (eg install).
---> Applying patches to libsdl
---> Applying /opt/local/var/macports/sources/svn.macports.org/devel/libsdl/files/patch-SDL_x11gl_c.h.diff
patching file src/video/x11/SDL_x11gl_c.h
MacPorts running without privileges. You may be unable to complete certain actions (eg install).
---> Configuring libsdl
configure.in:57: error: possibly undefined macro: AC_PROG_LIBTOOL
If this token and others are legitimate, please use m4_pattern_allow.
See the Autoconf documentation.
configure.in:367: error: possibly undefined macro: AM_PATH_ALSA
configure.in:466: error: possibly undefined macro: AM_PATH_ESD
Error: Target org.macports.configure returned: autoconf failure: shell command " cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_svn.macports.org_devel_libsdl/work/SDL-1.2.14" && autoconf " returned error 1
Warning: the following items did not execute (for libsdl): org.macports.configure
Error: Status 1 encountered during processing.
Before reporting a bug, first run the command again with the -d flag to get complete output.
comment:4 in reply to: ↑ description Changed 3 years ago by keybounce@…
In fact, it generates 1234 as a constant on a universal build.
There is no "one" value on a universal build. Oddly, commenting it out seems to work better.
SDL_endian.h has this tidbit:
...
/** @name SDL_ENDIANs
* The two types of endianness
*/
/*@{*/
#define SDL_LIL_ENDIAN 1234
#define SDL_BIG_ENDIAN 4321
/*@}*/
#ifndef SDL_BYTEORDER /* Not defined in SDL_config.h? */
#if defined(__hppa__) || \
defined(__m68k__) || defined(mc68000) || defined(_M_M68K) || \
(defined(__MIPS__) && defined(__MISPEB__)) || \
defined(__ppc__) || defined(__POWERPC__) || defined(_M_PPC) || \
defined(__sparc__)
#define SDL_BYTEORDER SDL_BIG_ENDIAN
#else
...
It goes through a great deal of trouble to determine at compile time what the endian-ness is, as well as defining optimized assembly for byteswap routines.
So, trying to specify a single endian-ness seems to be a bad idea.
comment:6 Changed 3 years ago by keybounce@…
Bump
Someone else just ran into the same issue. Can we please get that #define line removed, so that it will work on either system?

