[llvm] e281d10 - [unittest] Restructure plugin cmake target
Mircea Trofin via llvm-commits
llvm-commits at lists.llvm.org
Tue Feb 28 08:33:07 PST 2023
Author: ibricchi
Date: 2023-02-28T08:32:58-08:00
New Revision: e281d102fb73bffae32831b759ed07744e82b751
URL: https://github.com/llvm/llvm-project/commit/e281d102fb73bffae32831b759ed07744e82b751
DIFF: https://github.com/llvm/llvm-project/commit/e281d102fb73bffae32831b759ed07744e82b751.diff
LOG: [unittest] Restructure plugin cmake target
Move plugin source and cmake files into separate directory.
Typically cmake targets in LLVM have a single target per directory.
This change brings this unittest more inline with that structure.
Reviewed By: thakis
Differential Revision: https://reviews.llvm.org/D140588
Added:
llvm/unittests/Passes/PassBuilderBindings/CMakeLists.txt
llvm/unittests/Passes/PassBuilderBindings/PassBuilderBindingsTest.cpp
llvm/unittests/Passes/Plugins/CMakeLists.txt
llvm/unittests/Passes/Plugins/DoublerPlugin/CMakeLists.txt
llvm/unittests/Passes/Plugins/DoublerPlugin/DoublerPlugin.cpp
llvm/unittests/Passes/Plugins/PluginsTest.cpp
llvm/unittests/Passes/Plugins/TestPlugin.h
llvm/unittests/Passes/Plugins/TestPlugin/CMakeLists.txt
llvm/unittests/Passes/Plugins/TestPlugin/TestPlugin.cpp
Modified:
llvm/unittests/Passes/CMakeLists.txt
Removed:
llvm/unittests/Passes/DoublerPlugin.cpp
llvm/unittests/Passes/PassBuilderBindingsTest.cpp
llvm/unittests/Passes/PluginsTest.cpp
llvm/unittests/Passes/TestPlugin.cpp
llvm/unittests/Passes/TestPlugin.h
################################################################################
diff --git a/llvm/unittests/Passes/CMakeLists.txt b/llvm/unittests/Passes/CMakeLists.txt
index 54bf67b39c1e7..e96a4e12b94b0 100644
--- a/llvm/unittests/Passes/CMakeLists.txt
+++ b/llvm/unittests/Passes/CMakeLists.txt
@@ -1,43 +1,8 @@
-# Needed by LLVM's CMake checks because this file defines multiple targets.
-set(LLVM_OPTIONAL_SOURCES PluginsTest.cpp TestPlugin.cpp DoublerPlugin.cpp PassBuilderBindingsTest.cpp)
-
-# The plugin expects to not link against the Support and Core libraries,
-# but expects them to exist in the process loading the plugin. This doesn't
-# work with DLLs on Windows (where a shared library can't have undefined
-# references), so just skip this testcase on Windows.
-if (NOT WIN32)
- # On AIX, enable run-time linking to allow symbols from the plugins shared
- # objects to be properly bound.
- if(CMAKE_SYSTEM_NAME STREQUAL "AIX")
- set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-brtl")
- endif()
- set(LLVM_LINK_COMPONENTS Support Passes Core AsmParser)
- add_llvm_unittest(PluginsTests
- PluginsTest.cpp
- )
- export_executable_symbols_for_plugins(PluginsTests)
- target_link_libraries(PluginsTests PRIVATE LLVMTestingSupport)
-
- set(LLVM_LINK_COMPONENTS)
- foreach(PLUGIN TestPlugin DoublerPlugin)
- add_llvm_library(${PLUGIN} MODULE BUILDTREE_ONLY ${PLUGIN}.cpp)
-
- # Put PLUGIN next to the unit test executable.
- set_output_directory(${PLUGIN}
- BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}
- LIBRARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}
- )
- set_target_properties(${PLUGIN} PROPERTIES FOLDER "Tests")
-
- add_dependencies(${PLUGIN} intrinsics_gen)
- add_dependencies(PluginsTests ${PLUGIN})
- endforeach()
-
+# On AIX, enable run-time linking to allow symbols from the plugins shared
+# objects to be properly bound.
+if(CMAKE_SYSTEM_NAME STREQUAL "AIX")
+ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-brtl")
endif()
-set(LLVM_LINK_COMPONENTS Support Passes Core Target native AllTargetsInfos)
-add_llvm_unittest(PassesBindingsTests
- PassBuilderBindingsTest.cpp
- )
-target_link_libraries(PassesBindingsTests PRIVATE LLVMTestingSupport)
-
+add_subdirectory(PassBuilderBindings)
+add_subdirectory(Plugins)
diff --git a/llvm/unittests/Passes/PassBuilderBindings/CMakeLists.txt b/llvm/unittests/Passes/PassBuilderBindings/CMakeLists.txt
new file mode 100644
index 0000000000000..e3b2ecee6313a
--- /dev/null
+++ b/llvm/unittests/Passes/PassBuilderBindings/CMakeLists.txt
@@ -0,0 +1,5 @@
+set(LLVM_LINK_COMPONENTS Support Passes Core Target native AllTargetsInfos)
+add_llvm_unittest(PassesBindingsTests
+PassBuilderBindingsTest.cpp
+)
+target_link_libraries(PassesBindingsTests PRIVATE LLVMTestingSupport)
diff --git a/llvm/unittests/Passes/PassBuilderBindingsTest.cpp b/llvm/unittests/Passes/PassBuilderBindings/PassBuilderBindingsTest.cpp
similarity index 100%
rename from llvm/unittests/Passes/PassBuilderBindingsTest.cpp
rename to llvm/unittests/Passes/PassBuilderBindings/PassBuilderBindingsTest.cpp
diff --git a/llvm/unittests/Passes/Plugins/CMakeLists.txt b/llvm/unittests/Passes/Plugins/CMakeLists.txt
new file mode 100644
index 0000000000000..5094adb2b5dc1
--- /dev/null
+++ b/llvm/unittests/Passes/Plugins/CMakeLists.txt
@@ -0,0 +1,16 @@
+# The plugin expects to not link against the Support and Core libraries,
+# but expects them to exist in the process loading the plugin. This doesn't
+# work with DLLs on Windows (where a shared library can't have undefined
+# references), so just skip this testcase on Windows.
+if (NOT WIN32)
+ set(LLVM_LINK_COMPONENTS Support Passes Core AsmParser)
+ add_llvm_unittest(PluginsTests
+ PluginsTest.cpp
+ )
+ export_executable_symbols_for_plugins(PluginsTests)
+ target_link_libraries(PluginsTests PRIVATE LLVMTestingSupport)
+
+ unset(LLVM_LINK_COMPONENTS)
+ add_subdirectory(TestPlugin)
+ add_subdirectory(DoublerPlugin)
+endif()
diff --git a/llvm/unittests/Passes/Plugins/DoublerPlugin/CMakeLists.txt b/llvm/unittests/Passes/Plugins/DoublerPlugin/CMakeLists.txt
new file mode 100644
index 0000000000000..6a83b890f3730
--- /dev/null
+++ b/llvm/unittests/Passes/Plugins/DoublerPlugin/CMakeLists.txt
@@ -0,0 +1,13 @@
+add_llvm_library(DoublerPlugin MODULE BUILDTREE_ONLY DoublerPlugin.cpp)
+
+# Put PLUGIN next to the unit test executable.
+set_output_directory(DoublerPlugin
+ BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/../
+ LIBRARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/../
+ )
+set_target_properties(DoublerPlugin PROPERTIES FOLDER "Tests")
+
+# The plugin depends on some of the output files of intrinsics_gen, so make sure
+# it is built before the plugin.
+add_dependencies(DoublerPlugin intrinsics_gen)
+add_dependencies(PluginsTests DoublerPlugin)
diff --git a/llvm/unittests/Passes/DoublerPlugin.cpp b/llvm/unittests/Passes/Plugins/DoublerPlugin/DoublerPlugin.cpp
similarity index 100%
rename from llvm/unittests/Passes/DoublerPlugin.cpp
rename to llvm/unittests/Passes/Plugins/DoublerPlugin/DoublerPlugin.cpp
diff --git a/llvm/unittests/Passes/PluginsTest.cpp b/llvm/unittests/Passes/Plugins/PluginsTest.cpp
similarity index 100%
rename from llvm/unittests/Passes/PluginsTest.cpp
rename to llvm/unittests/Passes/Plugins/PluginsTest.cpp
diff --git a/llvm/unittests/Passes/TestPlugin.h b/llvm/unittests/Passes/Plugins/TestPlugin.h
similarity index 100%
rename from llvm/unittests/Passes/TestPlugin.h
rename to llvm/unittests/Passes/Plugins/TestPlugin.h
diff --git a/llvm/unittests/Passes/Plugins/TestPlugin/CMakeLists.txt b/llvm/unittests/Passes/Plugins/TestPlugin/CMakeLists.txt
new file mode 100644
index 0000000000000..bce5e1fe3f838
--- /dev/null
+++ b/llvm/unittests/Passes/Plugins/TestPlugin/CMakeLists.txt
@@ -0,0 +1,13 @@
+add_llvm_library(TestPlugin MODULE BUILDTREE_ONLY TestPlugin.cpp)
+
+# Put PLUGIN next to the unit test executable.
+set_output_directory(TestPlugin
+ BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/../
+ LIBRARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/../
+ )
+set_target_properties(TestPlugin PROPERTIES FOLDER "Tests")
+
+# The plugin depends on some of the output files of intrinsics_gen, so make sure
+# it is built before the plugin.
+add_dependencies(TestPlugin intrinsics_gen)
+add_dependencies(PluginsTests TestPlugin)
diff --git a/llvm/unittests/Passes/TestPlugin.cpp b/llvm/unittests/Passes/Plugins/TestPlugin/TestPlugin.cpp
similarity index 97%
rename from llvm/unittests/Passes/TestPlugin.cpp
rename to llvm/unittests/Passes/Plugins/TestPlugin/TestPlugin.cpp
index edc71aaf3ff07..f9623b700172a 100644
--- a/llvm/unittests/Passes/TestPlugin.cpp
+++ b/llvm/unittests/Passes/Plugins/TestPlugin/TestPlugin.cpp
@@ -9,7 +9,7 @@
#include "llvm/Passes/PassBuilder.h"
#include "llvm/Passes/PassPlugin.h"
-#include "TestPlugin.h"
+#include "../TestPlugin.h"
using namespace llvm;
More information about the llvm-commits
mailing list