[Openmp-commits] [openmp] [OpenMP] Add libomp unit test infrastructure (PR #168063)

Michael Kruse via Openmp-commits openmp-commits at lists.llvm.org
Tue Dec 2 14:29:51 PST 2025


================
@@ -200,6 +211,31 @@ if(${LIBOMP_USE_HWLOC})
   )
 endif()
 
+# Build a testing version of libomp that exports all symbols for unit tests.
+# This library uses the same compiled objects as libomp, but with all symbols
+# exported to allow testing internal functions.
+if(NOT WIN32 AND NOT STUBS_LIBRARY)
+  set(LIBOMP_TEST_LDFLAGS ${LIBOMP_CONFIGURED_LDFLAGS})
+  # Replace the libomp exports with the test exports exporting all symbols.
+  if(LIBOMP_HAVE_VERSION_SCRIPT_FLAG)
+    string(REPLACE "${LIBOMP_SRC_DIR}/exports_so.txt"
+                   "${LIBOMP_SRC_DIR}/exports_test_so.txt"
+                   LIBOMP_TEST_LDFLAGS "${LIBOMP_TEST_LDFLAGS}")
----------------
Meinersbur wrote:

Instead of string-replacing which feels very hacky, could we make a parameterized version of libomp_get_libflags? E.g.
```cmake
libomp_get_libflags(LIBOMP_TEST_LDFLAGS FOR_UNITTESTS)
```
Where `FOR_UNITTESTS` is a `cmake_parse_arguments` option in `libomp_get_libflags`.

I think we don't need `exports_test_so.txt` at all; just do not use the `--version-script` switch and all symbols are visible to the unittests (assuming defaut `-fvisibility=default`).

https://github.com/llvm/llvm-project/pull/168063


More information about the Openmp-commits mailing list