[Openmp-commits] [openmp] Reland: [OpenMP] Add ompTest library to OpenMP (PR #154786)

Nikita Popov via Openmp-commits openmp-commits at lists.llvm.org
Mon Aug 25 01:28:34 PDT 2025


================
@@ -0,0 +1,154 @@
+##===----------------------------------------------------------------------===##
+#
+# Build OMPT unit testing library: ompTest
+#
+##===----------------------------------------------------------------------===##
+
+cmake_minimum_required(VERSION 3.20)
+project(omptest LANGUAGES CXX)
+
+option(LIBOMPTEST_BUILD_STANDALONE
+       "Build ompTest 'standalone', i.e. w/o GoogleTest."
+       ${OPENMP_STANDALONE_BUILD})
+option(LIBOMPTEST_BUILD_UNITTESTS
+       "Build ompTest's unit tests, requires GoogleTest." OFF)
+
+# In absence of corresponding OMPT support: exit early
+if(NOT ${LIBOMP_OMPT_SUPPORT})
+  return()
+endif()
+
+include(CMakePackageConfigHelpers)
+
+set(OMPTEST_HEADERS
+  ./include/AssertMacros.h
+  ./include/InternalEvent.h
+  ./include/InternalEventCommon.h
+  ./include/Logging.h
+  ./include/OmptAliases.h
+  ./include/OmptAsserter.h
+  ./include/OmptAssertEvent.h
+  ./include/OmptCallbackHandler.h
+  ./include/OmptTester.h
+  ./include/OmptTesterGlobals.h
+)
+
+add_library(omptest
+  SHARED
+
+  ${OMPTEST_HEADERS}
+  ./src/InternalEvent.cpp
+  ./src/InternalEventOperators.cpp
+  ./src/Logging.cpp
+  ./src/OmptAsserter.cpp
+  ./src/OmptAssertEvent.cpp
+  ./src/OmptCallbackHandler.cpp
+  ./src/OmptTester.cpp
+)
+
+# Target: ompTest library
+# On (implicit) request of GoogleTest, link against the one provided with LLVM.
+if ((NOT LIBOMPTEST_BUILD_STANDALONE) OR LIBOMPTEST_BUILD_UNITTESTS)
+  # Check if standalone build was requested together with unittests
+  if (LIBOMPTEST_BUILD_STANDALONE)
+    # Emit warning: this build actually depends on LLVM's GoogleTest
+    message(WARNING "LIBOMPTEST_BUILD_STANDALONE and LIBOMPTEST_BUILD_UNITTESTS"
+                    " requested simultaneously.\n"
+                    "Linking against LLVM's GoogleTest library archives.\n"
+                    "Disable LIBOMPTEST_BUILD_UNITTESTS to perform an actual"
+                    " standalone build.")
+    # Explicitly disable LIBOMPTEST_BUILD_STANDALONE
+    set(LIBOMPTEST_BUILD_STANDALONE OFF)
+  endif()
+
+  # Make sure target llvm_gtest is available
+  if (NOT TARGET llvm_gtest)
+    message(FATAL_ERROR "Required target not found: llvm_gtest")
+  endif()
+
+  # Add llvm_gtest as dependency
+  add_dependencies(omptest llvm_gtest)
+
+  # Link llvm_gtest as whole-archive to expose required symbols
+  set(GTEST_LINK_CMD "-Wl,--whole-archive" llvm_gtest
+                     "-Wl,--no-whole-archive" LLVMSupport)
----------------
nikic wrote:

Do you really need this now that you're using the llvm_gtest target? None of the other places that use llvm_gtest require this. Why does this one?

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


More information about the Openmp-commits mailing list