forked from bartvdbraak/blender
Douglas Bischoff's Fix for Plugins on OSX.
Kent
This commit is contained in:
parent
efa0a97dfb
commit
9bcf2dcd1c
@ -74,7 +74,7 @@ elif ( test $UNAME = "Darwin" ) then
|
|||||||
CC="cc";
|
CC="cc";
|
||||||
CFLAGS="-fPIC -funsigned-char -O2 -fno-common";
|
CFLAGS="-fPIC -funsigned-char -O2 -fno-common";
|
||||||
LD="cc";
|
LD="cc";
|
||||||
LDFLAGS=" -bundle -bundle_loader ../../blender.app/Contents/MacOS/blender -lm";
|
LDFLAGS="-flat_namespace -bundle -bundle_loader ../../blender.app/Contents/MacOS/blender -ldl -lm";
|
||||||
EXT="so";
|
EXT="so";
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -102,62 +102,7 @@ void PIL_dynlib_close(PILdynlib *lib) {
|
|||||||
free(lib);
|
free(lib);
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else /* Unix & MacOS X */
|
||||||
#ifdef __APPLE__
|
|
||||||
#include <mach-o/dyld.h>
|
|
||||||
|
|
||||||
struct PILdynlib {
|
|
||||||
NSModule *handle;
|
|
||||||
};
|
|
||||||
|
|
||||||
PILdynlib *PIL_dynlib_open(char *name) {
|
|
||||||
NSObjectFileImage img;
|
|
||||||
|
|
||||||
PILdynlib *lib= malloc(sizeof(*lib));
|
|
||||||
if (NSCreateObjectFileImageFromFile( name, &img) ==
|
|
||||||
NSObjectFileImageSuccess) {
|
|
||||||
lib->handle = NSLinkModule( img, name, NSLINKMODULE_OPTION_BINDNOW);
|
|
||||||
NSDestroyObjectFileImage(img);
|
|
||||||
return lib;
|
|
||||||
}
|
|
||||||
free(lib);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
void *PIL_dynlib_find_symbol(PILdynlib* lib, char *symname) {
|
|
||||||
char *name;
|
|
||||||
NSSymbol cr;
|
|
||||||
int size;
|
|
||||||
|
|
||||||
size = strlen(symname) + 2 * sizeof(char);
|
|
||||||
if (size < CHAR_MAX) {
|
|
||||||
name = MEM_mallocN(size, symname);
|
|
||||||
sprintf(&name, "_%s",symname);
|
|
||||||
printf("\nouchie name =%s\n",name);
|
|
||||||
cr = NSLookupSymbolInModule(lib->handle, name);
|
|
||||||
free(name);
|
|
||||||
return NSAddressOfSymbol(cr);
|
|
||||||
}
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
char *PIL_dynlib_get_error_as_string(PILdynlib* lib) {
|
|
||||||
char *string;
|
|
||||||
int *errorNumber;
|
|
||||||
NSLinkEditErrors *c;
|
|
||||||
char *filename, *errorstr;
|
|
||||||
|
|
||||||
NSLinkEditError(&c,&errorNumber,&filename,&errorstr);
|
|
||||||
sprintf(string,"%d :%s: %s",errorNumber,filename,errorstr);
|
|
||||||
return string;
|
|
||||||
}
|
|
||||||
|
|
||||||
void PIL_dynlib_close(PILdynlib *lib) {
|
|
||||||
NSUnLinkModule(lib->handle,NSUNLINKMODULE_OPTION_NONE);
|
|
||||||
free(lib);
|
|
||||||
}
|
|
||||||
|
|
||||||
#else /* Unix */
|
|
||||||
|
|
||||||
#include <dlfcn.h>
|
#include <dlfcn.h>
|
||||||
|
|
||||||
@ -193,4 +138,3 @@ void PIL_dynlib_close(PILdynlib *lib) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
Loading…
Reference in New Issue
Block a user