[llvm] [Flang-RT] Set LD_LIBRARY_PATH for unittests (PR #170840)
Michael Kruse via llvm-commits
llvm-commits at lists.llvm.org
Fri Dec 5 03:31:57 PST 2025
https://github.com/Meinersbur created https://github.com/llvm/llvm-project/pull/170840
In case that the unittests have to link to the dynamic library with `FLANG_RT_ENABLE_SHARED=ON` and the static library unavailable with `FLANG_RT_ENABLE_SHARED=OFF` or the shared library is prefered with `BUILD_SHARED_LIBS=ON`.
Code to set enviornment variables adapted from Clang's unittests. The `lit.formats.ExecutableTest` does not recognize `config.enviornment`, hence using `os.environ.`
>From 17c3d358ed3ab55a64b41fb9365faaa5013fdb27 Mon Sep 17 00:00:00 2001
From: Michael Kruse <llvm-project at meinersbur.de>
Date: Fri, 5 Dec 2025 12:24:27 +0100
Subject: [PATCH] [Flang-RT] Set LD_LIBRARY_PATH for unittests
---
flang-rt/test/NonGtestUnit/lit.cfg.py | 21 +++++++++++++++++++
flang-rt/test/NonGtestUnit/lit.site.cfg.py.in | 1 +
flang-rt/test/Unit/lit.cfg.py | 21 +++++++++++++++++++
flang-rt/test/Unit/lit.site.cfg.py.in | 1 +
4 files changed, 44 insertions(+)
diff --git a/flang-rt/test/NonGtestUnit/lit.cfg.py b/flang-rt/test/NonGtestUnit/lit.cfg.py
index 8da36adc74a22..048a0662bb875 100644
--- a/flang-rt/test/NonGtestUnit/lit.cfg.py
+++ b/flang-rt/test/NonGtestUnit/lit.cfg.py
@@ -1,6 +1,7 @@
# -*- Python -*-
import os
+import platform
import lit.formats
@@ -19,3 +20,23 @@
# testFormat: The test format to use to interpret tests.
config.test_format = lit.formats.ExecutableTest()
+
+
+def find_shlibpath_var():
+ if platform.system() in ["Linux", "FreeBSD", "NetBSD", "OpenBSD", "SunOS"]:
+ yield "LD_LIBRARY_PATH"
+ elif platform.system() == "Darwin":
+ yield "DYLD_LIBRARY_PATH"
+ elif platform.system() == "Windows" or sys.platform == "cygwin":
+ yield "PATH"
+ elif platform.system() == "AIX":
+ yield "LIBPATH"
+
+
+for shlibpath_var in find_shlibpath_var():
+ config.environment[shlibpath_var] = os.path.pathsep.join(
+ (
+ config.flang_rt_output_resource_lib_dir,
+ config.environment.get(shlibpath_var, ""),
+ )
+ )
diff --git a/flang-rt/test/NonGtestUnit/lit.site.cfg.py.in b/flang-rt/test/NonGtestUnit/lit.site.cfg.py.in
index 8244b5b62d3aa..76084e4018afe 100644
--- a/flang-rt/test/NonGtestUnit/lit.site.cfg.py.in
+++ b/flang-rt/test/NonGtestUnit/lit.site.cfg.py.in
@@ -6,6 +6,7 @@ config.llvm_tools_dir = "@LLVM_TOOLS_DIR@"
config.flang_rt_source_dir = "@FLANG_RT_SOURCE_DIR@"
config.flangrt_binary_dir = "@FLANG_RT_BINARY_DIR@"
config.flang_rt_binary_test_dir = os.path.dirname(__file__)
+config.flang_rt_output_resource_lib_dir = "@FLANG_RT_OUTPUT_RESOURCE_LIB_DIR@"
import lit.llvm
lit.llvm.initialize(lit_config, config)
diff --git a/flang-rt/test/Unit/lit.cfg.py b/flang-rt/test/Unit/lit.cfg.py
index 516bc653f413f..4a16eddd33840 100644
--- a/flang-rt/test/Unit/lit.cfg.py
+++ b/flang-rt/test/Unit/lit.cfg.py
@@ -1,6 +1,7 @@
# -*- Python -*-
import os
+import platform
import lit.formats
@@ -19,3 +20,23 @@
# testFormat: The test format to use to interpret tests.
config.test_format = lit.formats.GoogleTest(config.llvm_build_mode, "Tests")
+
+
+def find_shlibpath_var():
+ if platform.system() in ["Linux", "FreeBSD", "NetBSD", "OpenBSD", "SunOS"]:
+ yield "LD_LIBRARY_PATH"
+ elif platform.system() == "Darwin":
+ yield "DYLD_LIBRARY_PATH"
+ elif platform.system() == "Windows" or sys.platform == "cygwin":
+ yield "PATH"
+ elif platform.system() == "AIX":
+ yield "LIBPATH"
+
+
+for shlibpath_var in find_shlibpath_var():
+ config.environment[shlibpath_var] = os.path.pathsep.join(
+ (
+ config.flang_rt_output_resource_lib_dir,
+ config.environment.get(shlibpath_var, ""),
+ )
+ )
diff --git a/flang-rt/test/Unit/lit.site.cfg.py.in b/flang-rt/test/Unit/lit.site.cfg.py.in
index ed6dea07bcdde..5038892068383 100644
--- a/flang-rt/test/Unit/lit.site.cfg.py.in
+++ b/flang-rt/test/Unit/lit.site.cfg.py.in
@@ -7,6 +7,7 @@ config.llvm_build_mode = "@LLVM_BUILD_MODE@"
config.flang_rt_source_dir = "@FLANG_RT_SOURCE_DIR@"
config.flangrt_binary_dir = "@FLANG_RT_BINARY_DIR@"
config.flang_rt_binary_test_dir = os.path.dirname(__file__)
+config.flang_rt_output_resource_lib_dir = "@FLANG_RT_OUTPUT_RESOURCE_LIB_DIR@"
import lit.llvm
lit.llvm.initialize(lit_config, config)
More information about the llvm-commits
mailing list