Mercurial > sdl-ios-xcode
annotate README.MacOSX @ 942:41a59de7f2ed
Here are patches for SDL12 and SDL_mixer for 4 or 6 channel
surround sound on Linux using the Alsa driver. To use them, naturally
you need a sound card that will do 4 or 6 channels and probably also a
recent version of the Alsa drivers and library. Since the only SDL
output driver that knows about surround sound is the Alsa driver,
you���ll want to choose it, using:
export SDL_AUDIODRIVER=alsa
There are no syntactic changes to the programming API. No new
library calls, no differences in arguments.
There are two semantic changes:
(1) For library calls with number of channels as an argument, formerly
you could use only 1 or 2 for the number of channels. Now you
can also use 4 or 6.
(2) The two "left" and "right" arguments to Mix_SetPanning, for the
case of 4 or 6 channels, no longer simply control the volumes of
the left and right channels. Now the "left" argument is converted
to an angle and Mix_SetPosition is called, and the "right" argu-
ment is ignored.
With two exceptions, so far as I know, the modified SDL12 and
SDL_mixer work the same way as the original versions, when opened for
1 or 2 channel output. The two exceptions are bugs which I fixed.
Well, the first, anyway, is a bug for sure. When rate conversions up
or down by a factor of two are applied (in src/audio/SDL_audiocvt.c),
streams with different numbers of channels (that is, mono and stereo)
are treated the same way: either each sample is copied or every other
sample is omitted. This is ok for mono, but for stereo, it is frames
that should be copied or omitted, where by "frame" I mean a portion of
the stream containing one sample for each channel. (In the SDL source,
confusingly, sometimes frames are called "samples".) So for these
rate conversions, stereo streams have to be treated differently, and
they are, in my modified version.
The other problem that might be characterized as a bug arises
when SDL_mixer is passed a multichannel chunk which does not have an
integral number of frames. Due to the way the effect_position code
loops over frames, when the chunk ends with a partial frame, memory
outside the chunk buffer will be accessed. In the case of stereo,
it���s possible that because malloc may give more memory than requested,
this potential problem never actually causes a segment fault. I don���t
know. For 6 channel chunks, I do know, and it does cause segment
faults.
If SDL_mixer is passed defective chunks and this causes a segment
fault, arguably, that���s not a bug in SDL_mixer. Still, whether or not
it counts as a bug, it���s easy to protect against, so why not? I added
code in mixer.c to discard any partial frame at the end of a chunk.
Then what about when SDL or SDL_mixer is opened for 4 or 6 chan-
nel output? What happens with the parts of the current library
designed for stereo? I don���t know whether I���ve covered all the bases,
but I���ve tried:
(1) For playing 2 channel waves, or other cases where SDL knows it has
to match up a 2 channel source with a 4 or 6 channel output, I���ve
added code in SDL_audiocvt.c to make the necessary conversions.
(2) For playing midis using timidity, I���ve converted timidity to do 4
or 6 channel output, upon request.
(3) For playing mods using mikmod, I put ad hoc code in music.c to
convert the stereo output that mikmod produces to 4 or 6 chan-
nels. Obviously it would be better to change the mikmod code to
mix down into 4 or 6 channels, but I have a hard time following
the code in mikmod, so I didn���t do that.
(4) For playing mp3s, I put ad hoc code in smpeg to copy channels in
the case when 4 or 6 channel output is needed.
(5) There seems to be no problem with .ogg files - stereo .oggs can be
up converted as .wavs are.
(6) The effect_position code in SDL_mixer is now generalized to in-
clude the cases of 4 and 6 channel streams.
I���ve done a very limited amount of compatibility testing for some
of the games using SDL I happen to have. For details, see the file
TESTS.
I���ve put into a separate archive, Surround-SDL-testfiles.tgz, a
couple of 6 channel wave files for testing and a 6 channel ogg file.
If you have the right hardware and version of Alsa, you should be able
to play the wave files with the Alsa utility aplay (and hear all
channels, except maybe lfe, for chan-id.wav, since it���s rather faint).
Don���t expect aplay to give good sound, though. There���s something
wrong with the current version of aplay.
The canyon.ogg file is to test loading of 6 channel oggs. After
patching and compiling, you can play it with playmus. (My version of
ogg123 will not play it, and I had to patch mplayer to get it to play
6 channel oggs.)
Greg Lee <greg@ling.lll.hawaii.edu>
Thus, July 1, 2004
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Sat, 21 Aug 2004 12:27:02 +0000 |
parents | ae4ab3ac89a9 |
children | 3d9a199d2a70 |
rev | line source |
---|---|
0 | 1 ============================================================================== |
2 Using the Simple DirectMedia Layer with Mac OS X | |
3 ============================================================================== | |
4 | |
5 These instructions are for people using Apple's Mac OS X (pronounced | |
6 "ten"). | |
7 | |
8 From the developer's point of view, OS X is a sort of hybrid Mac and | |
9 Unix system, and you have the option of using either traditional | |
10 command line tools or Apple's IDE ProjectBuilder (PB). | |
11 | |
869
ae4ab3ac89a9
Instructive comments from Max Horn
Sam Lantinga <slouken@libsdl.org>
parents:
221
diff
changeset
|
12 To build SDL using the command line, use the standard configure and make |
0 | 13 process: |
14 | |
15 ./configure | |
16 make | |
869
ae4ab3ac89a9
Instructive comments from Max Horn
Sam Lantinga <slouken@libsdl.org>
parents:
221
diff
changeset
|
17 sudo make install |
0 | 18 |
19 (You may need to create the subdirs of /usr/local manually.) | |
20 | |
172
37e3ca9254c7
Date: Sat, 8 Sep 2001 04:42:23 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
53
diff
changeset
|
21 To use the library once it's built, you essential have two possibilities: |
869
ae4ab3ac89a9
Instructive comments from Max Horn
Sam Lantinga <slouken@libsdl.org>
parents:
221
diff
changeset
|
22 use the traditional autoconf/automake/make method, or use Project Builder. |
172
37e3ca9254c7
Date: Sat, 8 Sep 2001 04:42:23 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
53
diff
changeset
|
23 |
37e3ca9254c7
Date: Sat, 8 Sep 2001 04:42:23 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
53
diff
changeset
|
24 ============================================================================== |
37e3ca9254c7
Date: Sat, 8 Sep 2001 04:42:23 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
53
diff
changeset
|
25 Using the Simple DirectMedia Layer with a traditional Makefile |
37e3ca9254c7
Date: Sat, 8 Sep 2001 04:42:23 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
53
diff
changeset
|
26 ============================================================================== |
37e3ca9254c7
Date: Sat, 8 Sep 2001 04:42:23 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
53
diff
changeset
|
27 |
221
50620ec9c86a
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
207
diff
changeset
|
28 An existing autoconf/automake build system for your SDL app has good chances |
50620ec9c86a
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
207
diff
changeset
|
29 to work almost unchanged on OS X. However, to produce a "real" MacOS X binary |
50620ec9c86a
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
207
diff
changeset
|
30 that you can distribute to users, you need to put the generated binary into a |
50620ec9c86a
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
207
diff
changeset
|
31 so called "bundle", which basically is a fancy folder with a name like |
50620ec9c86a
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
207
diff
changeset
|
32 "MyCoolGame.app". |
172
37e3ca9254c7
Date: Sat, 8 Sep 2001 04:42:23 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
53
diff
changeset
|
33 |
221
50620ec9c86a
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
207
diff
changeset
|
34 To get this build automatically, add something like the following rule to |
50620ec9c86a
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
207
diff
changeset
|
35 your Makefile.am: |
172
37e3ca9254c7
Date: Sat, 8 Sep 2001 04:42:23 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
53
diff
changeset
|
36 |
199
2ad0957f6265
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
191
diff
changeset
|
37 bundle_contents = APP_NAME.app/Contents |
2ad0957f6265
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
191
diff
changeset
|
38 APP_NAME_bundle: EXE_NAME |
2ad0957f6265
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
191
diff
changeset
|
39 mkdir -p $(bundle_contents)/MacOS |
2ad0957f6265
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
191
diff
changeset
|
40 mkdir -p $(bundle_contents)/Resources |
2ad0957f6265
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
191
diff
changeset
|
41 echo "APPL????" > $(bundle_contents)/PkgInfo |
2ad0957f6265
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
191
diff
changeset
|
42 $(INSTALL_PROGRAM) $< $(bundle_contents)/MacOS/ |
172
37e3ca9254c7
Date: Sat, 8 Sep 2001 04:42:23 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
53
diff
changeset
|
43 |
221
50620ec9c86a
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
207
diff
changeset
|
44 You should replace EXE_NAME with the name of the executable. APP_NAME is what |
50620ec9c86a
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
207
diff
changeset
|
45 will be visible to the user in the Finder. Usually it will be the same |
50620ec9c86a
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
207
diff
changeset
|
46 as EXE_NAME but capitalized. E.g. if EXE_NAME is "testgame" then APP_NAME |
50620ec9c86a
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
207
diff
changeset
|
47 usually is "TestGame". You might also want to use @PACKAGE@ to use the package |
50620ec9c86a
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
207
diff
changeset
|
48 name as specified in your configure.in file. |
172
37e3ca9254c7
Date: Sat, 8 Sep 2001 04:42:23 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
53
diff
changeset
|
49 |
221
50620ec9c86a
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
207
diff
changeset
|
50 If your project builds more than one application, you will have to do a bit |
50620ec9c86a
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
207
diff
changeset
|
51 more. For each of your target applications, you need a seperate rule. |
172
37e3ca9254c7
Date: Sat, 8 Sep 2001 04:42:23 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
53
diff
changeset
|
52 |
221
50620ec9c86a
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
207
diff
changeset
|
53 If you want the created bundles to be installed, you may want to add this |
50620ec9c86a
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
207
diff
changeset
|
54 rule to your Makefile.am: |
172
37e3ca9254c7
Date: Sat, 8 Sep 2001 04:42:23 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
53
diff
changeset
|
55 |
199
2ad0957f6265
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
191
diff
changeset
|
56 install-exec-hook: APP_NAME_bundle |
2ad0957f6265
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
191
diff
changeset
|
57 rm -rf $(DESTDIR)$(prefix)/Applications/APP_NAME.app |
2ad0957f6265
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
191
diff
changeset
|
58 mkdir -p $(DESTDIR)$(prefix)/Applications/ |
2ad0957f6265
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
191
diff
changeset
|
59 cp -r $< /$(DESTDIR)$(prefix)Applications/ |
172
37e3ca9254c7
Date: Sat, 8 Sep 2001 04:42:23 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
53
diff
changeset
|
60 |
221
50620ec9c86a
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
207
diff
changeset
|
61 This rule takes the Bundle created by the rule from step 3 and installs them |
50620ec9c86a
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
207
diff
changeset
|
62 into $(DESTDIR)$(prefix)/Applications/. |
172
37e3ca9254c7
Date: Sat, 8 Sep 2001 04:42:23 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
53
diff
changeset
|
63 |
221
50620ec9c86a
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
207
diff
changeset
|
64 Again, if you want to install multiple applications, you will have to augment |
50620ec9c86a
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
207
diff
changeset
|
65 the make rule accordingly. |
172
37e3ca9254c7
Date: Sat, 8 Sep 2001 04:42:23 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
53
diff
changeset
|
66 |
0 | 67 |
869
ae4ab3ac89a9
Instructive comments from Max Horn
Sam Lantinga <slouken@libsdl.org>
parents:
221
diff
changeset
|
68 But beware! That is only part of the story! With the above, you end up with |
ae4ab3ac89a9
Instructive comments from Max Horn
Sam Lantinga <slouken@libsdl.org>
parents:
221
diff
changeset
|
69 a bare bone .app bundle, which is double clickable from the Finder. But |
ae4ab3ac89a9
Instructive comments from Max Horn
Sam Lantinga <slouken@libsdl.org>
parents:
221
diff
changeset
|
70 there are some more things you should do before shipping yor product... |
ae4ab3ac89a9
Instructive comments from Max Horn
Sam Lantinga <slouken@libsdl.org>
parents:
221
diff
changeset
|
71 |
ae4ab3ac89a9
Instructive comments from Max Horn
Sam Lantinga <slouken@libsdl.org>
parents:
221
diff
changeset
|
72 1) The bundle right now probably is dynamically linked against SDL. That |
ae4ab3ac89a9
Instructive comments from Max Horn
Sam Lantinga <slouken@libsdl.org>
parents:
221
diff
changeset
|
73 means that when you copy it to another computer, *it will not run*, |
ae4ab3ac89a9
Instructive comments from Max Horn
Sam Lantinga <slouken@libsdl.org>
parents:
221
diff
changeset
|
74 unless you also install SDL on that other computer. A good solution |
ae4ab3ac89a9
Instructive comments from Max Horn
Sam Lantinga <slouken@libsdl.org>
parents:
221
diff
changeset
|
75 for this dilemma is to static link against SDL. On OS X, you can |
ae4ab3ac89a9
Instructive comments from Max Horn
Sam Lantinga <slouken@libsdl.org>
parents:
221
diff
changeset
|
76 achieve that by linkinag against the libraries listed by |
ae4ab3ac89a9
Instructive comments from Max Horn
Sam Lantinga <slouken@libsdl.org>
parents:
221
diff
changeset
|
77 sdl-config --static-libs |
ae4ab3ac89a9
Instructive comments from Max Horn
Sam Lantinga <slouken@libsdl.org>
parents:
221
diff
changeset
|
78 instead of those listed by |
ae4ab3ac89a9
Instructive comments from Max Horn
Sam Lantinga <slouken@libsdl.org>
parents:
221
diff
changeset
|
79 sdl-config --libs |
ae4ab3ac89a9
Instructive comments from Max Horn
Sam Lantinga <slouken@libsdl.org>
parents:
221
diff
changeset
|
80 Depending on how exactly SDL is integrated into your build systems, the |
ae4ab3ac89a9
Instructive comments from Max Horn
Sam Lantinga <slouken@libsdl.org>
parents:
221
diff
changeset
|
81 way to achieve that varies, so I won't describe it here in detail |
ae4ab3ac89a9
Instructive comments from Max Horn
Sam Lantinga <slouken@libsdl.org>
parents:
221
diff
changeset
|
82 2) Add an 'Info.plist' to your application. That is a special XML file which |
ae4ab3ac89a9
Instructive comments from Max Horn
Sam Lantinga <slouken@libsdl.org>
parents:
221
diff
changeset
|
83 contains some meta-information about your application (like some copyright |
ae4ab3ac89a9
Instructive comments from Max Horn
Sam Lantinga <slouken@libsdl.org>
parents:
221
diff
changeset
|
84 information, the version of your app, the name of an optional icon file, |
ae4ab3ac89a9
Instructive comments from Max Horn
Sam Lantinga <slouken@libsdl.org>
parents:
221
diff
changeset
|
85 and other things). Part of that information is displayed by the Finder |
ae4ab3ac89a9
Instructive comments from Max Horn
Sam Lantinga <slouken@libsdl.org>
parents:
221
diff
changeset
|
86 when you click on the .app, or if you look at the "Get Info" window. |
ae4ab3ac89a9
Instructive comments from Max Horn
Sam Lantinga <slouken@libsdl.org>
parents:
221
diff
changeset
|
87 More information about Info.plist files can be found on Apple's homepage. |
ae4ab3ac89a9
Instructive comments from Max Horn
Sam Lantinga <slouken@libsdl.org>
parents:
221
diff
changeset
|
88 |
ae4ab3ac89a9
Instructive comments from Max Horn
Sam Lantinga <slouken@libsdl.org>
parents:
221
diff
changeset
|
89 |
ae4ab3ac89a9
Instructive comments from Max Horn
Sam Lantinga <slouken@libsdl.org>
parents:
221
diff
changeset
|
90 As a final remark, let me add that I use some of the techniques (and some |
ae4ab3ac89a9
Instructive comments from Max Horn
Sam Lantinga <slouken@libsdl.org>
parents:
221
diff
changeset
|
91 variations of them) in Exult and ScummVM; both are available in source on |
ae4ab3ac89a9
Instructive comments from Max Horn
Sam Lantinga <slouken@libsdl.org>
parents:
221
diff
changeset
|
92 the net, so feel free to take a peek at them for inspiration! |
ae4ab3ac89a9
Instructive comments from Max Horn
Sam Lantinga <slouken@libsdl.org>
parents:
221
diff
changeset
|
93 |
ae4ab3ac89a9
Instructive comments from Max Horn
Sam Lantinga <slouken@libsdl.org>
parents:
221
diff
changeset
|
94 |
47
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
95 ============================================================================== |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
96 Using the Simple DirectMedia Layer with Project Builder |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
97 ============================================================================== |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
98 |
221
50620ec9c86a
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
207
diff
changeset
|
99 These instructions are for using Apple's Project Builder IDE to build SDL |
50620ec9c86a
*** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents:
207
diff
changeset
|
100 applications. |
47
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
101 |
53
25dfe480c75e
Added MacOS X Project Builder projects
Sam Lantinga <slouken@lokigames.com>
parents:
47
diff
changeset
|
102 - First steps |
25dfe480c75e
Added MacOS X Project Builder projects
Sam Lantinga <slouken@lokigames.com>
parents:
47
diff
changeset
|
103 |
25dfe480c75e
Added MacOS X Project Builder projects
Sam Lantinga <slouken@lokigames.com>
parents:
47
diff
changeset
|
104 The first thing to do is to unpack the PBProjects.tar.gz archive in the |
25dfe480c75e
Added MacOS X Project Builder projects
Sam Lantinga <slouken@lokigames.com>
parents:
47
diff
changeset
|
105 top level SDL directory (where the PBProjects.tar.gz archive resides). |
25dfe480c75e
Added MacOS X Project Builder projects
Sam Lantinga <slouken@lokigames.com>
parents:
47
diff
changeset
|
106 Because Stuffit Expander will unpack the archive into a subdirectory, |
25dfe480c75e
Added MacOS X Project Builder projects
Sam Lantinga <slouken@lokigames.com>
parents:
47
diff
changeset
|
107 you should unpack the archive manually from the command line: |
25dfe480c75e
Added MacOS X Project Builder projects
Sam Lantinga <slouken@lokigames.com>
parents:
47
diff
changeset
|
108 cd [path_to_SDL_source] |
25dfe480c75e
Added MacOS X Project Builder projects
Sam Lantinga <slouken@lokigames.com>
parents:
47
diff
changeset
|
109 tar zxf PBProjects.tar.gz |
25dfe480c75e
Added MacOS X Project Builder projects
Sam Lantinga <slouken@lokigames.com>
parents:
47
diff
changeset
|
110 This will create a new folder called PBProjects, which you can browse |
25dfe480c75e
Added MacOS X Project Builder projects
Sam Lantinga <slouken@lokigames.com>
parents:
47
diff
changeset
|
111 normally from the Finder. |
25dfe480c75e
Added MacOS X Project Builder projects
Sam Lantinga <slouken@lokigames.com>
parents:
47
diff
changeset
|
112 |
47
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
113 - Building the Framework |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
114 |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
115 The SDL Library is packaged as a framework bundle, an organized |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
116 relocatable folder heirarchy of executible code, interface headers, |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
117 and additional resources. For practical purposes, you can think of a |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
118 framework as a more user and system-friendly shared library, whose library |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
119 file behaves more or less like a standard UNIX shared library. |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
120 |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
121 To build the framework, simply open the framework project and build it. |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
122 By default, the framework bundle "SDL.framework" is installed in |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
123 ~/Library/Frameworks. Therefore, the testers and project stationary expect |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
124 it to be located there. However, it will function the same in any of the |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
125 following locations: |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
126 |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
127 ~/Library/Frameworks |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
128 /Local/Library/Frameworks |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
129 /System/Library/Frameworks |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
130 |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
131 - Build Options |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
132 There are two "Build Styles" (See the "Targets" tab) for SDL. |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
133 "Deployment" should be used if you aren't tweaking the SDL library. |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
134 "Development" should be used to debug SDL apps or the library itself. |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
135 |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
136 - Building the Testers |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
137 Open the SDLTest project and build away! |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
138 |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
139 - Using the Project Stationary |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
140 Copy the stationary to the indicated folders to access it from |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
141 the "New Project" and "Add target" menus. What could be easier? |
0 | 142 |
47
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
143 - Setting up a new project by hand |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
144 Some of you won't want to use the Stationary so I'll give some tips: |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
145 * Create a new "Cocoa Application" |
207
c03846dd489b
Added Darrell Walisser's updated project-builder projects
Sam Lantinga <slouken@libsdl.org>
parents:
199
diff
changeset
|
146 * Add src/main/macosx/SDLMain.m , .h and .nib to your project |
47
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
147 * Remove "main.c" from your project |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
148 * Remove "MainMenu.nib" from your project |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
149 * Add "$(HOME)/Library/Frameworks/SDL.framework/Headers" to include path |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
150 * Add "$(HOME)/Library/Frameworks" to the frameworks search path |
207
c03846dd489b
Added Darrell Walisser's updated project-builder projects
Sam Lantinga <slouken@libsdl.org>
parents:
199
diff
changeset
|
151 * Add "-framework SDL -framework Foundation -framework AppKit" to "OTHER_LDFLAGS" |
c03846dd489b
Added Darrell Walisser's updated project-builder projects
Sam Lantinga <slouken@libsdl.org>
parents:
199
diff
changeset
|
152 * Set the "Main Nib File" under "Application Settings" to "SDLMain.nib" |
47
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
153 * Add your files |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
154 * Clean and build |
0 | 155 |
47
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
156 - Building from command line |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
157 Use pbxbuild in the same directory as your .pbproj file |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
158 |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
159 - Running your app |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
160 You can send command line args to your app by either invoking it from |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
161 the command line (in *.app/Contents/MacOS) or by entering them in the |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
162 "Executibles" panel of the target settings. |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
163 |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
164 - Implementation Notes |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
165 Some things that may be of interest about how it all works... |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
166 * Working directory |
191
c151cfc43c07
Changed SDLMain to SDL_main for MacOS X stuff
Sam Lantinga <slouken@libsdl.org>
parents:
172
diff
changeset
|
167 As defined in the SDL_main.m file, the working directory of your SDL app |
47
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
168 is by default set to its parent. You may wish to change this to better |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
169 suit your needs. |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
170 * You have a Cocoa App! |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
171 Your SDL app is essentially a Cocoa application. When your app |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
172 starts up and the libraries finish loading, a Cocoa procedure is called, |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
173 which sets up the working directory and calls your main() method. |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
174 You are free to modify your Cocoa app with generally no consequence |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
175 to SDL. You cannot, however, easily change the SDL window itself. |
45b1c4303f87
Added initial support for Quartz video (thanks Darrell!)
Sam Lantinga <slouken@lokigames.com>
parents:
0
diff
changeset
|
176 Functionality may be added in the future to help this. |
207
c03846dd489b
Added Darrell Walisser's updated project-builder projects
Sam Lantinga <slouken@libsdl.org>
parents:
199
diff
changeset
|
177 |
c03846dd489b
Added Darrell Walisser's updated project-builder projects
Sam Lantinga <slouken@libsdl.org>
parents:
199
diff
changeset
|
178 |
0 | 179 Known bugs are listed in the file "BUGS" |