View Full Version : MacOS X + JEDI SDL + Fink

18-10-2006, 08:50 PM
I am using Lazarus under OS X (X11) to compile a game developed under (win32/linux).

So far I have managed to get it all to compile (after clipping some bits out)! I am having major problems with the linker though... it seems to throw an error about not finding symbols like _SDL_Init etc. pretty much all of the ones defined in SDL.pas.

I have tried downloading the SDL libraries from http://www.libsdl.org/download-1.2.php but they seem to be in framework form!!?? So I tried to use fink instead and to get libSdl.dylib... but still it does not seem to solve the problem, even when I add the path /sw/lib to the compiler settings...

Would anyone care to shed any light on this situation? I am going about this completely the wrong way?

18-10-2006, 09:41 PM
Welcome to PGD! :)

Hmm... well I don't have any instant 'ah ha's here, but there are some small bits of information missing that I think would clue in others wanting to help you out.

Whats the SDL library you are using? (Are they JEDI-SDL?) (EDIT: nm, I didn't notice the Subject too well. :P)

What version of Laz?

What calls are you making?, etc

18-10-2006, 10:30 PM
First things first, thanks for the prompt response...


Here is some more information... Hmmm...

I am porting a game called Guns for a friend (also a member of PGD - jasonf)... using lazarus version 0.9.18 beta...

On the SDL side of things - I am using:
SDL (through JEDI-SDLv1.0b)
SDL-Image (through JEDI-SDLv1.0b)
SDL-mixer (through JEDI-SDLv1.0b)
- also - SFont (through JEDI-SDLv1.0b)

He is makeing all sorts of calls in there... loading graphics, music etc...

I hope you have seen the game because I am pretty sure this post does not qualify as more information... the truth is that my knowledge of the code base is quite ***t :oops:.

19-10-2006, 09:40 AM
Good luck on the port billly1380 :)

I know Jason and I have seen the code you are converting (I think I even worked on some of it :D ). For the most part it should work under lazarus, just make sure you are using the {$MODE DELPHI} or the Delphi compatable option in your project as the code was written using kylix and delphi 5.

There was some postson the JEDI-SDL group about compiling under mac OSX and you have to link the dynlib into the main applications, I'll try and find the post about it and put it up here.


19-10-2006, 06:02 PM
Hey technomage - thanks for the support...

About the Delphi thing... I think that one of the compiler options in the version of Lazarus I am using passes that option to the compiler... It would not talk to me without that option switched on :cry:.

I could really use that article actually... if you can get your hands on it, I woud be very grateful, as I had a look and have come up with nothing.

Thanks again...

19-10-2006, 11:04 PM
I intend to ask for an abandoned iMac in my office. Does anyone know if iMacs will run MacOS X and or FPC?

20-10-2006, 11:06 AM
I an not sure which iMacs you are talking about but the ones with the extendible screen mount thing were launched when MAC OS X was Jaguar so 10.2. They are mostly G3s but there are some out there that are G4... So yes they run OS X...

So much has changed since the days of Jaguar though and if you get that bad boy, I would seriously recomend a software upgrade (subject to the specs :wink: ).

20-10-2006, 10:40 PM
Can anyone with access to a mac post up a realy simple JEDI-SDL project compiled with Lazarus. Something that you know compiles and runs under Mac OS X e.g. a roatating cube or something.

Might be useful to look a the settings on that... see if it links on my machine...

20-10-2006, 10:49 PM
I found the link for getting sdl and fpc working under macos


21-10-2006, 01:55 AM
Thanks... for the help...

I read that article and managed to get it to link...

Turns out that sticking the library path into the compiler settings is not enough, you need to tell the linker what you want it to link to e.g. -k-lSDL...

Next: getting it to run! :lol:

21-10-2006, 02:25 PM
I found the ]http://www.freepascal.org/wiki/index.php/FPC_and_SDL[/url]

What a great little tutorial. I especially like the tips about getting JEDI-SDL working on MacOS X.

I've added another tip to that Wiki page. It being that when using SDL_mixer, the call to Mix_OpenAudio MUST happen before the call to SDL_SetVideoMode, otherwise you will get a ( sometimes load ) audible pop.

21-10-2006, 03:04 PM
Turns out that sticking the library path into the compiler settings is not enough, you need to tell the ]

The wiki page does mention that you need to add that to the command line.

Btw, did it all work?
How much do you charge to recompile and create a binary under MacOS X :)?
Also, are you using it under Intel or Power PC?

21-10-2006, 03:32 PM
Hehehe.. Will, looks like you could have yourself a cushy side earner here ;)

So did you get Guns to compile and run on the Mac? I'd love to see it working.. also, I've got some major updates for you to include.

21-10-2006, 09:25 PM
Oh man... this thread makes me wish C-C was ready for such porting. :P

Nice job guys! ;)

21-10-2006, 09:47 PM

21-10-2006, 10:49 PM
The wiki page does mention that you need to add that to the command line.

Btw, did it all work?
How much do you charge to recompile and create a binary under MacOS X :)?
Also, are you using it under Intel or Power PC?

Since I am using Lazarus I could not play with the command line directly so I had to add all the -k swithches to the additional ]
I've got some major updates for you to include.

bring on the updates... :wink:

Although I think we need to sort out that display issue first! :lol:

21-10-2006, 10:57 PM

:lol: My short acronym for Cyber-Crisis! :D

21-10-2006, 11:24 PM
The funny thing (actually not so much) is that it crashes with a bad pointer doing an SDL_Flip... /quote]

Which version of the FPC compiler are you using? My hunch is that the SDL_Main.o is what is causing the problem. But I could be totally wrong. According to that wiki if you are using FPC v2.0.0...
The only workaround currently is to edit rtl/bsd/system.pp, and change the line

procedure main(argcparam: Longint; argvparam: ppchar; envpparam: ppchar); cdecl; [public];


procedure SDL_main(argcparam: Longint; argvparam: ppchar; envpparam: ppchar); cdecl; [public];

If you then recompile the RTL, you will obtain an RTL which can be used to compile SDL programs. However, it will only work for SDL programs, since other programs now won't have a main function.

If you are using FPC v2.0.2+...

With fpc 2.0.2 or later you do not have to change rtl/bsd/system.pp any longer. -XMSDL_main does the trick :
1) as before, install SDL, for example using fink.

2) Add the following to your program:

{$linklib gcc}
{$linklib SDLmain}
uses sdl;

3) Then, this command line does it:

fpc -XMSDL_main -k-L/sw/lib -k-lSDL -k-framework -kOpenGL -k-framework -kCocoa -Fu<pathtosdl.pas files> -Fi<pathtosdl.inc files> Guns.dpr

If neither of these 2 methods work then we need to inform the wiki guys to update their info.

22-10-2006, 01:21 PM
If neither of these 2 methods work then we need to inform the wiki guys to update their info.

I am using fpc 2.0.4 and the method I used (2.0.2+) was as described in the Wiki... the only thing is that I could not get hold of a version of SDL_Main.o (for ppc)... so I had to build one myself!

I think the SDLMain bit works because I get a cocoa window (part of their main code) it just has nothing in it...

The runtime error I am getting is 'External: EXC_BAD_ACCESS'
I read this thread...


I think I am still in denial :!: !

22-10-2006, 02:05 PM
Hmm I'm very keen to see Guns blazing on MacOS X.
I know you are currently using Lazarus, but would you mind trying to compile the game via the command line, to see if that works instead? Trying both with your SDL_Main and the one that the wiki says is supposed to be there.
My understanding of the -XMSDL_Main command line switch is that it should rename the system.pp main() to SDL_Main() during compilation to facilitate SDL compilation, hence my surprise that you had to create your own.

Personally the last time I used Lazarus under Unix I had problems getting some of the JEDI-SDL demos working, so in the end I switched to using the command line compiler. I cannot deny that it may not have worked because of my lack of familiarity with Laz, but at the time it seemed quicker to just get things working using the command line compiler.

22-10-2006, 04:09 PM
Ok, now I get what you are saying...

I will try that and report shortly...

Thanks :D

22-10-2006, 04:19 PM
so here is the command line (I renamed my SDLmain.o out of the way for this test):

/usr/local/bin/fpc -XMSDL_main -k-L/sw/lib -k-lSDL -k-lSDL_image -k-lSDL_Mixer -k-framework -kOpenGL -k-framework -kCocoa -Fu/users/billy1380/Documents/XCodeProjects/CBC/Jedi-SDLv1.0/SDL/pas -Fu/users/billy1380/Documents/XCodeProjects/CBC/Jedi-SDLv1.0/SDL_Image/pas -Fu/users/billy1380/Documents/XCodeProjects/CBC/Jedi-SDLv1.0/SDL_Mixer/pas -Fu/users/billy1380/Documents/XCodeProjects/CBC/CBCFoundation -Fu/users/billy1380/Documents/XCodeProjects/CBC/Jedi-SDLv1.0/sfont/pas -Fi/users/billy1380/Documents/XCodeProjects/CBC/Jedi-SDLv1.0/SDL/pas -Fi/swab/include/SDL SDLGuns.pas -Fl/sw/lib -Fl/usr/X11R6/lib

and the result is:

Copyright &#40;c&#41; 1993-2006 by Florian Klaempfl
Target OS&#58; Darwin for PowerPC
Compiling SDLGuns.pas
Assembling sdlguns
SDLGuns.pas&#40;52,1&#41; Warning&#58; Object SDLmain.o not found, Linking may fail !
Linking SDLGuns
/usr/bin/ld&#58; can't open&#58; SDLmain.o &#40;No such file or directory, errno = 2&#41;
SDLGuns.pas&#40;52,1&#41; Error&#58; Error while linking
Error&#58; /usr/local/bin/ppcppc returned an error exitcode &#40;normal if you did not specify a source file to be compiled&#41;

sorry about all the extra long paths...

22-10-2006, 05:47 PM
Damn!! Maybe the MacOS X 2.0.4 compiler doesn't have the SDL_Main fix.

OK last suggestion, find system.pp, inside that file find main(...) and rename it to SDL_Main. Then you would need to recompile the RTL and I'm not sure how to do that. If you manage to compile the RTL, you can then try the command line compile again but this time don't use the -XMSDL_main switch as it should not be needed now.

If I find an explanation of how to recompile the RTL I'll post it here.

22-10-2006, 05:55 PM
I found this...

which states something like ( paraphrased )..

After installing mingW 3.1, try to compile it so:

make rtl DEBUG=1
make compiler DEBUG=1
make ide DEBUG=1

make -C fv DEBUG=1
make installer DEBUG=1

Not sure if it is accurate.

26-10-2006, 09:13 AM
Finally, yesterday night, we got guns to run "properly" on the Mac... :D

and so I would like to thank all of you who posted to help and/or support...

And just incase the big guy really does exist... I would like to thank Santa...

So here is a screenshot for all you screenshot lovers:

http://upload4.postimage.org/1491201/gunsmac.jpg (http://upload4.postimage.org/1491201/photo_hosting.html)


26-10-2006, 12:22 PM
Congratulations guys!

So Billy, can you pass on any information about how you finally got everything working on MacOS X? I will happily update the FreePascal wiki with any information you provide, so that others don't have to go through the same night mare.

04-11-2006, 05:21 PM
Hi Guys,
Can you post exactly what command line you used on MacOS X to get everything to compile. I am using

/usr/local/bin/fpc -XMSDL_main -k-L/Library/Frameworks -k-lSDL -k-framework -kOpenGL -k-framework -kCocoa SDLDemo.pas

but keep getting

/usr/bin/ld: can't locate file for: -lSDL

I'm using FPC 2.1.1. any ideas?

06-11-2006, 02:50 PM
There is nothing wrong with your command line... I will post the entire thing when I get home!

For the time being I think that the problem is that you do not actually have the SDL framework... to get that just go to libSDL.org and get the latest version... you will find that it is a dmg... copy the contents (SDL.framework folder) into your /library/frameworks directory...

try again...

06-11-2006, 03:52 PM
The SDL.framework is definately there ( in the location you mentioned ) along with SDL_image etc. From chatting to Jonas ( the MacOS X maintainer ), I need to link to libSDLMain.a to get things going. Just to make things interesting I am also trying to get it working with XCode 2.4.

06-11-2006, 04:31 PM
so here is the command line unedited:

/usr/local/bin/fpc -Or -XMSDL_main -k-L/sw/lib -k-lSDL -k-lSDL_image -k-lSDL_Mixer -k-framework -kOpenGL -k-framework -kCocoa -Fu/users/~/Documents/XCodeProjects/CBC/Jedi-SDLv1.0/SDL/pas -Fu/users/~/Documents/XCodeProjects/CBC/Jedi-SDLv1.0/SDL_Image/pas -Fu/users/~/Documents/XCodeProjects/CBC/Jedi-SDLv1.0/SDL_Mixer/pas -Fu/users/~/Documents/XCodeProjects/CBC/CBCFoundation -Fu/users/~/Documents/XCodeProjects/CBC/Jedi-SDLv1.0/sfont/pas -Fi/users/~/Documents/XCodeProjects/Jedi-SDLv1.0/SDL/pas -Fi/sw/include/SDL SDLGuns.pas -Fl/sw/lib -Fl/usr/X11R6/lib

notice the use of -k-L/sw/lib, this is where libSDL.dylib is located!

06-11-2006, 04:32 PM
Just out of curiosity, has anyone heard of the forum iDev Games before? They seem to specialise in Mac game development and they've got a section on SDL. They might have some useful info.. http://www.idevgames.com/forum/forumdisplay.php?f=6

06-11-2006, 05:59 PM
Looks promising, you should announce your port over there.

12-11-2006, 04:19 PM

I promised to put an article together for any of you who are interested in porting their games to the Mac!

So here is the link:

Hope you find it useful, and as always... if you would like some help or have any questions just post them up!

13-11-2006, 01:04 AM
In my completely non biased opinion ;) this should be an announcement or at least have a link of its own :D

Top cheers to Billy for taking the time and effort to get my shoddy (tm) code to work on his mac.. pleased to announce that since my optimisations, it's working as fast as a fast thing.
I'm sure that there are people who would like to get their Jedi-sdl apps running on Mac and will find your tutorial no end of help. A few simple guidelines can make all the difference.

Cheers Billy mate.

13-11-2006, 06:08 PM
Thank Billy for posting the info about building under MacOS X. Though I love the references to delphigamer.com :), I think it would be more consistent to change this to http://www.pascalgamedevelopment.com/ as Dean has indicated that DelphiGamer may change in future.

I will create a news item about your post and I will also be creating a tutorial about how to use XCode 2.4.x with FPC and JEDI-SDL, incase some developers don't want to use Lazarus on MacOS X.

14-11-2006, 07:51 PM
I think it would be more consistent to change this to http://www.pascalgamedevelopment.com/ as Dean has indicated that DelphiGamer may change in future.


I am actually really looking forward to your article as I had to give up on the XCode plugin...

14-11-2006, 09:22 PM


I am actually really looking forward to your article as I had to give up on the XCode plugin...

I have a 2D JEDI-SDL Project template which is 99% done. If I could just get the project renaming done it would be ready. I'm hoping that Jonas can point me in the right direction on that one.

18-11-2006, 05:06 PM
OK the 2D Project template now works and I have posted my basic XCode instructions in this - http://www.pascalgamedevelopment.com/viewtopic.php?p=27487 thread.
All feedback or corrections welcome.

27-11-2006, 11:40 AM
A MacOS X Disk Image is now available from
http://jedi-sdl.pascalgamedevelopment.com/files/JEDI-SDL.dmg, which contains both the JEDI-SDL framework and the 2D and 3D project templates. The only thing left to add to these are the ability to make them double clickable from within *Finder* so that they can be executed like normal MacOS X exes. Currently they behave more like UNIX exes.

02-12-2008, 07:48 AM
Hi Savage, where did the dmg go?

Was it no longer useful?

05-12-2008, 07:11 PM

06-12-2008, 02:08 PM
I stopped supporting it as I never got any feedback, but I would need to sit down one week-end and create another more updated dmg. Realistically you don't need it if you plan to use JEDI-SDL. Also keep in mind that FPC/Lazarus ships with some JEDI-SDL headers.

07-12-2008, 12:15 AM

I have installed sdl but I can't seem to get the examples to compile - can you tell me if the examples are supposed to run with mac os? If so I will have another crack at it.