65 lines
2.2 KiB
Plaintext
65 lines
2.2 KiB
Plaintext
#include "RegisterMonoModules.h"
|
|
#include "RegisterFeatures.h"
|
|
#include <csignal>
|
|
|
|
// Hack to work around iOS SDK 4.3 linker problem
|
|
// we need at least one __TEXT, __const section entry in main application .o files
|
|
// to get this section emitted at right time and so avoid LC_ENCRYPTION_INFO size miscalculation
|
|
static const int constsection = 0;
|
|
|
|
void UnityInitTrampoline();
|
|
|
|
// WARNING: this MUST be c decl (NSString ctor will be called after +load, so we cant really change its value)
|
|
const char* AppControllerClassName = "UnityAppController";
|
|
|
|
#if UNITY_USES_DYNAMIC_PLAYER_LIB
|
|
extern "C" void SetAllUnityFunctionsForDynamicPlayerLib();
|
|
#endif
|
|
|
|
int main(int argc, char* argv[])
|
|
{
|
|
#if UNITY_USES_DYNAMIC_PLAYER_LIB
|
|
SetAllUnityFunctionsForDynamicPlayerLib();
|
|
#endif
|
|
|
|
UnityInitStartupTime();
|
|
@autoreleasepool
|
|
{
|
|
UnityInitTrampoline();
|
|
UnityInitRuntime(argc, argv);
|
|
|
|
RegisterMonoModules();
|
|
NSLog(@"-> registered mono modules %p\n", &constsection);
|
|
RegisterFeatures();
|
|
|
|
// iOS terminates open sockets when an application enters background mode.
|
|
// The next write to any of such socket causes SIGPIPE signal being raised,
|
|
// even if the request has been done from scripting side. This disables the
|
|
// signal and allows Mono to throw a proper C# exception.
|
|
std::signal(SIGPIPE, SIG_IGN);
|
|
|
|
UIApplicationMain(argc, argv, nil, [NSString stringWithUTF8String: AppControllerClassName]);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
#if TARGET_IPHONE_SIMULATOR && TARGET_TVOS_SIMULATOR
|
|
|
|
#include <pthread.h>
|
|
|
|
extern "C" int pthread_cond_init$UNIX2003(pthread_cond_t *cond, const pthread_condattr_t *attr)
|
|
{ return pthread_cond_init(cond, attr); }
|
|
extern "C" int pthread_cond_destroy$UNIX2003(pthread_cond_t *cond)
|
|
{ return pthread_cond_destroy(cond); }
|
|
extern "C" int pthread_cond_wait$UNIX2003(pthread_cond_t *cond, pthread_mutex_t *mutex)
|
|
{ return pthread_cond_wait(cond, mutex); }
|
|
extern "C" int pthread_cond_timedwait$UNIX2003(pthread_cond_t *cond, pthread_mutex_t *mutex,
|
|
const struct timespec *abstime)
|
|
{ return pthread_cond_timedwait(cond, mutex, abstime); }
|
|
|
|
#endif // TARGET_IPHONE_SIMULATOR && TARGET_TVOS_SIMULATOR
|
|
|
|
#include <string>
|
|
void VerifyiPhoneSplashScreen(std::string const&) {}
|