MINGW-packages/mingw-w64-plplot/fix-install-dir.patch
Dalan94 f387002684 Fixed plplot qhull link and install dir (#4564)
* Fixed plplot qhull link and install dir

* Fixed indenting and version in plplot
2018-10-21 17:02:45 +03:00

99 lines
1.8 KiB
Diff

--- plplot-5.13.0/src/plctrl.c.orig
+++ plplot-5.13.0/src/plctrl.c
@@ -56,6 +56,10 @@
#include <errno.h>
#endif
+#ifdef _WIN32
+#include <windows.h>
+#endif
+
// Random number generator (Mersenne Twister)
#include "mt19937ar.h"
@@ -68,6 +72,10 @@
// work even in the single precision floating point case.
#define FUZZ_EPSILON 1.e-4
+#ifdef _WIN32
+static HMODULE handle_dll;
+#endif
+
// Static functions
// Used by any external init code to suggest a path
@@ -124,6 +132,41 @@
#endif
#endif
+
+#ifdef _WIN32
+BOOL WINAPI
+DllMain (HINSTANCE hinstDLL,
+ DWORD fdwReason,
+ LPVOID lpvReserved)
+{
+ switch (fdwReason)
+ {
+ case DLL_PROCESS_ATTACH:
+ handle_dll = (HMODULE) hinstDLL;
+ break;
+ }
+
+ return TRUE;
+}
+
+char * plGetWinInstallDir()
+{
+ char *path;
+ char *p;
+
+ path = (char*) malloc(MAX_PATH);
+
+ GetModuleFileName(handle_dll, path, MAX_PATH);
+
+ p = strrchr (path, '\\');
+ *p = '\0';
+ p = strrchr (path, '\\');
+ *p = '\0';
+
+ return path;
+}
+#endif
+
//--------------------------------------------------------------------------
// Routines that deal with colors & color maps.
@@ -2189,6 +2232,14 @@
return fs;
#endif
+#ifdef _WIN32
+ dn = plGetWinInstallDir();
+ plGetName( dn, "bin", fn, &fs );
+ free(dn);
+ if ( !plFindName( fs ) )
+ return fs;
+#endif
+
// Crapped out
free_mem( fs );
@@ -2323,6 +2374,15 @@
if ( file != NULL )
goto done;
#endif // macintosh
+
+#ifdef _WIN32
+ dn = plGetWinInstallDir();
+ plGetName( dn, "share\\plplot" PLPLOT_VERSION, fn, &fs );
+ free(dn);
+ if ( ( file = pdf_fopen( fs, "rb" ) ) != NULL )
+ goto done;
+ fprintf( stderr, "WININSTALLDIR =\"%s\" ; file=\"%s\"\n", dn, fs ); // what IS set?
+#endif
if ( plplotLibDir != NULL )
{