annotate Xcode/SDL/pkg-support/resources/UniversalBinaryNotes.rtf @ 3393:fe2f10481878

Fixed SDL_BLENDMODE_MASK for GL and GLES renderers, now blending works like in software renderer.
author Mike Gorchak <lestat@i.com.ua>
date Tue, 13 Oct 2009 06:51:20 +0000
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 }