[gn build] Port rest of 07af0e2d3e84
authorNico Weber <thakis@chromium.org>
Sun, 18 Dec 2022 12:36:24 +0000 (07:36 -0500)
committerNico Weber <thakis@chromium.org>
Sun, 18 Dec 2022 12:36:54 +0000 (07:36 -0500)
Test now passes, at least on macOS.

llvm/utils/gn/secondary/llvm/unittests/Analysis/BUILD.gn

index 19861fa..a94695e 100644 (file)
@@ -1,5 +1,31 @@
 import("//third-party/unittest/unittest.gni")
 
+# Keyed off LLVM_ENABLE_PLUGINS in the CMake build, which is usually false
+# on Windows and true elsewhere.
+if (host_os != "win") {
+  foreach(plugin, [ "InlineAdvisorPlugin" ]) {
+    loadable_module(plugin) {
+      # Put plugin next to the unit test executable.
+      output_dir = target_out_dir
+
+      sources = [ "$plugin.cpp" ]
+
+      deps = [
+        # TestPlugin doesn't want to link in any LLVM code, it just needs its
+        # headers.
+        "//llvm/include/llvm/IR:public_tablegen",
+      ]
+
+      if (host_os != "mac" && host_os != "win") {
+        # The GN build currently doesn't globally pass -fPIC, but that's
+        # needed for building .so files on ELF.  Just pass it manually
+        # for loadable_modules for now.
+        cflags = [ "-fPIC" ]
+      }
+    }
+  }
+}
+
 unittest("AnalysisTests") {
   deps = [
     "//llvm/lib/Analysis",
@@ -52,4 +78,11 @@ unittest("AnalysisTests") {
     "VectorFunctionABITest.cpp",
     "VectorUtilsTest.cpp",
   ]
+
+  # If plugins are disabled, this test will disable itself at runtime.
+  # Otherwise, reconfiguring with plugins disabled will leave behind a stale
+  # executable.
+  if (host_os != "win") {
+    deps += [ ":InlineAdvisorPlugin" ]
+  }
 }