
This patch adds the -fpass-plugin option to flang which dynamically loads LLVM passes from the shared object passed as the argument to the flag. The behavior of the option is designed to replicate that of the same option in clang and thus has the same capabilities and limitations. Features: Multiple instances of -fpass-plugin=path-to-file can be specified and each of the files will be loaded in that order. The flag can be passed to both flang-new and flang-new -fc1. The flag will be listed when the -help flag is passed to both flang-new and flang-new -fc1. It will also be listed when the --help-hidden flag is passed. Limitations: Dynamically loaded plugins are not supported in clang on Windows and are not supported in flang either. Addenda: Some minor stylistic changes are made in the files that were modified to enable this functionality. Those changes make the naming of functions more consistent, but do not change any functionality that is not directly related to enabling -fpass-plugin. Differential Revision: https://reviews.llvm.org/D129156
102 lines
2.4 KiB
CMake
102 lines
2.4 KiB
CMake
# Test runner infrastructure for Flang. This configures the Flang test trees
|
|
# for use by Lit, and delegates to LLVM's lit test handlers.
|
|
add_subdirectory(lib)
|
|
|
|
llvm_canonicalize_cmake_booleans(
|
|
FLANG_BUILD_EXAMPLES
|
|
FLANG_STANDALONE_BUILD
|
|
LLVM_ENABLE_PLUGINS
|
|
)
|
|
|
|
set(FLANG_TOOLS_DIR ${FLANG_BINARY_DIR}/bin)
|
|
|
|
# FIXME In out-of-tree builds, "SHLIBDIR" is undefined and passing it to
|
|
# `configure_lit_site_cfg` leads to a configuration error. This is currently
|
|
# only required by plugins/examples, which are not supported in out-of-tree
|
|
# builds.
|
|
if (FLANG_STANDALONE_BUILD)
|
|
set(PATHS_FOR_PLUGINS "")
|
|
else ()
|
|
set(PATHS_FOR_PLUGINS "SHLIBDIR")
|
|
endif ()
|
|
|
|
configure_lit_site_cfg(
|
|
${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.py.in
|
|
${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg.py
|
|
MAIN_CONFIG
|
|
${CMAKE_CURRENT_SOURCE_DIR}/lit.cfg.py
|
|
PATHS
|
|
${PATHS_FOR_PLUGINS}
|
|
)
|
|
|
|
configure_lit_site_cfg(
|
|
${CMAKE_CURRENT_SOURCE_DIR}/Unit/lit.site.cfg.py.in
|
|
${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg.py
|
|
MAIN_CONFIG
|
|
${CMAKE_CURRENT_SOURCE_DIR}/Unit/lit.cfg.py
|
|
)
|
|
|
|
configure_lit_site_cfg(
|
|
${CMAKE_CURRENT_SOURCE_DIR}/NonGtestUnit/lit.site.cfg.py.in
|
|
${CMAKE_CURRENT_BINARY_DIR}/NonGtestUnit/lit.site.cfg.py
|
|
MAIN_CONFIG
|
|
${CMAKE_CURRENT_SOURCE_DIR}/NonGtestUnit/lit.cfg.py
|
|
)
|
|
|
|
set(FLANG_TEST_PARAMS
|
|
flang_site_config=${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg.py)
|
|
|
|
set(FLANG_TEST_DEPENDS
|
|
flang-new
|
|
llvm-config
|
|
FileCheck
|
|
count
|
|
not
|
|
module_files
|
|
fir-opt
|
|
tco
|
|
bbc
|
|
llvm-dis
|
|
llvm-objdump
|
|
split-file
|
|
FortranRuntime
|
|
Fortran_main
|
|
FortranDecimal
|
|
)
|
|
if (LLVM_ENABLE_PLUGINS AND NOT WIN32)
|
|
list(APPEND FLANG_TEST_DEPENDS Bye)
|
|
endif()
|
|
|
|
if (FLANG_INCLUDE_TESTS)
|
|
if (FLANG_GTEST_AVAIL)
|
|
list(APPEND FLANG_TEST_DEPENDS FlangUnitTests)
|
|
endif()
|
|
endif()
|
|
|
|
if (FLANG_BUILD_EXAMPLES)
|
|
list(APPEND FLANG_TEST_DEPENDS
|
|
flangPrintFunctionNames
|
|
flangOmpReport
|
|
)
|
|
endif ()
|
|
|
|
add_custom_target(flang-test-depends DEPENDS ${FLANG_TEST_DEPENDS})
|
|
|
|
add_lit_testsuite(check-flang "Running the Flang regression tests"
|
|
${CMAKE_CURRENT_BINARY_DIR}
|
|
PARAMS ${FLANG_TEST_PARAMS}
|
|
DEPENDS ${FLANG_TEST_DEPENDS}
|
|
)
|
|
set_target_properties(check-flang PROPERTIES FOLDER "Tests")
|
|
|
|
# In case of standalone builds.
|
|
if (FLANG_STANDALONE_BUILD)
|
|
add_lit_testsuites(FLANG ${CMAKE_CURRENT_BINARY_DIR}
|
|
PARAMS ${FLANG_TEST_PARAMS}
|
|
DEPENDS ${FLANG_TEST_DEPENDS})
|
|
else()
|
|
add_lit_testsuites(FLANG ${CMAKE_CURRENT_SOURCE_DIR}
|
|
PARAMS ${FLANG_TEST_PARAMS}
|
|
DEPENDS ${FLANG_TEST_DEPENDS})
|
|
endif()
|