[LLVMdev] Using LLVM to compile Objective-C on an Xbox 360

Dale Johannesen dalej at apple.com
Wed May 26 18:19:04 PDT 2010


llvm can output C code, but that target has bitrotted severely over the last few months and nobody seems to be interested in fixing it.  You may need to do some work there.  Alternatively you could implement the PPC ABI that you need.  There are several examples of supporting multiple ABIs on the same hardware, x86 being the most obvious.  A lot of simple stuff will probably Just Work with the existing PPC ABI, more complicated stuff may not.  (Only 32-bit PPC is really maintained, though, there are probably lots of problems with 64-bit.)

Objective C in llvm, AFAIK, is only used on the MacOSX targets and only tested there.   There are sufficient secret handshakes between the compiler and the ObjC runtime that it is unlikely to Just Work in an untested environment.  OpenStep has a familial relationship to MacOSX ObjC runtime, but they aren't the same and are unlikely to still be binary compatible at this point.  You may need to do some work there also.

Summary, you can probably get this approach to work, but it's not as easy as you're hoping.

On May 26, 2010, at 5:20 PMPDT, kdubb wrote:

> We are looking at using Objective-C/C++ in a new game engine.  Objective C's duality of being both very dynamic and very "C" gives us exactly what we need to make the SDK and engineering of games simpler.
> 
> This means that we will need a way to compile it on all platforms our games will target.  Currently the major platforms we are concerned with include... PC, Mac, XBox 360, PS3, iPhone.  Now the PC, Mac, iPhone and PS3 are fairly simple.  If we build our own OpenStep libraries we can simply use LLVM to compile directly to these platforms; the PS3 although proprietary uses GCC as a C/C++ compiler so I am assuming Objective-C can be used fairly simply.  This leaves us with the XBox 360.
> 
> The 360 is a special chip (PowerPC based) with, as far as I have researched, a special ABI (Windows derivative).  I haven't the faintest clue of whether code from the LLVM PPC backend would even work on the 360, much less interoperate with the system libraries. So my formulated solution has become this: use an LLVM backend to output C code and then compile that code with using MS's XBox 360 compiler. I believe I have read that LLVM has a C backend already but I don't know how to select it.
> 
> If I can get a proof of concept showing Objective-C code running on the 360 we are off to the races.  Any help is appreciated just not sure if all the pieces/parts exist and/or what I am missing.  So... is this feasible?  If so... how do I get LLVM to output C code?
> 
> Thanks,
> Kevin
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev





More information about the llvm-dev mailing list