| 
					
				 | 
			
			
				@@ -12,20 +12,63 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #include "DynamicLoader.hxx.in" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// This file is actually 3 different implementations. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// 1. HP machines which uses shl_load 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// 2. Mac OS X 10.2.x and earlier which uses NSLinkModule 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// 3. Windows which uses LoadLibrary 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// 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 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// This file actually contains several different implementations: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// * NOOP for environments without dynamic libs 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// * HP machines which uses shl_load 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// * Mac OS X 10.2.x and earlier which uses NSLinkModule 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// * Windows which uses LoadLibrary 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// * BeOS / Haiku 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// * FreeMiNT for Atari 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// * Default implementation for *NIX systems (including Mac OS X 10.3 and 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//   later) which use dlopen 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// Each part of the ifdef contains a complete implementation for 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // the static methods of DynamicLoader. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// --------------------------------------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// 1. Implementation for HPUX  machines 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#ifdef __hpux 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#if !KWSYS_SUPPORTS_SHARED_LIBS 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//---------------------------------------------------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// Implementation for environments without dynamic libs 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <string.h> // for strerror() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+namespace KWSYS_NAMESPACE { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//---------------------------------------------------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+DynamicLoader::LibraryHandle DynamicLoader::OpenLibrary( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const std::string& libname) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//---------------------------------------------------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+int DynamicLoader::CloseLibrary(DynamicLoader::LibraryHandle lib) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (!lib) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//---------------------------------------------------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+DynamicLoader::SymbolPointer DynamicLoader::GetSymbolAddress( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  DynamicLoader::LibraryHandle lib, const std::string& sym) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//---------------------------------------------------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const char* DynamicLoader::LastError() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return "General error"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} // namespace KWSYS_NAMESPACE 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#elif defined(__hpux) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//---------------------------------------------------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// Implementation for HPUX  machines 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #include <dl.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #include <errno.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define DYNAMICLOADER_DEFINED 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 namespace KWSYS_NAMESPACE { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -88,15 +131,11 @@ const char* DynamicLoader::LastError() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } // namespace KWSYS_NAMESPACE 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#endif //__hpux 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// --------------------------------------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// 2. Implementation for Mac OS X 10.2.x and earlier 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#ifdef __APPLE__ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#if MAC_OS_X_VERSION_MAX_ALLOWED < 1030 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#elif defined(__APPLE__) && (MAC_OS_X_VERSION_MAX_ALLOWED < 1030) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//---------------------------------------------------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// Implementation for Mac OS X 10.2.x and earlier 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #include <mach-o/dyld.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #include <string.h> // for strlen 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define DYNAMICLOADER_DEFINED 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 namespace KWSYS_NAMESPACE { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -160,14 +199,10 @@ const char* DynamicLoader::LastError() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } // namespace KWSYS_NAMESPACE 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#endif // MAC_OS_X_VERSION_MAX_ALLOWED < 1030 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#endif // __APPLE__ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// --------------------------------------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// 3. Implementation for Windows win32 code but not cygwin 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#if defined(_WIN32) && !defined(__CYGWIN__) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#elif defined(_WIN32) && !defined(__CYGWIN__) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//---------------------------------------------------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// Implementation for Windows win32 code but not cygwin 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #include <windows.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define DYNAMICLOADER_DEFINED 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 namespace KWSYS_NAMESPACE { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -263,19 +298,14 @@ const char* DynamicLoader::LastError() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } // namespace KWSYS_NAMESPACE 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#endif //_WIN32 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// --------------------------------------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// 4. Implementation for BeOS 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#if defined __BEOS__ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#elif defined(__BEOS__) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//---------------------------------------------------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// Implementation for BeOS / Haiku 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #include <string.h> // for strerror() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #include <be/kernel/image.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #include <be/support/Errors.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define DYNAMICLOADER_DEFINED 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 namespace KWSYS_NAMESPACE { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 static image_id last_dynamic_err = B_OK; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -351,54 +381,10 @@ const char* DynamicLoader::LastError() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } // namespace KWSYS_NAMESPACE 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// --------------------------------------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// 5. Implementation for systems without dynamic libs 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// __gnu_blrts__ is IBM BlueGene/L 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// __LIBCATAMOUNT__ is defined on Catamount on Cray compute nodes 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#if defined(__gnu_blrts__) || defined(__LIBCATAMOUNT__) ||                    \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  defined(__CRAYXT_COMPUTE_LINUX_TARGET) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#include <string.h> // for strerror() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define DYNAMICLOADER_DEFINED 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-namespace KWSYS_NAMESPACE { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//---------------------------------------------------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-DynamicLoader::LibraryHandle DynamicLoader::OpenLibrary( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  const std::string& libname) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  return 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#elif defined(__MINT__) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 //---------------------------------------------------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-int DynamicLoader::CloseLibrary(DynamicLoader::LibraryHandle lib) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  if (!lib) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    return 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  return 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//---------------------------------------------------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-DynamicLoader::SymbolPointer DynamicLoader::GetSymbolAddress( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  DynamicLoader::LibraryHandle lib, const std::string& sym) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  return 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//---------------------------------------------------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-const char* DynamicLoader::LastError() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  return "General error"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} // namespace KWSYS_NAMESPACE 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#ifdef __MINT__ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define DYNAMICLOADER_DEFINED 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// Implementation for FreeMiNT on Atari 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #define _GNU_SOURCE /* for program_invocation_name */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #include <dld.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #include <errno.h> 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -447,14 +433,11 @@ const char* DynamicLoader::LastError() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } // namespace KWSYS_NAMESPACE 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// --------------------------------------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// 6. Implementation for default UNIX machines. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// if nothing has been defined then use this 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#ifndef DYNAMICLOADER_DEFINED 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#define DYNAMICLOADER_DEFINED 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// Setup for most unix machines 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//---------------------------------------------------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// Default implementation for *NIX systems (including Mac OS X 10.3 and 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// later) which use dlopen 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #include <dlfcn.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 namespace KWSYS_NAMESPACE { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -498,5 +481,4 @@ const char* DynamicLoader::LastError() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } // namespace KWSYS_NAMESPACE 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #endif 
			 |