summaryrefslogtreecommitdiffstats
path: root/source
diff options
context:
space:
mode:
Diffstat (limited to 'source')
-rw-r--r--source/core/slang-test-tool-util.cpp18
-rw-r--r--source/core/slang-test-tool-util.h2
2 files changed, 20 insertions, 0 deletions
diff --git a/source/core/slang-test-tool-util.cpp b/source/core/slang-test-tool-util.cpp
index dad06effe..9a0ebe4f1 100644
--- a/source/core/slang-test-tool-util.cpp
+++ b/source/core/slang-test-tool-util.cpp
@@ -107,6 +107,24 @@ static SlangResult _addCUDAPrelude(const String& rootPath, slang::IGlobalSession
return SLANG_OK;
}
+/* static */SlangResult TestToolUtil::getDllDirectoryPath(const char* exePath, String& outDllDirectoryPath)
+{
+ String canonicalPath;
+ SLANG_RETURN_ON_FAIL(Path::getCanonical(exePath, canonicalPath));
+
+ // Get the directory
+ String binPath = Path::getParentDirectory(canonicalPath);
+
+ // Windows puts the dlls in the same directory as the exe, while on other platforms they are in a 'lib' directory
+#ifdef _WIN32
+ outDllDirectoryPath = binPath;
+#else
+ String binaryRootPath = Path::getParentDirectory(binPath);
+ outDllDirectoryPath = Path::combine(binaryRootPath, "lib");
+#endif
+ return SLANG_OK;
+}
+
/* static */SlangResult TestToolUtil::getRootPath(const char* inExePath, String& outExePath)
{
// Get the directory holding the exe
diff --git a/source/core/slang-test-tool-util.h b/source/core/slang-test-tool-util.h
index 1e56500d2..03f3b768e 100644
--- a/source/core/slang-test-tool-util.h
+++ b/source/core/slang-test-tool-util.h
@@ -66,6 +66,8 @@ struct TestToolUtil
/// Returns true if the StdLib should not be initialized immediately (eg when doing a -load-stdlib).
static bool hasDeferredStdLib(Index numArgs, const char*const* args);
+
+ static SlangResult getDllDirectoryPath(const char* exePath, String& outDllDirectoryPath);
};
} // namespace Slang