Mercurial > sdl-ios-xcode
annotate Xcode/SDL/pkg-support/resources/UniversalBinaryNotes.rtf @ 5284:96a22141cf86 tip
Changed output directory of Universal libSDL.a for iOS to respect build configurations. Template generator was updated to reflect these changes as well.
author | Eric Wing <ewing . public |-at-| gmail . com> |
---|---|
date | Sat, 12 Feb 2011 21:52:30 -0800 |
parents | 9e9a2476f704 |
children |
rev | line source |
---|---|
3303
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
1 {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf110 |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
2 {\fonttbl\f0\fswiss\fcharset0 Helvetica;\f1\fnil\fcharset0 LucidaGrande;\f2\fmodern\fcharset0 Courier-Oblique; |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
3 } |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
4 {\colortbl;\red255\green255\blue255;} |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
5 {\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid1\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid1}} |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
6 {\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}} |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
7 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
8 |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
9 \f0\b\fs24 \cf0 64-bit Universal Binary Notes:\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
10 |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
11 \b0 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
12 SDL 1.2.14 is our first release with Snow Leopard on the market. In order to make SDL compile and run in 64-bit, we had to remove code that depended on deprecated Mac APIs and move over to more modern Mac APIs.\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
13 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
14 In addition, Apple has stopped shipping gcc 3.3 and the 10.3 SDK.\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
15 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
16 Because of all these combined factors, we have made the decision to make Mac OS X 10.4 the new minimum requirement for SDL.\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
17 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
18 Our official SDL.framework is compiled as a 3-way Universal Binary (64-bit Intel, 32-bit Intel, 32-bit PowerPC.)\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
19 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
20 Certain APIs that SDL relies on were not made 64-bit ready by Apple until 10.6. This means even though 10.5 had preliminary 64-bit support, SDL will not compile or run correctly in 64-bit mode on 10.5. So there are two fallout items from this.\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
21 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
22 First, you can only compile 64-bit code on Snow Leopard or greater (which removes the possibility of 64-bit PowerPC). \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
23 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
24 Second, this presents a corner-case where if you have a 64-bit Intel executable in your Universal binary and try to run on 10.5 on an 64-bit Intel Mac, it will launch and crash. To force 10.5 to use the 32-bit version instead of the 64-bit, you should set the LaunchServices key, LSMinimumSystemVersionByArchitecture, in your application's Info.plist. Our SDL/Xcode templates for Snow Leopard already set this up for you.\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
25 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
26 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
27 One additional fallout item is we had to remove the SDL Custom Cocoa Xcode template project. It depended on NSQuickTimeView which was deprecated and removed from the SDL codebase. It may still be possible to recreate the behavior that this template demonstrated, but we would need a volunteer to investigate this.\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
28 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
29 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
30 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
31 In addition, the SDL satellite projects were affected by the 64-bit transition.\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
32 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
33 - SDL_mixer depended on legacy Quicktime for midi playback support. We had to disable midi. (Recall that we also disabled MP3 support awhile back because we never got SMPEG working during the Tiger/Intel transition.) To fix this, we would need a native Core Audio backend for SDL_mixer.\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
34 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
35 - Since we have changed the baseline to 10.4, we took this opportunity to switch SDL_image over to a new native ImageIO based backend. This makes the binary about 10x smaller, greatly simplifies our maintenance requirements and build process as we no longer have to maintain build systems for 3rd party dependencies, and gives us access to more image formats.\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
36 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
37 - The static library target for SDL_ttf no longer works because we no longer have access to a libfreetype.a. We have been relying on Apple's supplied libfreetype.a, but they stopped shipping a static version starting in 10.5 which means we have no static 64-bit version. But since 10.4 is our new baseline, all these systems should have libfreetype.dylib installed, so it shouldn't be much of a problem to use SDL_ttf as a dynamic library which dynamically links to libfreetype.\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
38 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
39 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
40 -Eric Wing 2009-09-23\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
41 |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
42 \b \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
43 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
44 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
45 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
46 Universal Binary Notes: (historical, somewhat obsolete)\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
47 |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
48 \b0 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
49 Below is an overview of what we had to do to build Universal Binaries for SDL (and satellites). The document is provided to help others understand what the heck we had to do to get this to work so they know (and don't break) any settings we have set to accomplish this. It also describes areas of problems for those who might attempt to fix them after us.\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
50 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
51 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
52 It turns out that developing a Universal Binary for SDL was a painful process, but not for the typical reasons affecting most other developers. SDL is already platform clean and has an Xcode project which are usually the two biggest obstacles. (The only real code bug we had to fix was in SDL_mixer, but that was due to a Quicktime issue so we can blame the Quicktime authors.)\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
53 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
54 But developing a Universal Binary was painful to us for several reasons:\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
55 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
56 \pard\tx220\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\li720\fi-720\ql\qnatural\pardirnatural |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
57 \ls1\ilvl0\cf0 {\listtext \'95 }SDL must retain compatibility with 10.2 (Jaguar)\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
58 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
59 {\listtext \'95 }SDL has processor specific optimizations (Altivec, MMX/SSE)\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
60 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
61 {\listtext \'95 }The SDL satellites (SDL_mixer, SDL_image, SDL_ttf) have 3rd party dependencies which we currently statically link against. All of these dependencies needed to be updated/recompiled with the same above constraints.\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
62 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
63 \cf0 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
64 For retaining compatibility with 10.2, we have experimentally determined that there is no reliable way to use gcc 4.0.x to compile a binary that works under Jaguar. With the gcc 4.0 that shipped in Xcode 2.1, libgcc_s was automatically linked against. This library does not exist on systems prior to 10.3.9. After filing a bug report, Apple removed this automatic linking in gcc 4.0.1 which shipped with Xcode 2.2, but we discovered that we suffered from undefined symbols to things in the printf family library. (They seem to be new symbols related to printing long doubles, etc.)\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
65 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
66 So to accomplish our compatibility goals, we had to find and exploit some lesser known features of Xcode that allow us to specify architecture specific build flags found here:\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
67 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
68 {\field{\*\fldinst{HYPERLINK "http://developer.apple.com/documentation/DeveloperTools/Conceptual/XcodeUserGuide/Contents/Resources/en.lproj/05_07_bs_building_product/chapter_33_section_6.html#//apple_ref/doc/uid/TP40002693-SW3"}}{\fldrslt \cf0 http://developer.apple.com/documentation/DeveloperTools/Conceptual/XcodeUserGuide/Contents/Resources/en.lproj/05_07_bs_building_product/chapter_33_section_6.html#//apple_ref/doc/uid/TP40002693-SW3}}\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
69 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
70 The first and most important of these is the |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
71 \f1 GCC_VERSION flag which lets us set gcc 3.3 for PowerPC and gcc 4.0 for Intel.\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
72 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
73 But we also needed to verify other options such as the deployment target and SDK. Experimentally, we found that the Deployment target did very little for us except retain prebinding. Setting it to anything less than 10.4 allows for prebinding to remain active.\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
74 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
75 For the SDK's, we found that Apple does link against different versions of system components. But experimentally, we discovered we could still link to the 10.4u SDK and things would still work on Jaguar. Ideally we should probably link to the 10.2.8 SDK for PowerPC. But in reality, most people don't install the 10.2.8 SDK on their system (it is not a default component) so we didn't want to confuse people as setting this would likely cause people's compile to fail the first time they try and they would have to understand the reason for this. We did leave the architecture specific SDKROOT option set explicitly to make it easy to change in case we need to.\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
76 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
77 For the Altivec and MMX/SSE options, we had to use architecture specific build flags. Furthermore, to use SSE, we also had to include the assembly code. This caused us problems because there is no easy way to tell Xcode to use files only for a specific architecture. So the PowerPC side got confused on the .asm files and would fail to compile. \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
78 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
79 Pushing forward, we ignored PPC for the moment to see if we could at least build an optimized x86 build and then use lipo manually to merge the results. We encountered additional problems. First the alignment needed to be changed for reasons outside my knowledge base. We changed all instances of .align 16 to .align 8. This seemed to fix the compile problems. But at the linking stage, we got errors such as:\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
80 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\li640\fi-640\ql\qnatural\pardirnatural |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
81 |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
82 \f2\i\fs22 \cf0 ld: /Users/ewing/DEVELOPMENT/CODETEST/UniversalBinarySDL/SDL12/Xcode/SDL/build/SDL.build/Deployment/Framework.build/Objects-normal/i386/SDL_yuv_mmx.o has local relocation entries in non-writable section (__TEXT,__text)\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
83 /usr/bin/libtool: internal link edit command failed\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
84 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
85 |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
86 \f1\i0\fs24 \cf0 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
87 Our belief is that the assembly code is not position independent and thus will not work for us. We double checked for any OS X gcc flags that control position independence, but everything seemed to be in order. As such, we cannot compile MMX/SSE optimizations until they are rewritten, preferably without the nasm requirement to accommodate the dual PPC/x86 Xcode limitations.\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
88 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
89 \cf0 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
90 So for now, we have unchecked (checkbox) the assembly specific files in the Xcode project and have removed the -DUSE_ASMBLIT flag from OTHER_CFLAGS_i386. To reactivate this stuff, you will need to recheck the boxes and re-add the flag.\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
91 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
92 The files are\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
93 SDL_mixer_MMX.c/h\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
94 The files under hermes\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
95 and SDL_yuv_mmx.c\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
96 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
97 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
98 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
99 For the SDL satellites, it was more of the same. The painful part was that the 3rd library dependencies needed to be rebuilt. (Some of our libraries were out of date, so this was an opportunity to update them.) But this meant changing those build systems as well. \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
100 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
101 These are the versions I used:\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
102 libpng-1.2.8\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
103 libjpeg-6b\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
104 libogg-1.1.3\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
105 libvorbis-1.1.2\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
106 smpeg cvs\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
107 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
108 We found that Apple already had a libfreetype in the 10.4u SDK so we just used that one which seemed to work. (For the record, the question did come up of why we statically link against this when it seems to be a standard component on Panther and Tiger. We double checked, and it did not seem to be in Jaguar. So that's why.)\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
109 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
110 The old libpng turned out to be from the 1.0.x branch so we needed to replace all the headers we had as well. Updating to the 1.2.x branch didn't seem to cause any problems we could detect.\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
111 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
112 libpng and libjpeg lack an Xcode project so we mucked with their build system to produce Universal Binaries. But since we needed PPC to be compiled with 3.3 and Intel to be compiled with 4.0, it ended up that we built multiple times changing the compiler, and then using lipo to strip and combine the binaries.\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
113 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
114 libogg/libvorbis did contain Xcode projects, but didn't build static libraries so we had to add that. We also discovered that not building with gcc 3.3 caused us addition missing symbol runtime problems with float versions of math functions (sinf, sqrtf, etc).\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
115 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
116 It seems that once upon a time, the SDL_mixer framework supported MP3's via SMPEG, but this disappeared at some point. I don't know why or how this happened. But I also don't know how SMPEG was ever used with the framework as there was no preexisting infrastructure as with the other libraries. So I have attempted to correct this oversight, however, the SMPEG framework itself has MMX code which has also turned out to be problematic. I am getting compiler errors of " |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
117 \f2\i\fs22 Unknown pseudo-op:" |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
118 \f1\i0\fs24 for |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
119 \f2\i\fs22 .type |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
120 \f1\i0\fs24 and |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
121 \f2\i\fs22 .size. |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
122 \f1\i0\fs24 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
123 So SMPEG is currently compiled without MMX optimizations.\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
124 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
125 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
126 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
127 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
128 Addendum: \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
129 2006-03-06:\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
130 The main SDL code base (not the satellites) have undergone an overhaul. The required platform specific defines have been moved out of the build system into platform specific header files (SDL_config_*.h). This allows us to simplify the Xcode projects somewhat, but we still must maintain the architecture specific build options to invoke gcc 3.3 to maintain our mandated 10.2 compatibilty requirement.\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
131 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
132 Also it appears that the MMX/SSE code has been rewritten as well so that the obstacles we faced in compiling in these optimizations are no longer problems. The binaries we produce should now contain the processor specific optimizations. (Remember this note only applies to SDL and not the satellites, such as SMPEG.)\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
133 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
134 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
135 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
136 Contributers:\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
137 Eric Wing (Xcode projects, 3rd party dependencies, documentation)\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
138 Christian Walther (10.2.8 and 10.3.9 testing/verification)\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
139 Ryan Gordon (converted C++ code in SDL/OSX code base to pure C)\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
140 Martin Storsj\'f6 (libgcc_s testing/verification)\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
141 Stephane Marchesin (MMX/SSE code expert)\ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
142 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
143 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
144 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
145 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
146 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
147 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
148 |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
149 \f0 \cf0 \ |
9e9a2476f704
Updated Xcode project from Eric Wing
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
150 } |