Updated Xcode projects for Universal Binaries have been committed to
CVS and initial binary packages (.dmg) are available here:
http://www.libsdl.org/cvs/
Projects included are SDL, SDL_image, SDL_mixer, SDL_ttf, and smpeg.
(Static libraries updated for libpng, libjpeg, libfreetype, libogg,
libvorbis).
The SDL and smpeg binaries were built against the CVS version pulled
maybe a month ago so they may be a little behind.
There are a huge list of changes made to the projects, many things not
directly related to Universal Binaries so testing is needed.
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 in other threads, Mikmod and SMPEG continue to cause
problems. SMPEG is currently compiled into the binary in the above
link, but produces runtime assertion errors for me.
Areas that need testing/focus/fixing:
- Test to make sure binaries actually work (especially on x86).
- Test to make sure Altivec is actually working on PowerPC.
- Test to make sure things work on older versions of OS X and things
can be built on those systems linking against our Universal
frameworks. - Test to make sure the Xcode projects actually work on other systems
(make sure absolute paths were not accidentally set). - Fix MMX/SSE optimizations so they can be compiled in for SDL and smpeg
- Fix Mikmod for SDL_mixer
- Fix smpeg/mp3 playback for SDL_mixer
Also, there is a longer term needed task of figuring out what to do
with all the “deprecated API” warnings we get now under Tiger. It is
likely that using deprecated APIs will cause us to fall off optimized
code paths in the future.
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.
Again, please read over the UniversalBinaryNotes.rtf in the SDL.dmg.
This will hopefully explain a great many things that may seem strange
otherwise.
If you have any questions, feel free to ask.
Thanks,
Eric