summaryrefslogtreecommitdiffstats
path: root/Tests/Plugin/include
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2019-09-19 14:10:52 (GMT)
committerBrad King <brad.king@kitware.com>2019-09-19 14:42:51 (GMT)
commitc578caa68bf7ee55077a3efa25aba46e9e1f562a (patch)
tree7609ec94c8bb5e13e018b3d8fc08b3e362afea5b /Tests/Plugin/include
parent56879273dc87a69e1d1491a73e0f74cd4424494c (diff)
downloadCMake-c578caa68bf7ee55077a3efa25aba46e9e1f562a.zip
CMake-c578caa68bf7ee55077a3efa25aba46e9e1f562a.tar.gz
CMake-c578caa68bf7ee55077a3efa25aba46e9e1f562a.tar.bz2
Tests: Decouple Plugin test from KWSys
KWSys now requires C++11 but we want this test to be able to run as C++98. Copy the KWSys DynamicLoader implementation (with original notice headers and license reference) and update it to work alone.
Diffstat (limited to 'Tests/Plugin/include')
-rw-r--r--Tests/Plugin/include/DynamicLoader.hxx49
1 files changed, 49 insertions, 0 deletions
diff --git a/Tests/Plugin/include/DynamicLoader.hxx b/Tests/Plugin/include/DynamicLoader.hxx
new file mode 100644
index 0000000..20b37de
--- /dev/null
+++ b/Tests/Plugin/include/DynamicLoader.hxx
@@ -0,0 +1,49 @@
+/* Distributed under the OSI-approved BSD 3-Clause License.
+ See https://cmake.org/licensing#kwsys for details. */
+#ifndef DynamicLoader_hxx
+#define DynamicLoader_hxx
+
+#include <string>
+
+#if defined(__hpux)
+# include <dl.h>
+#elif defined(_WIN32) && !defined(__CYGWIN__)
+# include <windows.h>
+#elif defined(__APPLE__)
+# include <AvailabilityMacros.h>
+# if MAC_OS_X_VERSION_MAX_ALLOWED < 1030
+# include <mach-o/dyld.h>
+# endif
+#elif defined(__BEOS__)
+# include <be/kernel/image.h>
+#endif
+
+class DynamicLoader
+{
+public:
+#if defined(__hpux)
+ typedef shl_t LibraryHandle;
+#elif defined(_WIN32) && !defined(__CYGWIN__)
+ typedef HMODULE LibraryHandle;
+#elif defined(__APPLE__)
+# if MAC_OS_X_VERSION_MAX_ALLOWED < 1030
+ typedef NSModule LibraryHandle;
+# else
+ typedef void* LibraryHandle;
+# endif
+#elif defined(__BEOS__)
+ typedef image_id LibraryHandle;
+#else // POSIX
+ typedef void* LibraryHandle;
+#endif
+
+ typedef void (*SymbolPointer)();
+
+ static LibraryHandle OpenLibrary(const std::string&);
+
+ static int CloseLibrary(LibraryHandle);
+
+ static SymbolPointer GetSymbolAddress(LibraryHandle, const std::string&);
+};
+
+#endif