Mercurial > sdl-ios-xcode
view src/hermes/HeadX86.h @ 1321:e05bc5d315e3
Date: Wed, 1 Feb 2006 18:20:33 -0800
From: Eric Wing
Subject: SDL/Universal Binary updates
Hi Sam,
Attached is a big set of changes to the Xcode projects to support
Universal Binaries. I have also included .dmgs that include the
prebuilt frameworks.
Ryan, I also updated SMPEG which is also in the package.
The SDL and smpeg binaries were built against the CVS version (pulled
maybe a month ago?).
I do not have an Intel Mac to test on so I have no idea if this stuff
actually works. However, Christian Walther has been a big help in
testing 10.2.8 and 10.3.9 so I'm fairly confident we got the build
settings correct for at least PPC.
I have attempted to document the important things for producing these
Universal Binaries. Documentation is somewhat scattered through out
everything, but there is a big centralized piece of documentation in
the UniversalBinaryNotes.rtf in the SDL.dmg.
As far as Universal Binaries are concerned, the big things were:
- Build with gcc 3.3 on PPC, 4.0 on Intel.
- We couldn't get any of the MMX/SSE code to compile/link (SDL and
smpeg).
- All 3rd party dependencies had to be rebuilt as Universal
There were also a bunch of non-Universal things that have been updated:
- I converted the SDL-satellites to create .dmg's instead of .pkg
installers
- Updated all 3rd party static libraries with current versions. (I
think libpng was the most dramatic going from 1.0.? to 1.2.8 with API
breakage. I haven't found any problems so far in doing this.)
- Changed some compiler optimization settings
- Finally updated the exports list for SDL_mixer
- Tried to include a static smpeg in SDL_mixer (multiple build
variants in Xcode project now)
- Enabled Altivec in SDL (we forgot to add the flags to Xcode last time)
- More documentation
Since so many things have changed, there might be new problems
introduced. The big issue I've found so far is with SDL_mixer. As I
mentioned on the mailing list, MP3's produce an assertion failure.
And the MikMod problem reported on Bugzilla continues to persist.
There's probably a bunch of other stuff I'm forgetting. There really
were hundreds of little things I mucked with so it's hard to remember
them all.
If you have any questions, feel free to ask.
Thanks,
Eric
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Thu, 02 Feb 2006 06:26:39 +0000 |
parents | bb5ace455586 |
children | 782fd950bd46 c121d94672cb 39b9405d3cb6 |
line wrap: on
line source
/* Header definitions for the x86 routines for the HERMES library Copyright (c) 1998 Christian Nentwich (brn@eleet.mcb.at) This source code is licensed under the GNU LGPL Please refer to the file COPYING.LIB contained in the distribution for licensing conditions */ #ifndef __HERMES_HEAD_X86__ #define __HERMES_HEAD_X86__ #ifdef X86_ASSEMBLER /* If you can't stand IFDEFS, then close your eyes now, please :) */ /* Ok, we start with normal function definitions */ #ifdef __cplusplus extern "C" { #endif void STACKCALL ConvertX86(HermesConverterInterface *); void STACKCALL ClearX86_32(HermesClearInterface *); void STACKCALL ClearX86_24(HermesClearInterface *); void STACKCALL ClearX86_16(HermesClearInterface *); void STACKCALL ClearX86_8(HermesClearInterface *); int STACKCALL Hermes_X86_CPU(); void ConvertX86p32_32BGR888(); void ConvertX86p32_32RGBA888(); void ConvertX86p32_32BGRA888(); void ConvertX86p32_24RGB888(); void ConvertX86p32_24BGR888(); void ConvertX86p32_16RGB565(); void ConvertX86p32_16BGR565(); void ConvertX86p32_16RGB555(); void ConvertX86p32_16BGR555(); void ConvertX86p32_8RGB332(); void ConvertX86p16_32RGB888(); void ConvertX86p16_32BGR888(); void ConvertX86p16_32RGBA888(); void ConvertX86p16_32BGRA888(); void ConvertX86p16_24RGB888(); void ConvertX86p16_24BGR888(); void ConvertX86p16_16BGR565(); void ConvertX86p16_16RGB555(); void ConvertX86p16_16BGR555(); void ConvertX86p16_8RGB332(); void CopyX86p_4byte(); void CopyX86p_3byte(); void CopyX86p_2byte(); void CopyX86p_1byte(); void ConvertX86pI8_32(); void ConvertX86pI8_24(); void ConvertX86pI8_16(); extern int ConvertX86p16_32RGB888_LUT_X86[512]; extern int ConvertX86p16_32BGR888_LUT_X86[512]; extern int ConvertX86p16_32RGBA888_LUT_X86[512]; extern int ConvertX86p16_32BGRA888_LUT_X86[512]; #ifdef __cplusplus } #endif /* Now fix up the ELF underscore problem */ #if defined(__ELF__) && defined(__GNUC__) #ifdef __cplusplus extern "C" { #endif extern int _Hermes_X86_CPU(); extern void _ConvertX86(HermesConverterInterface *); extern void _ConvertX86p32_32BGR888(); extern void _ConvertX86p32_32RGBA888(); extern void _ConvertX86p32_32BGRA888(); extern void _ConvertX86p32_24RGB888(); extern void _ConvertX86p32_24BGR888(); extern void _ConvertX86p32_16RGB565(); extern void _ConvertX86p32_16BGR565(); extern void _ConvertX86p32_16RGB555(); extern void _ConvertX86p32_16BGR555(); extern void _ConvertX86p32_8RGB332(); extern void _ConvertX86p16_16BGR565(); extern void _ConvertX86p16_16RGB555(); extern void _ConvertX86p16_16BGR555(); extern void _ConvertX86p16_8RGB332(); #define Hermes_X86_CPU _Hermes_X86_CPU #define ConvertX86 _ConvertX86 #define ConvertX86p32_32BGR888 _ConvertX86p32_32BGR888 #define ConvertX86p32_32RGBA888 _ConvertX86p32_32RGBA888 #define ConvertX86p32_32BGRA888 _ConvertX86p32_32BGRA888 #define ConvertX86p32_24RGB888 _ConvertX86p32_24RGB888 #define ConvertX86p32_24BGR888 _ConvertX86p32_24BGR888 #define ConvertX86p32_16RGB565 _ConvertX86p32_16RGB565 #define ConvertX86p32_16BGR565 _ConvertX86p32_16BGR565 #define ConvertX86p32_16RGB555 _ConvertX86p32_16RGB555 #define ConvertX86p32_16BGR555 _ConvertX86p32_16BGR555 #define ConvertX86p32_8RGB332 _ConvertX86p32_8RGB332 #define ConvertX86p16_16BGR565 _ConvertX86p16_16BGR565 #define ConvertX86p16_16RGB555 _ConvertX86p16_16RGB555 #define ConvertX86p16_16BGR555 _ConvertX86p16_16BGR555 #define ConvertX86p16_8RGB332 _ConvertX86p16_8RGB332 #ifdef __cplusplus } #endif #endif /* ELF & GNU */ /* Make it run with WATCOM C */ #ifdef __WATCOMC__ #pragma warning 601 9 #pragma aux Hermes_X86_CPU "_*" #pragma aux ConvertX86 "_*" modify [EAX EBX ECX EDX ESI EDI] #pragma aux ClearX86_32 "_*" modify [EAX EBX ECX EDX ESI EDI] #pragma aux ClearX86_24 "_*" modify [EAX EBX ECX EDX ESI EDI] #pragma aux ClearX86_16 "_*" modify [EAX EBX ECX EDX ESI EDI] #pragma aux ClearX86_8 "_*" modify [EAX EBX ECX EDX ESI EDI] #pragma aux ConvertX86p32_32BGR888 "_*" #pragma aux ConvertX86p32_32RGBA888 "_*" #pragma aux ConvertX86p32_32BGRA888 "_*" #pragma aux ConvertX86p32_24RGB888 "_*" #pragma aux ConvertX86p32_24BGR888 "_*" #pragma aux ConvertX86p32_16RGB565 "_*" #pragma aux ConvertX86p32_16BGR565 "_*" #pragma aux ConvertX86p32_16RGB555 "_*" #pragma aux ConvertX86p32_16BGR555 "_*" #pragma aux ConvertX86p32_8RGB332 "_*" #pragma aux ConvertX86p16_32RGB888 "_*" #pragma aux ConvertX86p16_32BGR888 "_*" #pragma aux ConvertX86p16_32RGBA888 "_*" #pragma aux ConvertX86p16_32BGRA888 "_*" #pragma aux ConvertX86p16_24RGB888 "_*" #pragma aux ConvertX86p16_24BGR888 "_*" #pragma aux ConvertX86p16_16BGR565 "_*" #pragma aux ConvertX86p16_16RGB555 "_*" #pragma aux ConvertX86p16_16BGR555 "_*" #pragma aux ConvertX86p16_8RGB332 "_*" #pragma aux CopyX86p_4byte "_*" #pragma aux CopyX86p_3byte "_*" #pragma aux CopyX86p_2byte "_*" #pragma aux CopyX86p_1byte "_*" #pragma aux ConvertX86pI8_32 "_*" #pragma aux ConvertX86pI8_24 "_*" #pragma aux ConvertX86pI8_16 "_*" #pragma aux ConvertX86p16_32RGB888_LUT_X86 "_*" #pragma aux ConvertX86p16_32BGR888_LUT_X86 "_*" #pragma aux ConvertX86p16_32RGBA888_LUT_X86 "_*" #pragma aux ConvertX86p16_32BGRA888_LUT_X86 "_*" #endif /* __WATCOMC__ */ #endif /* X86_ASSEMBLER */ #endif