I set a simple tweak using theos following the tutorial here. However when I run make with the headers from here, I get
Making all for tweak WelcomeWagon...
You don't need to import the dumped Springboard headers.
I found the same problem with current version of Ryan Petrich's dumped headers today.
Finally I find out that the solution is,
Import the dumped Springboard headers
Copy /System/Library/Frameworks/IOSurface.framework/Headers/IOSurfaceAPI.h to /opt/theos/include/IOSurface. The reason is in IOSurface/IOSurface.h!
If you are running OS X Lion or later, you may need to comment out the following lines in /opt/theos/include/IOSurface/IOSurfaceAPI.h:
/* This call lets you get an xpcobject_t that holds a reference to the IOSurface. Note: Any live XPC objects created from an IOSurfaceRef implicity increase the IOSurface's global use count by one until the object is destroyed. */ // xpc_object_t IOSurfaceCreateXPCObject(IOSurfaceRef aSurface) // IOSFC_AVAILABLE_STARTING(_MAC_10_7, __IPHONE_NA); /* This call lets you take an xpcobject_t created via IOSurfaceCreatePort() and recreate an IOSurfaceRef from it. */ // IOSurfaceRef IOSurfaceLookupFromXPCObject(xpc_object_t xobj) // IOSFC_AVAILABLE_STARTING(_MAC_10_7, __IPHONE_NA);
Give it a try!
I just did this today 02/13/2013 and found the above to be somewhat helpful. With a little brains and the help of Google I found that what you need to do is :
1.) Get the headers - use a Google search for "Ryan Petrich's dumped headers" which will lead you to :https://github.com/rpetrich/iphoneheaders
2.) Use git to clone the repo : git clone https://github.com/rpetrich/iphoneheaders
3.) run make ( I found that I needed to run make as sudo make due to the location of theos being installed under /opt. )
4.) For each "error file not found" I copied the include files into my project.
5.) I believe you should end up with the following folders in your project folder : AccountSettings IOKit SpringBoard ActorKit IOSurface TelephonyUI AppSupport JavaScriptCore Tutorial.plist Availability2.h MIME Tweak.xm ChatKit Makefile Tweak.xm.original CoreFoundation MediaPlayer UIKit CoreGraphics Message WebCore DAVKit MessageUI WebKit DataAccess MusicLibrary control Foundation PhotoLibrary obj GraphicsServices QuartzCore theos
6.) You need to do #2 from the answer above "Copy /System/Library/Frameworks/IOSurface.framework/Headers/IOSurfaceAPI.h to /opt/theos/include/IOSurface. The reason is in IOSurface/IOSurface.h!"
7.) You also need to make the edit from the answer above "If you are running OS X Lion, you may need to comment out the following lines in /opt/theos/include/IOSurface/IOSurfaceAPI.h:"
/* This call lets you get an xpcobject_t that holds a reference to the IOSurface.
Note: Any live XPC objects created from an IOSurfaceRef implicity increase the IOSurface's global use
count by one until the object is destroyed. */
// xpc_object_t IOSurfaceCreateXPCObject(IOSurfaceRef aSurface)
// IOSFC_AVAILABLE_STARTING(_MAC_10_7, __IPHONE_NA);
/* This call lets you take an xpcobject_t created via IOSurfaceCreatePort() and recreate an IOSurfaceRef from it. */
// IOSurfaceRef IOSurfaceLookupFromXPCObject(xpc_object_t xobj)
// IOSFC_AVAILABLE_STARTING(_MAC_10_7, __IPHONE_NA);
FYI in my IOSurfaceAPI.h these were lines around line number 252/253