Changed order of #ifdefs to get native version on OS/2, even if
dlopen-wrapper is available. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@5689 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -33,7 +33,13 @@
|
|||||||
# endif // Unix flavour
|
# endif // Unix flavour
|
||||||
#endif // !Unix or already have some HAVE_xxx defined
|
#endif // !Unix or already have some HAVE_xxx defined
|
||||||
|
|
||||||
#if defined(HAVE_DLOPEN)
|
// Note: WXPM/EMX has to be tested first, since we want to use
|
||||||
|
// native version, even if configure detected presence of DLOPEN.
|
||||||
|
#if defined(__WXPM__) || defined(__EMX__)
|
||||||
|
# define INCL_DOS
|
||||||
|
# include <os2.h>
|
||||||
|
typedef HMODULE wxDllType;
|
||||||
|
#elif defined(HAVE_DLOPEN)
|
||||||
# include <dlfcn.h>
|
# include <dlfcn.h>
|
||||||
typedef void *wxDllType;
|
typedef void *wxDllType;
|
||||||
#elif defined(HAVE_SHL_LOAD)
|
#elif defined(HAVE_SHL_LOAD)
|
||||||
@@ -42,10 +48,6 @@
|
|||||||
#elif defined(__WINDOWS__)
|
#elif defined(__WINDOWS__)
|
||||||
# include <windows.h> // needed to get HMODULE
|
# include <windows.h> // needed to get HMODULE
|
||||||
typedef HMODULE wxDllType;
|
typedef HMODULE wxDllType;
|
||||||
#elif defined(__OS2__)
|
|
||||||
# define INCL_DOS
|
|
||||||
# include <os2.h>
|
|
||||||
typedef HMODULE wxDllType;
|
|
||||||
#elif defined(__WXMAC__)
|
#elif defined(__WXMAC__)
|
||||||
typedef CFragConnectionID wxDllType;
|
typedef CFragConnectionID wxDllType;
|
||||||
#else
|
#else
|
||||||
|
@@ -41,7 +41,13 @@
|
|||||||
// conditional compilation
|
// conditional compilation
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
#if defined(HAVE_DLOPEN)
|
#if defined(__WXPM__) || defined(__EMX__)
|
||||||
|
# define INCL_DOS
|
||||||
|
# include <os2.h>
|
||||||
|
# define wxDllOpen(error, lib, handle) DosLoadModule(error, sizeof(error), lib, &handle)
|
||||||
|
# define wxDllGetSymbol(handle, modaddr) DosQueryProcAddr(handle, 1L, NULL, (PFN*)modaddr)
|
||||||
|
# define wxDllClose(handle) DosFreeModule(handle)
|
||||||
|
#elif defined(HAVE_DLOPEN)
|
||||||
# define wxDllOpen(lib) dlopen(lib.fn_str(), RTLD_NOW/*RTLD_LAZY*/)
|
# define wxDllOpen(lib) dlopen(lib.fn_str(), RTLD_NOW/*RTLD_LAZY*/)
|
||||||
# define wxDllGetSymbol(handle, name) dlsym(handle, name.mb_str())
|
# define wxDllGetSymbol(handle, name) dlsym(handle, name.mb_str())
|
||||||
# define wxDllClose dlclose
|
# define wxDllClose dlclose
|
||||||
@@ -66,14 +72,6 @@
|
|||||||
# endif // Win32/16
|
# endif // Win32/16
|
||||||
# define wxDllGetSymbol(handle, name) ::GetProcAddress(handle, name)
|
# define wxDllGetSymbol(handle, name) ::GetProcAddress(handle, name)
|
||||||
# define wxDllClose ::FreeLibrary
|
# define wxDllClose ::FreeLibrary
|
||||||
|
|
||||||
#elif defined(__OS2__)
|
|
||||||
|
|
||||||
# define INCL_DOS
|
|
||||||
# include <os2.h>
|
|
||||||
# define wxDllOpen(error, lib, handle) DosLoadModule(error, sizeof(error), lib, &handle)
|
|
||||||
# define wxDllGetSymbol(handle, modaddr) DosQueryProcAddr(handle, 1L, NULL, (PFN*)modaddr)
|
|
||||||
# define wxDllClose(handle) DosFreeModule(handle)
|
|
||||||
#else
|
#else
|
||||||
# error "Don't know how to load shared libraries on this platform."
|
# error "Don't know how to load shared libraries on this platform."
|
||||||
#endif // OS
|
#endif // OS
|
||||||
@@ -94,14 +92,14 @@ static wxString ConstructLibraryName(const wxString& basename)
|
|||||||
{
|
{
|
||||||
wxString fullname(basename);
|
wxString fullname(basename);
|
||||||
|
|
||||||
#if defined(__UNIX__)
|
#if defined(__WINDOWS__) || defined(__WXPM__) || defined(__EMX__)
|
||||||
|
fullname << ".dll";
|
||||||
|
#elif defined(__UNIX__)
|
||||||
# if defined(__HPUX__)
|
# if defined(__HPUX__)
|
||||||
fullname << ".sl";
|
fullname << ".sl";
|
||||||
# else //__HPUX__
|
# else //__HPUX__
|
||||||
fullname << ".so";
|
fullname << ".so";
|
||||||
# endif //__HPUX__
|
# endif //__HPUX__
|
||||||
#elif defined(__WINDOWS__) || defined(__OS2__)
|
|
||||||
fullname << ".dll";
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return fullname;
|
return fullname;
|
||||||
@@ -184,7 +182,7 @@ void *wxLibrary::GetSymbol(const wxString& symbname)
|
|||||||
wxDllType
|
wxDllType
|
||||||
wxDllLoader::GetProgramHandle(void)
|
wxDllLoader::GetProgramHandle(void)
|
||||||
{
|
{
|
||||||
#if defined( HAVE_DLOPEN )
|
#if defined( HAVE_DLOPEN ) && !defined(__EMX__)
|
||||||
// optain handle for main program
|
// optain handle for main program
|
||||||
return dlopen(NULL, RTLD_NOW/*RTLD_LAZY*/);
|
return dlopen(NULL, RTLD_NOW/*RTLD_LAZY*/);
|
||||||
#elif defined (HAVE_SHL_LOAD)
|
#elif defined (HAVE_SHL_LOAD)
|
||||||
@@ -215,7 +213,7 @@ wxDllLoader::LoadLibrary(const wxString & libname, bool *success)
|
|||||||
wxASSERT_MSG( 1 , (char*)myErrName ) ;
|
wxASSERT_MSG( 1 , (char*)myErrName ) ;
|
||||||
return NULL ;
|
return NULL ;
|
||||||
}
|
}
|
||||||
#elif defined(__OS2__)
|
#elif defined(__WXPM__) || defined(__EMX__)
|
||||||
char zError[256] = "";
|
char zError[256] = "";
|
||||||
wxDllOpen(zError, libname, handle);
|
wxDllOpen(zError, libname, handle);
|
||||||
#else // !Mac
|
#else // !Mac
|
||||||
@@ -259,7 +257,7 @@ wxDllLoader::GetSymbol(wxDllType dllHandle, const wxString &name)
|
|||||||
|
|
||||||
if ( FindSymbol( dllHandle , symName , &symAddress , &symClass ) == noErr )
|
if ( FindSymbol( dllHandle , symName , &symAddress , &symClass ) == noErr )
|
||||||
symbol = (void *)symAddress ;
|
symbol = (void *)symAddress ;
|
||||||
#elif defined( __OS2__ )
|
#elif defined( __WXPM__ ) || defined(__EMX__)
|
||||||
wxDllGetSymbol(dllHandle, symbol);
|
wxDllGetSymbol(dllHandle, symbol);
|
||||||
#else
|
#else
|
||||||
symbol = wxDllGetSymbol(dllHandle, name);
|
symbol = wxDllGetSymbol(dllHandle, name);
|
||||||
|
Reference in New Issue
Block a user