From: <sm...@us...> - 2008-10-14 20:04:45
|
Revision: 8893 http://plplot.svn.sourceforge.net/plplot/?rev=8893&view=rev Author: smekal Date: 2008-10-14 20:04:30 +0000 (Tue, 14 Oct 2008) Log Message: ----------- Added ltdl_win32.c which provides parts of the API of the ltdl library in win32. I didn't look at the source code of the ltdl library (which also provides win32 code presumably), I just provided the necessary API to fulfill the dependencies of plcore.c and make it run. Therefore the code is under LGPL and not dependent on the ltdl license (whatever it is). Changed the CMakeLists.txt file accordingly to include the new code for the win32 case. Minor changes to plcore.c for that case as well (LTDL_WIN32 gets defined for win32 (but not if MSYS or CYGWIN)). Modified Paths: -------------- trunk/src/CMakeLists.txt trunk/src/plcore.c Added Paths: ----------- trunk/src/ltdl_win32.c Modified: trunk/src/CMakeLists.txt =================================================================== --- trunk/src/CMakeLists.txt 2008-10-14 07:48:25 UTC (rev 8892) +++ trunk/src/CMakeLists.txt 2008-10-14 20:04:30 UTC (rev 8893) @@ -50,6 +50,9 @@ plvect.c mt19937ar.c ) +if(LTDL_WIN32) + set(plplot${LIB_TAG}_LIB_SRCS ${plplot${LIB_TAG}_LIB_SRCS} ltdl_win32.c) +endif(LTDL_WIN32) if(BUILD_SHARED_LIBS) SET_SOURCE_FILES_PROPERTIES(${plplot${LIB_TAG}_LIB_SRCS} Added: trunk/src/ltdl_win32.c =================================================================== --- trunk/src/ltdl_win32.c (rev 0) +++ trunk/src/ltdl_win32.c 2008-10-14 20:04:30 UTC (rev 8893) @@ -0,0 +1,76 @@ +/* $Id$ + + Contains all prototypes for driver functions. + + Copyright (C) 2008 Werner Smekal + + This file is part of PLplot. + + PLplot is free software; you can redistribute it and/or modify + it under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + PLplot is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with PLplot; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +*/ + +#include <windows.h> + +#include "ltdl_win32.h" + +lt_dlhandle lastHandle=NULL; + +void lt_dlinit( void ) +{ + lastHandle=NULL; +} + +void lt_dlexit( void ) +{ + lt_dlhandle prev; + + while( lastHandle!=NULL ) { + if( lastHandle->hinstLib ) + FreeLibrary( lastHandle->hinstLib ); + prev=lastHandle->previousHandle; + free( lastHandle ); + lastHandle=prev; + } +} + +lt_dlhandle lt_dlopenext( char* dllname ) +{ + lt_dlhandle dlhandle=malloc( sizeof(lt_dlhandle) ); + memset( dlhandle, '\0', sizeof(lt_dlhandle) ); + + dlhandle->hinstLib = LoadLibrary( dllname ); + if( !dlhandle->hinstLib ) { + free( dlhandle ); + return NULL; + } + + dlhandle->previousHandle = lastHandle; + lastHandle = dlhandle; + + return dlhandle; +} + +const char* lt_dlerror() +{ + static char* text="No error information"; + + return text; +} + +void* lt_dlsym( lt_dlhandle dlhandle, const char* symbol ) +{ + return GetProcAddress( dlhandle->hinstLib, symbol ); +} Property changes on: trunk/src/ltdl_win32.c ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Modified: trunk/src/plcore.c =================================================================== --- trunk/src/plcore.c 2008-10-14 07:48:25 UTC (rev 8892) +++ trunk/src/plcore.c 2008-10-14 20:04:30 UTC (rev 8893) @@ -38,7 +38,11 @@ #include "plcore.h" #ifdef ENABLE_DYNDRIVERS -#include <ltdl.h> + #ifndef LTDL_WIN32 + #include <ltdl.h> + #else + #include "ltdl_win32.h" + #endif #endif /*--------------------------------------------------------------------------*\ @@ -2114,7 +2118,7 @@ plsc->dispatch_table = dispatch_table[plsc->device - 1]; } -int PLDLLIMPEXP plInBuildTree() +PLDLLIMPEXP int plInBuildTree() { static int inited = 0; static int inBuildTree = 0; @@ -2179,6 +2183,8 @@ } } + printf("plGetDrvDir(): drvdir=%s\n", drvdir ); + return drvdir; } @@ -2547,7 +2553,11 @@ if (!driver->dlhand) { char drvspec[ 400 ]; +#ifdef LTDL_WIN32 + sprintf( drvspec, "%s", driver->drvnam ); +#else sprintf( drvspec, "%s/%s", plGetDrvDir (), driver->drvnam ); +#endif /* LTDL_WIN32 */ pldebug("plLoadDriver", "Trying to load %s on %s\n", driver->drvnam, drvspec ); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |