iPhone support?

It’s already in CVS, so I’d expect iPhone functionality to be in the buildbot version, or the next version of Panda.

cool thanx!

Is that true?

AFAIK, it is. Better ask rdb or drwr to make sure, though.

Basic iPhone support has been in CVS for a while now, but it’s still rudimentary and it’s not straightforward to build.

There’s nothing new in CVS. The only iPhone support there is the same experimental support that’s been there since Panda3D 1.6 or so.

As I said a few posts up: no one is actively working on this at the moment. If anyone is interested in doing so, or knows someone who is, we’d love to hear from you.

David

Hi people, i’m thinking adquire a Iphone4 but i like program in Panda3d and i read this post and i have the question Panda3d work fine with the plataform of Iphone?

If yes, how i can run an aplication of Panda3D on Iphone?
And i can create all the aspects and shadows on a Game and it will run on Iphone? or Iphone doesn’t support?

Thanks for answers,
André.

As the most recent posts in this thread indicate, Panda is not really supported on the iPhone. There is some experimental, but incomplete, iPhone support.

If you want more, you will have to be tech-savvy enough to provide it yourself.

David

Hum thanks David, and with Android its the same thing?

Thanks,
André.

I of course can’t speak for David, but I think so. I think if you want your Panda game to work on mobile devices right now, you have 2 options (as I see it):

  • Port Panda to the mobile OS you want your game to run on. This benefits the Panda community as a whole
  • Design/refactor your code so it isn’t completely reliant upon Panda, and write a backend for your game that uses some library (like PyGame + PyOpenGL, or some custom C\C++) that does work on the mobile OS you want your game to run on. This is the option I’m currently going with, as it’s easier for me, as I don’t know C++ to well (I also think it’s good OO practice to do this in general, but I digress…)

Neither option is particularly easy (the latter especially so if you’ve already written some code, but this wasn’t the case for me), but they’re both worth it, if you want your game to work on mobile devices.

Hum ok, i thinked on this options to…and probably is what i go to do…

I’ll start studying at the University schedule for phones and I’m still thinking about what I’ll focus.

Thanks,
André.

I wouldn’t mind taking a stab at it. Point me to the repo please.

The CVS repository is in SourceForge, under the project name “panda3d”.

David

Sorry for the delay, but I just found time to move on to working with the iOS support in panda.

I have the source but I’m not sure how I actually build for iOS? I’m on a mac, can I use makepanda?

You’ll need to use ppremake and use the BUILD_IPHONE setting, using the instructions that David posted earlier in this thread.

Thanks, I got it compiling.

Unfortunately it seems the include/library paths are not set. I get build errors regarding not being able to find std c files like types.h.

I’ve also tried creating an “external build project” in xcode but I still get these errors. Any ideas?

Update: I tried setting CPLUS_INCLUDE_PATH, which resolved some issues, but they do seem to go on forever. There must be an easier way to set up the correct include paths

Update2: it appears that and older iphone sdk path is being used (2.0, I 'm using 4.3). I’ve tried grep to find where it is set but so far I have not found it

Update3: Added a -v flag to the compiler and got this output:

ignoring nonexistent directory “/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/usr/include/c++/4.0.0/arm-apple-darwin10”
ignoring nonexistent directory “/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/usr/local/include”
ignoring nonexistent directory “/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/usr/lib/gcc/arm-apple-darwin10/4.0.1/…/…/…/…/arm-apple-darwin10/include”
ignoring nonexistent directory “/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/Library/Frameworks”

Not sure how to get the compiler to use 4.2.1 instead of 4.0.0 (which would solve this directory not found problem)

Look in dtool/pptempl/PostConfig.pp, it contains both the iPhoneOS version and it also gives the command directly to gcc-4.0.

Got it, thanks. I changed to 4.2 (gcc) and it compiles now. Current file is:

// This file is included after including all of $DTOOL/Config.pp and
// the user's personal Config.pp file.  It makes decisions necessary 
// following the user's Config settings.

#if $[and $[OSX_PLATFORM],$[BUILD_IPHONE]]
  //#define IPH_PLATFORM iPhoneSimulator
  #define IPH_PLATFORM $[BUILD_IPHONE]
  #define IPH_VERSION 4.3
  
  #define dev /Developer/Platforms/$[IPH_PLATFORM].platform/Developer
  
  #if $[eq $[IPH_PLATFORM], iPhoneOS]
    #define ARCH_FLAGS -arch armv6 -mcpu=arm1176jzf-s
    #define osflags -fpascal-strings -miphoneos-version-min=4.3
    #define DEBUGFLAGS -gdwarf-2
    //#define DEBUGFLAGS
  #elif $[eq $[IPH_PLATFORM], iPhoneSimulator]
    #define ARCH_FLAGS -arch i386
    #define osflags -fpascal-strings -fasm-blocks -mmacosx-version-min=10.6
    #define DEBUGFLAGS -gdwarf-2
  #else
    #error Inappropriate value for BUILD_IPHONE.
  #endif
  
  #define env env MACOSX_DEPLOYMENT_TARGET=10.6 PATH="$[dev]/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
  #define CC $[env] $[dev]/usr/bin/gcc-4.2
  #define CXX $[env] $[dev]/usr/bin/g++-4.2
  #define OSX_CDEFS __IPHONE_OS_VERSION_MIN_REQUIRED=30200
  #define OSX_CFLAGS -isysroot $[dev]/SDKs/$[IPH_PLATFORM]$[IPH_VERSION].sdk $[osflags]

  #defer ODIR_SUFFIX -$[IPH_PLATFORM]

#endif

I’m on to the actual panda src tree now. First error is:

/bin/sh: /Users/colinn/Projects/panda3d/built/bin/interrogate: Bad CPU type in executable

Which makes sense since this was compiled in dtool with the iphone compiler. Am I supposed to compile dtool for Mac OSX without any of the iPhone stuff in Config.pp and then turn it on afterwards? I’ll give this a try and update with my results.

EDIT:

Rebuilt for Mac OSX and now I get:

interrogate -od Opt1-OSX/libp3express.in -oc Opt1-OSX/libp3express_igate.cxx -DCPPPARSER -D__STDC__=1 -D__cplusplus -D__FLT_EVAL_METHOD__=0  -D__const=const -Dvolatile -Dmutable -D__LITTLE_ENDIAN__ -D__inline__=inline -D__GNUC__ -D__i386__ -S/Users/gongpei/Projects/panda3d/built/include/parser-inc  -I/Users/gongpei/Projects/panda3d/panda -I../pandabase -I/Users/gongpei/Projects/panda3d/built/include -I/usr/include/python2.6   -fnames -string -refcount -assert -python-native  -spam -module "pandaexpress" -library "libp3express" buffer.h ca_bundle_data_src.c checksumHashGenerator.h circBuffer.h compress_string.h config_express.h copy_stream.h datagram.h datagramGenerator.h datagramIterator.h datagramSink.h dcast.h encrypt_string.h error_utils.h export_dtool.h fileReference.h hashGeneratorBase.h hashVal.h indirectLess.h memoryInfo.h memoryUsage.h memoryUsagePointerCounts.h memoryUsagePointers.h multifile.h namable.h nodePointerTo.h nodePointerToBase.h nodeReferenceCount.h openSSLWrapper.h ordered_vector.h pStatCollectorForwardBase.h password_hash.h patchfile.h pointerTo.h pointerToArray.h pointerToArrayBase.h pointerToBase.h pointerToVoid.h profileTimer.h pta_int.h pta_uchar.h pta_double.h pta_float.h pta_stdfloat.h ramfile.h referenceCount.h subStream.h subStreamBuf.h subfileInfo.h temporaryFile.h threadSafePointerTo.h threadSafePointerToBase.h trueClock.h typedReferenceCount.h typedef.h vector_uchar.h vector_double.h vector_float.h vector_stdfloat.h virtualFileList.h virtualFileMount.h virtualFileComposite.h virtualFile.h virtualFileMountMultifile.h virtualFileMountRamdisk.h virtualFileMountSystem.h virtualFileSimple.h virtualFileSystem.h weakPointerCallback.h weakPointerTo.h weakPointerToBase.h weakPointerToVoid.h weakReferenceList.h windowsRegistry.h zStream.h zStreamBuf.h p3express_composite1.cxx p3express_composite2.cxxdyld: Library not loaded: libp3interrogatedb.dylib
  Referenced from: /Users/gongpei/Projects/panda3d/panda/../built/bin/interrogate
  Reason: image not found
Trace/BPT trap

Maybe I will just turn off python integration for now

I’m an Android guy, but I’m really interested to see Panda running on an Iphone. So good luck!

Here is the latest error:


env MACOSX_DEPLOYMENT_TARGET=10.6 PATH="/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin" /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/g++-4.2 -arch armv6 -mcpu=arm1176jzf-s -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk -fpascal-strings -miphoneos-version-min=4.3  -o Opt1-OSX-iPhoneOS/check_adler Opt1-OSX-iPhoneOS/check_adler_check_adler.o    -L../downloader/Opt1-OSX-iPhoneOS -L../express/Opt1-OSX-iPhoneOS -L../pandabase/Opt1-OSX-iPhoneOS -L/Users/gongpei/Projects/panda3d/built/lib -L/Users/gongpei/Projects/panda3d/built/lib -lp3downloader -lp3express -lp3express -lp3pandabase -lp3pandabase -lp3interrogatedb -lp3prc -lp3dconfig -lp3dtoolutil -lp3dtoolbase -lp3pystub -lp3prc -lz  -framework Foundation
Undefined symbols for architecture armv6:
  "_Dtool_TypedReferenceCount", referenced from:
      MemoryUsagePointers::get_python_pointer(int) constin libp3express.a(p3express_p3express_composite1.o)
  "_Dtool_TypedObject", referenced from:
      MemoryUsagePointers::get_python_pointer(int) constin libp3express.a(p3express_p3express_composite1.o)
  "_Dtool_ReferenceCount", referenced from:
      MemoryUsagePointers::get_python_pointer(int) constin libp3express.a(p3express_p3express_composite1.o)
ld: symbol(s) not found for architecture armv6

I’m guessing these symbols should be in dtoolbase?