diff options
author | Bill Hoffman <bill.hoffman@kitware.com> | 2006-02-16 15:35:18 (GMT) |
---|---|---|
committer | Bill Hoffman <bill.hoffman@kitware.com> | 2006-02-16 15:35:18 (GMT) |
commit | 4c1ae1b5af850e98559d0cc74295e3bb043d8c8e (patch) | |
tree | 8b5f9aea8ae996e852870d6062c0c050257066a7 /Source/cmDynamicLoader.cxx | |
parent | 036fd2134d0c5f3f586eb5150854e373a8f25a9d (diff) | |
download | CMake-4c1ae1b5af850e98559d0cc74295e3bb043d8c8e.zip CMake-4c1ae1b5af850e98559d0cc74295e3bb043d8c8e.tar.gz CMake-4c1ae1b5af850e98559d0cc74295e3bb043d8c8e.tar.bz2 |
ENH: fix for bug 2808, use dlopen on new OSX versions
Diffstat (limited to 'Source/cmDynamicLoader.cxx')
-rw-r--r-- | Source/cmDynamicLoader.cxx | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/Source/cmDynamicLoader.cxx b/Source/cmDynamicLoader.cxx index 4905531..8c80188 100644 --- a/Source/cmDynamicLoader.cxx +++ b/Source/cmDynamicLoader.cxx @@ -18,9 +18,9 @@ // This file is actually several different implementations. // 1. HP machines which uses shl_load -// 2. Apple OSX which uses NSLinkModule +// 2. Mac OS X 10.2.x and earlier which uses NSLinkModule // 3. Windows which uses LoadLibrary -// 4. Most unix systems which use dlopen (default ) +// 4. Most unix systems (including Mac OS X 10.3 and later) which use dlopen (default) // Each part of the ifdef contains a complete implementation for // the static methods of cmDynamicLoader. @@ -147,10 +147,10 @@ const char* cmDynamicLoader::LastError() // --------------------------------------------------------------- -// 2. Implementation for Darwin (including OSX) Machines - +// 2. Implementation for Mac OS X 10.2.x and earlier #ifdef __APPLE__ -#define CMDYNAMICLOADER_DEFINED +#if MAC_OS_X_VERSION_MIN_REQUIRED < 1030 +#define CMDYNAMICLOADER_DEFINED 1 #include <mach-o/dyld.h> cmLibHandle cmDynamicLoader::OpenLibrary(const char* libname ) @@ -169,7 +169,7 @@ cmLibHandle cmDynamicLoader::OpenLibrary(const char* libname ) { return 0; } - lh = NSLinkModule(image, libname, TRUE); + lh = NSLinkModule(image, libname, NSLINKMODULE_OPTION_BINDNOW); if(lh) { cmDynamicLoaderCache::GetInstance()->CacheFile(libname, lh); @@ -179,10 +179,7 @@ cmLibHandle cmDynamicLoader::OpenLibrary(const char* libname ) int cmDynamicLoader::CloseLibrary(cmLibHandle lib) { - // we have to use lib because the macro may not... - (void)lib; - - NSUnLinkModule((NSModule)lib, FALSE); + NSUnLinkModule((NSModule)lib, NSUNLINKMODULE_OPTION_NONE); return 1; } @@ -208,6 +205,7 @@ const char* cmDynamicLoader::LastError() } #endif +#endif @@ -290,7 +288,7 @@ const char* cmDynamicLoader::LastError() // 4. Implementation for default UNIX machines. // if nothing has been defined then use this #ifndef CMDYNAMICLOADER_DEFINED -#define CMDYNAMICLOADER_DEFINED +#define CMDYNAMICLOADER_DEFINED 1 // Setup for most unix machines #include <dlfcn.h> |