The first two files enables building of plugins under macosx.

The third is for actually loading the plugins in blender.
For some reason its not identifying the plugins correctly,
but it compiles and runs so I'm including it hoping someone else
might see where I've messed things up...

I have a simple example at http://www.cs.umn.edu/~mein/test.tgz that
works, if anyone is interested in playing with it.

Kent
This commit is contained in:
Kent Mein 2003-02-21 15:37:55 +00:00
parent ad12d5ce67
commit 763da870b6
3 changed files with 38 additions and 6 deletions

View File

@ -81,7 +81,7 @@ all:
NOPLUGINS="true" NOSTRIP="true"
endif
ifeq ($(OS),darwin)
@$(MAKE) pkg TYPE="" TAR="tar cf" EXT0"=.app" EXT1=".tar" NOPLUGINS="true" \
@$(MAKE) pkg TYPE="" TAR="tar cf" EXT0"=.app" EXT1=".tar" \
COMPRESS="gzip -f --best" EXT2=".gz"
endif

View File

@ -74,8 +74,8 @@ elif ( test $UNAME = "Darwin" ) then
CC="cc";
CFLAGS="-fPIC -funsigned-char -O2 -fno-common";
LD="cc";
LDFLAGS=" -dynamiclib -lm";
EXT="dylib";
LDFLAGS=" -bundle -bundle_loader ../../blender.app/Contents/MacOS/blender -lm";
EXT="so";
fi
if ( test "$#" = "1" ) then

View File

@ -36,6 +36,10 @@
#include <config.h>
#endif
#if !defined(CHAR_MAX)
#define CHAR_MAX 255
#endif
/*
* XXX, should use mallocN so we can see
* handle's not being released. fixme zr
@ -100,13 +104,40 @@ void PIL_dynlib_close(PILdynlib *lib) {
#else
#ifdef __APPLE__
#include <mach-o/dyld.h>
struct PILdynlib {
NSModule *handle;
};
PILdynlib *PIL_dynlib_open(char *name) {
return NULL;
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) {
return NULL;
char *name;
NSSymbol cr;
int size;
size = strlen(symname) + 2 * sizeof(char);
if (size < CHAR_MAX) {
name = MEM_mallocN(size, "temp string");
sprintf(&name, "_%s",symname);
cr = NSLookupSymbolInModule(lib->handle, name);
free(name);
return NSAddressOfSymbol(cr);
}
return NULL;
}
char *PIL_dynlib_get_error_as_string(PILdynlib* lib) {
@ -114,7 +145,8 @@ char *PIL_dynlib_get_error_as_string(PILdynlib* lib) {
}
void PIL_dynlib_close(PILdynlib *lib) {
;
NSUnLinkModule(lib->handle,NSUNLINKMODULE_OPTION_NONE);
free(lib);
}
#else /* Unix */